/*系统特色:(大牛勿笑)
  *颜色提示
  *文字提示
  *功能
*/ #include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <windows.h>
#include <conio.h> FILE *fp;//定义文件指针 int count;//这个count在这个系统中起到了莫大的作用,比较参参数,规定参数范围等 struct add
{
int SID;
char Name[];
int Age;
char Gender[];
double EntranxeScore;
}add1[], student, *pointer;//定义结构体,最大不得超过750.但我对下面的动态分配还是不清楚
//add1 = (char*)malloc(sizeof(struct add)*100);
void color(const unsigned short color1)
{
if (color1 >= && color1 <= )
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);
else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), );
}//定义一个表示颜色(0~15),当然我们也可以直接用system那种形式 void printinfor();//菜单函数 void wuyu_1();//按学号排序函数
void wuyu_2();//按总成绩排序函数 void function_1();//添加学生信息函数
void function_2();//删除学生信息函数
void function_3();//更改学生信息函数
void function_4();//查询学生信息函数
void function_5();//显示所有学生信息函数
void function_6();//附加功能选项函数 void findfunction_1();//通过学号查询函数
void findfunction_2();//通过学生姓名查询函数
void findfunction_3();//通过学生年龄查询函数
void findfunction_4();//通过学生分数查询函数 int main(void)
{
int num_1, k;
fp = fopen("D:\\studyinfor.txt", "rb+");//打开文本/创建,进行操作
fread(add1, sizeof(struct add), , fp);//读取文本储存信息
for (k = ; k<; k++)//判断文本中储存人数(Age==0表示此处无数据)
{
if (add1[k].Age == )
{
break;
}
count++;
}
fclose(fp);//关闭指针
printinfor();//显示菜单
while ()//使用者操作
{
do
{
printf("请输入要进行操作的序列号:");
scanf("%d", &num_1);
} while (num_1< || num_1>);
if (num_1 == )break; switch (num_1)
{
case :function_1(); break;
case :function_2(); break;
case :function_3(); break;
case :function_4(); break;
case :function_5(); break;
case :function_6(); break;
}
system("cls");
printinfor();
}
return ;
} void checkSID(int j)//检查学号大小函数
{
while (add1[j].SID <= || add1[j].SID>)
{
color();
printf("warning:SID的取值范围在0~750,请重新输入.\n");
color();
printf("请输入学生的学号:");
scanf("%d", &add1[j].SID);
if (add1[j].SID > && add1[j].SID <= )
{
break;//符合要求就结束循环
}
}
} void checkSID_1(int m)//检查学号是否重复函数
{
int k;
for (k = ; k < count; k++)
{
while (add1[k].SID == m)
{
color();
printf("学号重复,请重新输入.\n");//这里不知道为什么不能检查第一个是否与输入的重复
color();
printf("请输入学号:");
scanf("%d", &m);
}
}
}
//因为选择输入的方式是ab+,从新从i=0开始输入进去,所以想要通过
void checkName(int m, char Name[])//检查姓名函数
{
while (strlen(Name)>)
{
color();
printf("warning:Name的字数最多为5,请重新输入.\n");
color();
printf("请输入学生的姓名:");
scanf("%s", &add1[m].Name);
}
} void checkAge(int m)//检查年龄函数
{
while (add1[m].Age< || add1[m].Age>)
{
color();
printf("warning:Age的取值范围在0~122,请重新输入,严肃对待!\n");
color();
printf("请输入学生的年龄:");
scanf("%d", &add1[m].Age);
}
} void checkGender(int i, char a[])//检查性别函数
{
while (strcmp(a, "男") && strcmp(a, "女"))
{
color();
printf("warning:Gender只能是男或女,请重新输入.\n");
color();
printf("请输入学生的性别:");
scanf("%s", &add1[i].Gender);
}
} checkEntranxeScore(int k)
{
while (add1[k].EntranxeScore< || add1[k].EntranxeScore>)
{
color();
printf("warning:EntranxeScore的取值范围在0~750,请重新输入.\n");
color();
printf("请输入学生的分数:");
scanf("%lf", &add1[k].EntranxeScore);
}
} void getName(char name[]) {
while () {
printf("请输入学生的姓名:");
fflush(stdin);//刷新内存,现在对为什么要刷新内存还是迷迷糊糊的
scanf("%s", name);
if (strlen(name)<) {
break;
}
}
}//刷新内存的方式还有很多种,大家可以在网上搜一下 void printinfor()//主菜单
{
system("date /t");
system("TIME /t\n");//显示当前时间,也可以用预定义宏printf("Time : %s\n", __TIME__);
printf(" **************欢迎使用学生信息管理系统(当前有%d人)********\n", count);
printf(" *\t\t(1)添加学生信息\t\t\t\t*\n");
printf(" *\t\t(2)删除学生信息\t\t\t\t*\n");
printf(" *\t\t(3)更改学生信息\t\t\t\t*\n");
printf(" *\t\t(4)查询学生信息\t\t\t\t*\n");
printf(" *\t\t(5)显示所有学生信息\t\t\t*\n");
printf(" *\t\t(6)附加功能选项\t\t\t\t*\n");
printf(" *\t\t(0)退出学生系统\t\t\t\t*\n");
printf(" *\t\t\t\t\t 作者:liu\t*\n");
printf(" *********************************************************\n");
} void findfunction()
{
system("cls");
system("date /t");
system("TIME /t\n");
printf(" ***************查询学生信息(当前有%d人)*****************\n", count);
printf(" *\t\t(1)通过学生学号查询 \t\t\t*\n");
printf("\n");
printf(" *\t\t(2)通过学生姓名查询 \t\t\t*\n");
printf("\n");
printf(" *\t\t(3)通过学生年龄查询 \t\t\t*\n");
printf("\n");
printf(" *\t\t(4)通过学生分数查询 \t\t\t*\n");
printf(" *********************************************************\n");
} void Morefunction()
{
system("cls");
printf(" *******************附加功能*****************\n");
printf("\t\t\t*\t\t\t\t\t *\n");
printf(" *\t\t(1)按学号进行整理 \t *\n");
printf("\t\t\t*\t\t\t\t\t *\n");
printf(" *\t\t(2)按总分进行整理 \t *\n");
printf("\t\t\t*\t\t\t\t\t *\n");
color();
printf("\t\t\t*待开发... ... *\n");
color();
printf("\t\t\t********************************************\n");
} void inputmomo(int i)
{
printf("请输入学生的学号:");
scanf("%d", &add1[i].SID);
checkSID(i);
checkSID_1(add1[i].SID);
color();
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
color();
printf("请输入学生的名字:");
scanf("%s", &add1[i].Name);
checkName(i, add1[i].Name);
color();
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
color();
printf("请输入学生的年龄:");
scanf("%d", &add1[i].Age);
checkAge(i);
color();
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
color();
printf("请输入学生的性别:");
scanf("%s", &add1[i].Gender);
checkGender(i, add1[i].Gender);
color();
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
color();
printf("请输入学生的总成绩:");
scanf("%lf", &add1[i].EntranxeScore);
checkEntranxeScore(i);
color();
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
color();
} void function_1()//添加学生信息函数
{
int n, i, m = count;
if ((fp = fopen("D:\\studyinfor.txt", "ab+")) == NULL)//检测文本是否正常打开
{
color();
printf("Can't open the file!");
color();
system("pause");
exit();
}
printf("请输入您要添加的学生信息人数:");
scanf("%d", &n); for (i = count; i<n + m; i++)
{
printf("请输入No.%d的信息.\n", i + );
inputmomo(i - m);//录入学生信息
count++;
}
fwrite(add1, sizeof(struct add), n, fp);
rewind(fp);
color();
printf("添加中");
Sleep();
printf(".");
Sleep();
printf(".");
Sleep();
printf(". ");
Sleep();
printf(".");
Sleep();
printf(".");
Sleep();
printf(".\n");
color();
printf("添加成功!\n");
printf("学生信息目录已更新.\n");
fread(add1, sizeof(struct add), count, fp);//读取学生信息
color();
printf("___________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
for (i = ; i<count; i++)//打印更新的学生信息
{
if (add1[i].SID>)
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
}
printf("|-------------------------------------------------|\n");
fclose(fp);
printf("按任意键返回主菜单... ....\n");
system("pause");
} void function_2()//删除学生信息
{
int m, k, i, j = ;
if ((fp = fopen("D:\\studyinfor.txt", "wb+")) == NULL)
{
printf("Can't open the file!\n");
system("pause");
exit();
}
if (count == )
{
color();
printf("The file is NULL!!!\n");
color();
return;
}
printf("请输入你要删除的学生的学号:");
scanf("%d", &m);
fread(add1, sizeof(struct add), count, fp);
for (k = ; k<count; k++)
{
if (add1[k].SID == m)
{
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
printf(" %.2d %-6s %-3d %-3s \t%5.2lf \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
printf("|---------------------------------------------------|\n");
for (i = k; i<count - ; i++)//将要删除的数后面的函数往前进一格,占去要删除的部分
{
add1[i].SID = add1[i + ].SID;
strcpy(add1[i].Name, add1[i + ].Name);
add1[i].Age = add1[i + ].Age;
strcpy(add1[i].Gender, add1[i + ].Gender);
add1[i].EntranxeScore = add1[i + ].EntranxeScore;
}
count--;
fwrite(add1, sizeof(struct add), count, fp);
rewind(fp);//使指针回到开头
fclose(fp);
color();
printf("删除中");
Sleep();
printf(".");
Sleep();
printf(".");
Sleep();
printf(". ");
Sleep();
printf(".");
Sleep();
printf(".");
Sleep();
printf(".\n");
Sleep();
color();
printf("删除成功!按任意键继续... ...\n");
color();
j++;
}
}
if (j == )
{
color();
printf("查无此人!\n");
color();
}
system("pause");
} void function_3()//更改学生信息
{
int m, k, j = ;
if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
{
printf("Can't open the file!\n");
getch();
exit();
}
if (count == )
{
color();
printf("The file is NULL!!!\n");
color();
return;
}
printf("请输入你要更改的学生的学号:");
scanf("%d", &m);
fread(add1, sizeof(struct add), count, fp);
for (k = ; k<count; k++)
{
if (add1[k].SID == m)
{
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
printf("|---------------------------------------------------|\n");
printf("请输入你要修改的内容:\n");
inputmomo(k);
rewind(fp);
fwrite(add1, sizeof(struct add), count, fp);
//rewind(fp);
fclose(fp);
color();
printf("更改成功!按任意键继续... ...\n");
color();
j++;
}
}
if (j == )
{
color();
printf("查无此人!\n");
color();
}
system("pause");
} void function_4()//查询学生信息
{
int m;
findfunction();//进入查询菜单
printf("请输入你查询的方式序列号:");
scanf("%d", &m);
switch (m)
{
case :findfunction_1(); break;
case :findfunction_2(); break;
case :findfunction_3(); break;
case :findfunction_4(); break;
}
} void function_5()//显示所有学生信息
{
int i;
if ((fp = fopen("D:\\studyinfor.txt", "rb")) == NULL)
{
printf("Can't open the file!\n");
getch();
exit();
}
fread(add1, sizeof(struct add), count, fp);
if (count == )
{
color();
printf("The file is NULL!\n");
color();
system("pause");
return;
}
else {
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
for (i = ; i<count; i++)
{
if (add1[i].SID != )
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
}
printf("|---------------------------------------------------|\n");
}
fclose(fp);
printf("按任意键返回主菜单... ...\n");
system("pause");
} void function_6()//附加功能选项
{
Morefunction();//附加功能
int k;
do {
printf("请输入你要操作的序号:");
scanf("%d", &k);
switch (k)
{
case :wuyu_1(); break;
case :wuyu_2(); break;
default:
{
color();
printf("输入有误,请重新输入!\n");
color();
}
}
} while (k < || k>);
} void findfunction_1()//学生学号查询
{
int m, n, i, j = ;
printf("请输入你要搜索的学生学号范围:\n");
printf("最小值:");
scanf("%d", &m);
printf("最大值:");
scanf("%d", &n);
fp = fopen("D:\\studyinfor.txt", "rb+");
fread(add1, sizeof(struct add), count, fp);
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
for (i = ; i<count; i++)
{
if (add1[i].SID >= m && add1[i].SID <= n)
{
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
printf("|---------------------------------------------------|\n");
j++;
}
}
if (j == )
{
printf("无相关学生信息.\n");
}
printf("按任意键返回主菜单... ...\n");
system("pause");
} void findfunction_2()//学生姓名查询
{
int i, n = ;
char name[];
getName(name);//输入学生姓名
rewind(fp);
fp = fopen("D:\\studyinfor.txt", "rb+");
fread(add1, sizeof(struct add), count, fp);
for (i = ; i<count; i++)
{
if (strcmp(add1[i].Name, name) == ) {
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
printf("|---------------------------------------------------|\n");
++n;
break;
}
}
if (n == )
{
color();
printf("无相关学生信息!\n");
color();
}
printf("按任意键返回主菜单... ...\n");
system("pause");
} void findfunction_3()//学生年龄查询
{
int m, n, i, j = ;
printf("请输入你要查询的学生年龄范围:\n");
printf("最小值:");
scanf("%d", &m);
printf("最大值:");
scanf("%d", &n);
fp = fopen("D:\\studyinfor.txt", "rb+");
fread(add1, sizeof(struct add), count, fp);
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
for (i = ; i<count; i++)
{
if (add1[i].Age >= m && add1[i].Age <= n)
{
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i - ].SID, add1[i - ].Name, add1[i - ].Age, add1[i - ].Gender, add1[i - ].EntranxeScore);
printf("|---------------------------------------------------|\n");
j++;
}
}
if (j == )
{
printf("无相关学生信息!\n");
}
printf("按任意键返回主菜单... ...\n");
system("pause");
} void findfunction_4()//学生分数查询
{
int m, n, i, j = ;
printf("请输入你要查询的学生总成绩范围:\n");
printf("最小值:");
scanf("%d", &m);
printf("最大值:");
scanf("%d", &n);
fp = fopen("D:\\studyinfor.txt", "rb+");
fread(add1, sizeof(struct add), count, fp);
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
for (i = ; i<count; i++)
{
if (add1[i].EntranxeScore >= m && add1[i].EntranxeScore <= n)
{
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
printf("|---------------------------------------------------|\n");
j++;
}
}
if (j == )
{
printf("无相关学生信息!\n");
}
printf("按任意键返回主菜单... ...\n");
system("pause");
} void ExchangeFunction(int m, int n)//交换数据结构中两个统一结构的不同下标的结构值
{
double max = ;
int max_1 = ;
max = add1[m].EntranxeScore;
add1[m].EntranxeScore = add1[n].EntranxeScore;
add1[n].EntranxeScore = max;
max_1 = add1[m].Age;
add1[m].Age = add1[n].Age;
add1[n].Age = max_1;
max_1 = add1[m].SID;
add1[m].SID = add1[n].SID;
add1[n].SID = max_1;
strcpy(student.Gender, add1[m].Gender);
strcpy(add1[m].Gender, add1[n].Gender);
strcpy(add1[n].Gender, student.Gender);
strcpy(student.Name, add1[m].Name);
strcpy(add1[m].Name, add1[n].Name);
strcpy(add1[n].Name, student.Name);
} void wuyu_1()//按学号查询
{
if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
{
printf("Can't open the file!\n");
system("PAUSE");
exit();
}
int m, n, j;
for (m = ; m < count - ; m++)//比较学号大小
{
for (n = m + ; n < count; n++)
{
if (add1[n].SID < add1[m].SID)
{
ExchangeFunction(m, n);//交换一个结构体整体值
}
}
}
color();
printf("排序中");
Sleep();
printf("(");
Sleep();
printf(";");
Sleep();
printf("—");
Sleep();
printf("_");
Sleep();
printf("—");
Sleep();
printf(")\n");
Sleep();
color();
printf("排序成功!按任意键继续... ...\n");
color();
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
for (j = ; j<count; j++)
{
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
printf("|---------------------------------------------------|\n");
}
rewind(fp);
//fread(add1,sizeof(struct add),count,fp);
fwrite(add1, sizeof(struct add), count, fp);
fclose(fp);
system("pause");
} void wuyu_2()//按总分排序
{
if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
{
printf("Can't open the file!\n");
getch();
exit();
}
int m, n, j;
for (m = ; m < count - ; m++)//比较总分大小
{
for (n = m + ; n < count; n++)
{
if (add1[n].EntranxeScore > add1[m].EntranxeScore)
{
ExchangeFunction(m, n);//交换两个结构体整体值
}
}
}
color();
printf("排序中");
Sleep();
printf("(");
Sleep();
printf("*");
Sleep();
printf("— ");
Sleep();
printf("з");
Sleep();
printf("—");
Sleep();
printf(")\n");
Sleep();
color();
printf("排序成功!按任意键继续... ...\n");
color();
printf("_____________________________________________________\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
for (j = ; j<count; j++)
{
printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
printf("|---------------------------------------------------|\n");
}
rewind(fp);
//fread(add1,sizeof(struct add),count,fp);加了这句,无法储存,难道会改变内部指针位置?
fwrite(add1, sizeof(struct add), count, fp);
fclose(fp);
system("pause");
}

C语言学生管理系统(原版本)(自编)的更多相关文章

  1. C语言学生管理系统

    想练习一下链表,所以就有了这个用C写的学生管理系统 没有把它写入文件,才不是因为我懒哈哈哈,主要是为了练习链表的 #include<stdio.h> #include<stdlib. ...

  2. C语言学生管理系统完善版

    #include<stdio.h>#include<string.h>#include <stdlib.h>#define M 100struct score    ...

  3. C语言学生管理系统(增进版)

    在原版上进行改进,主要改进的功能有. 1.利用atof:将字符串转换为浮点型: 利用atoi:将字符串转换为整型: 原文地址:http://www.cnblogs.com/sddai/p/577412 ...

  4. C语言学生管理系统源码分享

    大家好 我就是如假包换的...陈玲 自从运营了C语言程序设计微信公众号 很多粉丝都给我备注 ...奇葩 实在是不敢当 也被人开始叫玲玲姐 我知道 很多人都想看我出境 我本人也有 年多的舞台演讲训练 实 ...

  5. C语言学生管理系统(C语言课程设计/精简版)

    #include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>typed ...

  6. 模拟斗地主和学生管理系统 IO 版

    1.模拟斗地主 public class PlayCards { public static void main(String[] args) { String[] color = {"黑桃 ...

  7. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  8. #006 C语言大作业学生管理系统第三天

    还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...

  9. c语言之学生管理系统

    0x00 学生管理系统 说到学生管理系统,对于每一个初学c语言的人都是一道不得不过的砍.不过,学习c,我觉得每个人都应该写一个学生管理系统,至于为什么,我想倘若连一个学生管理系统都写不好,哪么他的c是 ...

随机推荐

  1. Date( )方法 章节中,你可以查看更多关于日期转换为字符串的函数

    在 Date 方法 章节中,你可以查看更多关于日期转换为字符串的函数: 方法 描述 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象 ...

  2. Nginx的反向代理与负载均衡

    1.1 集群是什么 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服器.这些服务器之间可 ...

  3. mac cocos2dx android

    1. localhost:proj.android mxhd4$ ./build_native.sh 报错 Compile++ thumb  : cocosdenshion_static <= ...

  4. java.lang.IllegalStateException: attempt to re-open an already-closed object

    attempt to re-open an already-closed object 字面理解,试图再次打开已经关闭的对象.这是我在操作sqlited的时候出现的错误, 我在一个activity里面 ...

  5. SSH2——filter过滤器

    概述: 过滤器是Servlet2.3以上新添加的一个功能,其技术也是很强大的.通过Filter技术能够对WEBserver的文件进行拦截,从而实现一些特殊的功能. 在JSP开发应用中也是必备的技能之中 ...

  6. vim各种编码设置问题

    vim各种编码设置问题 vim中主要有四个编码相关的设置,详细是~/.vimrc中: 下面是我的设置: set fileencodings=gb18030,utf-8,gb2312,gbk: set ...

  7. redis远程连接问题(安全模式问题)

    我在windows上远程连接linux上的redis(我虚拟机上的)遇到了问题,我是在windows上php代码中的调用redis接口来远程连接的,代码中ping()的时候报错. 服务器端我确定了ip ...

  8. mysql新建数据库,并设置charset为utf8,使用utf8_general_ci字符集校验结果

    一. 实现功能 有时候在linux服务器端, 会在mysql命令行中, 创建数据库, 今天讲一下怎么在创建数据库时, 把charset设置为utf8,collate设置为utf8_general_ci ...

  9. 关于Idea中右边的maven projects窗口找不到了如何调出来

    关于Idea中右边的maven  projects窗口找不到了如何调出来? 具体的idea版本我不太清楚,我用的是2016版,其他版本应该也是一样的. 首先idea自带了maven控件,不像Eclip ...

  10. NPOI:处理xls文件中的合并行

    /// <summary> /// NPOI根据路径获取文件转换成DataTable /// </summary> /// <param name="FileP ...