C语音实现一个信息管理系统
该系统共分为管理员模式与学生模式两种模式
下面是实现该系统所调用的函数
void startWindow(); //启动界面窗口函数
int judgeMode(); //选择模式窗口函数
void ADpassword(char *passwordInput); //填写管理员密码窗口函数
void errorAdPassword(); //管理员密码错误输入窗口函数
void adEnterWindow(); //管理员进入窗口函数
int adJudgeFunction(); // 管理员功能选择窗口函数
void addStuInformation(); //添加学生信息窗口函数
int NAMEJUDGE(char *p); //姓名格式检查函数
void adQuery(); //查询学生信息窗口函数
void adQueryFunctionJudge(int num); // 管理员查询功能方式选择窗口函数
void adQueryFunction1(); //管理员通过学号查询功能窗口函数
void adQueryFunction2(); //管理员通过姓名查询功能窗口函数
void adQueryFunctionInput(int i); //输出学生信息窗口函数
void adQueryFunction3(); //遍历所有学生信息
void reviseInformation(); //修改学生信息学号匹配功能
int Revise(); //修改学生信息功能选项函数
void revise(int i); //修改学生信息功能函数
void stuModeWindow(); //进入学生模式界面等候窗口函数
int stuJudgeFunction(); //学生模式选择进入窗口函数
int stuEntry(); //学生登录模式窗口函数
int stuNumIp(int j); //学生密码验证 函数
int stuFunctionJudge(); //学生功能选择窗口函数
void stuQueryWindow(); //学生查询信息
void stuDelete(); //管理员通过学生学号删除学生信息窗口函数
void GGG(int i); //删除学生信息窗口函数
下面是编写该系统的源代码
#include
#include
#include
#include
#include
#include
using namespace std;
void startWindow(); //启动界面窗口函数
int judgeMode(); //选择模式窗口函数
void ADpassword(char *passwordInput); //填写管理员密码窗口函数
void errorAdPassword(); //管理员密码错误输入窗口函数
void adEnterWindow(); //管理员进入窗口函数
int adJudgeFunction(); // 管理员功能选择窗口函数
void addStuInformation(); //添加学生信息窗口函数
int NAMEJUDGE(char *p); //姓名格式检查函数
void adQuery(); //查询学生信息窗口函数
void adQueryFunctionJudge(int num); // 管理员查询功能方式选择窗口函数
void adQueryFunction1(); //管理员通过学号查询功能窗口函数
void adQueryFunction2(); //管理员通过姓名查询功能窗口函数
void adQueryFunctionInput(int i); //输出学生信息窗口函数
void adQueryFunction3(); //遍历所有学生信息
void reviseInformation(); //修改学生信息学号匹配功能
int Revise(); //修改学生信息功能选项函数
void revise(int i); //修改学生信息功能函数
void stuModeWindow(); //进入学生模式界面等候窗口函数
int stuJudgeFunction(); //学生模式选择进入窗口函数
int stuEntry(); //学生登录模式窗口函数
int stuNumIp(int j); //学生密码验证 函数
int stuFunctionJudge(); //学生功能选择窗口函数
void stuQueryWindow(); //学生查询信息
void stuDelete(); //管理员通过学生学号删除学生信息窗口函数
void GGG(int i); //删除学生信息窗口函数
int main()
{
char adPassword[100] = "1106811689"; //设置管理员密码为1106811689
startWindow(); //调用函数startWindow()使程序开启启动界面
adPasswordError: //管理员密码错误跳转出口
adGoBack: //管理员模式返回后出口
stuGoBack: //学生模式返回出口
int modeNum = judgeMode(); //程序启动成功,开始选择进入的模式
if(modeNum == 1) //模式1:进入管理员模式
{
char passwordInput[100]; //创建一个C风格字符串接收用户输入的管理员密码
ADpassword(passwordInput); //调用ADpassword()函数开启一个密码输入界面并接收用户密码,判断是否正确输入
if( strcmp(passwordInput, adPassword) == 0) //判断用户输入的密码是否正确,错误则返回到选择模式界面
{
adEnterWindow(); //调用adEnterWindow()函数,进入管理员模式进入窗口
adReSelection: //管理员使用功能完成后返回出口
int adFunction = adJudgeFunction(); //调用adJudgeFunction()函数并返回一个功能数字
if(adFunction == 1) //管理员功能1:添加学生信息
{
addStuInformation(); //调用 addStuInformation()添加学生信息
Sleep(2000);
goto adReSelection;
}
else if(adFunction == 2) //管理员功能2:查看学生信息
{
adQuery();
goto adReSelection;
}
else if(adFunction == 3) //管理员功能3:删除学生信息,仍未开发成功
{
stuDelete();
Sleep(500);
goto adReSelection;
}
else if(adFunction == 4) //管理员功能4:修改学生信息
{
reviseInformation();
goto adReSelection;
}
else if(adFunction == 5) //退出管理员模式
{
goto adGoBack;
}
else if(adFunction == 6) //退出程序
{
goto END;
}
}
else
{
errorAdPassword();
goto adPasswordError;
}
}
else if(modeNum == 2) //模式2;进入学生模式
{
stuModeWindow(); //调用stuModeWindow(),开启一个学生模式窗口进入界面
stuReSelection: //学生使用功能完成后返回出口
int stuFunction = stuJudgeFunction(); //调用stuFunctionJudge()函数并返回一个进入模式数字
if(stuFunction == 1) //学生模式进入模式1:登录模式
{
int stuEntryFunction = stuEntry(); //调用一个stuEntry()函数并返回一个功能数字
if(stuEntryFunction >= 0)
{
int stuPasswordJudge = stuNumIp(stuEntryFunction); //调用stuNumIp()函数并返回一个若为1则表示输入正确,若为0则输入错误或不存在此学生
if(stuPasswordJudge == 1)
{
stuReFunction:
int stuJUDGE = stuFunctionJudge(); //调用一个stuFunctionJudge()函数并返回一个功能数字
char temp[100],Temp[100],Gemp[100];
for(int G = 0; G < 100; G++)
{
temp[G] = '\0';
Temp[G] = '\0';
Gemp[G] = '\0';
}
Temp[0] = 'Y';
Gemp[0] = 'y';
if(stuJUDGE == 1) //查询个人资料
{
stuQueryWindow();
adQueryFunctionInput(stuEntryFunction);
while(true)
{
printf("是否退出查看(Y OR N)?:");
scanf("%s",temp);
if((strcmp(temp,Temp) == 0) || (strcmp(temp,Gemp) == 0))
{
goto stuReFunction;
}
}
}
else if(stuJUDGE == 2) //修改个人资料
{
revise(stuEntryFunction);
goto stuReFunction;
}
else if(stuJUDGE == 3) //退出登录
{
goto stuReSelection;
}
else if(stuJUDGE == 4) //退出学生模式
{
goto END;
}
}
else
{
goto stuReSelection;
}
}
else
{
goto stuReSelection;
}
}
else if(stuFunction == 2) //学生模式进入模式2:注册模式
{
addStuInformation();
Sleep(2000);
goto stuReSelection;
}
else if(stuFunction == 3) //退出学生模式
{
goto stuGoBack;
}
else if(stuFunction == 4) //退出程序
{
goto END;
}
}
else if(modeNum == 3) //退出程序
{
goto END;
}
END:
return 0;
}
void startWindow()
{
char ch[7] = {' ',' ',' ',' ',' ',' ','\0'};
int i = 0;
while(i<6)
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 欢迎进入学生信息管理系统 **\n");
printf("** **\n");
printf("** 作者:黄锦逢 **\n");
printf("** 创建时间:2017-08-29 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** loading%s**\n",ch);
printf("*****************************************************\n");
printf("*****************************************************\n");
Sleep(1000);
ch[i] = '.';
i++;
}
}
int judgeMode()
{
int modeNum;
while(true)
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 学生信息管理系统 **\n");
printf("** **\n");
printf("** **\n");
printf("** 选择模式 **\n");
printf("** **\n");
printf("** **\n");
printf("** 1、管理员模式 **\n");
printf("** **\n");
printf("** 2、学生模式 **\n");
printf("** **\n");
printf("** 3、退出程序 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("请输入: ");
char temp[100] = {'\0'}; //以字符串的形式读取用户的输入,防止用户胡乱输入导致程序崩溃,并在最后将字符转换成int类型返回
scanf("%s",&temp);
char text1[100] = "1" , text2[100] = "2" ,text3[100] = "3";
if((strcmp(temp,text1) == 0) || (strcmp(temp,text2) == 0) || (strcmp(temp,text3) == 0))
{
modeNum = int(temp[0]) - 48;
break;
}
else
{
printf("输入错误,请在两秒后重新进行输入");
Sleep(2000);
}
}
return modeNum;
}
void ADpassword(char *passwordInput)
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 学生信息管理系统 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 正在进入管理员模式 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("请输入管理员密码:");
scanf("%s",passwordInput);
}
void errorAdPassword()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 学生信息管理系统 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 对不起,您的密码输入错误 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
Sleep(2000);
}
void adEnterWindow()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 正在进入管理员模式,请稍后 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
Sleep(2000);
}
int adJudgeFunction()
{
int adFunction;
while(true)
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** 管理员模式 **\n");
printf("** **\n");
printf("** 请选择功能 **\n");
printf("** **\n");
printf("** 1.添加学生信息 **\n");
printf("** **\n");
printf("** 2.查看学生信息 **\n");
printf("** **\n");
printf("** 3.删除学生信息 **\n");
printf("** **\n");
printf("** 4.修改学生信息 **\n");
printf("** **\n");
printf("** 5.返回 **\n");
printf("** **\n");
printf("** 6.结束程序 **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("请选择您需要的功能:");
char temp[100] = {'\0'}; //以字符串的形式读取用户的输入,防止用户胡乱输入导致程序崩溃,并在最后将字符转换成int类型返回
scanf("%s",&temp);
char text1[100] = "1" , text2[100] = "2", text3[100] = "3", text4[100] = "4", text5[100] = "5", text6[100] = "6";
if((strcmp(temp,text1) == 0) || (strcmp(temp,text2) == 0) || (strcmp(temp,text3) == 0) || (strcmp(temp,text4) == 0) || (strcmp(temp,text5) == 0) || (strcmp(temp,text6) == 0))
{
adFunction = int(temp[0]) - 48;
break;
}
else
{
printf("输入错误,请在两秒后重新进行输入");
Sleep(2000);
}
}
return adFunction;
}
void addStuInformation()
{
FILE *pf = fopen("userFile.txt","at+");
if(pf == NULL)
{
printf("文件打开失败");
perror("\n错误原因是:");
return;
}
else
{
errorInput: //用户错误输入后进行重新输入入口
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 正在添加学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
char stuNum[100];
char stuPassword[100];
char stuName[100];
char stuPhone[100];
char temp[100];
char allInformation[100] ;
char judgeBack[100] = "0";
for(int i = 0; i < 100; i++) //清空所有数组
{
temp[i] = '\0';
stuNum[i] = '\0';
stuPassword[i] = '\0';
stuName[i] = '\0';
stuPhone[i] = '\0';
allInformation[i] = '\0';
}
printf("请输入你的学号(5位数字,单输入0可以返回操作):");
scanf("%s",stuNum);
if(strcmp(stuNum,judgeBack) == 0)
{
return;
}
rewind(pf); //判断输入的学号是否存在,若存在,则使用户进行重新输入
char CH = fgetc(pf);
while(CH != EOF)
{
fseek(pf,4,SEEK_CUR);
for(int i = 0; i < 5; i++)
{
temp[i] = fgetc(pf);
}
if(strcmp(temp,stuNum) == 0)
{
printf("对不起,您输入的学生学号已存在\n");
Sleep(2000);
goto errorInput;
}
while(CH != '\n')
{
CH = fgetc(pf);
}
if(CH == '\n')
{
CH = fgetc(pf);
}
}
fseek(pf,0,SEEK_END);
printf("请输入学生密码(6-12位只字母和数字):");
scanf("%s",stuPassword);
printf("请输入你的姓名:");
scanf("%s",stuName);
printf("请输入你的手机号:");
scanf("%s",stuPhone);
if(strlen(stuNum) != 5 ) //判断学号格式是否正确,错误原因有1、若出现数位不等于5则报错 。2、若出现除数字外的字符则报错
{
printf("学号输入格式有误,请重新输入");
Sleep(1000);
goto errorInput;
}
for(int i = 0; i < 5; i++)
{
if(isdigit(stuNum[i]) == 0)
{
printf("学号输入格式有误,请重新输入");
Sleep(1000);
goto errorInput;
}
}
stuName[strlen(stuName)] = '\0';
int NameJudge = NAMEJUDGE(stuName);
if(NameJudge == 0)
{
printf("姓名输入格式有误,请重新输入");
Sleep(1000);
goto errorInput;
}
if((strlen(stuPassword) > 12) || (strlen(stuPassword) <6)) //判断密码格式是否正确,错误原因1、若出现数位不等于10则报错,2、若出现除字母与数字外的字符则报错
{
printf("密码输入格式有误,请重新输入");
Sleep(1000);
goto errorInput;
}
for(int i = 0; i < (strlen(stuPassword)); i++)
{
if(isalnum(stuPassword[i]) == 0)
{
printf("密码输入格式有误,请重新输入");
Sleep(1000);
goto errorInput;
}
}
for(int i = (strlen(stuPassword)); i < 13; i++)
{
stuPassword[i] = '&';
}
if(strlen(stuPhone) != 11) //判断手机号格式是否正确,错误原因有1、若出现数位不等于11则报错 。2、若出现除数字外的字符则报错
{
printf("手机号输入格式有误,请重新输入");
Sleep(1000);
goto errorInput;
}
for(int i = 0; i < 11; i++)
{
if(isdigit(stuPhone[i]) == 0)
{
printf("手机号输入格式有误,请重新输入");
Sleep(1000);
goto errorInput;
}
}
strcat(allInformation,"学号:");
strcat(allInformation,stuNum);
strcat(allInformation," 密码:");
strcat(allInformation,stuPassword);
strcat(allInformation," 学生姓名:");
strcat(allInformation,stuName);
strcat(allInformation," 联系方式:");
strcat(allInformation,stuPhone);
strcat(allInformation," \n");
fputs(allInformation,pf);
printf("添加成功");
fclose(pf);
return;
}
}
int NAMEJUDGE(char *p)
{
FILE *PP = fopen("text.txt","w+");
if(PP == NULL)
{
perror("输入文件错误原因:");
return 0;
}
else
{
fputs(p,PP);
fclose(PP);
PP = fopen("text.txt","r");
int ich;
int i = 1;
while((ich = fgetc(PP)) != EOF)
{
if(ich > 128)
{
int iwh = fgetc(PP);
if((ich >= 0x81 && ich <= 0xA0) && ((iwh >= 0x40 && iwh <=0x71) || (iwh >= 0x80 && iwh <= 0xFE)))
{
continue;
}
else if((ich >= 0xb0 && ich <= 0xd6) && ((iwh >= 0x40 && iwh <=0x7e) || (iwh >= 0x80 && iwh <= 0xFE)))
{
continue;
}
else if((ich >= 0xd8 && ich <= 0xf7) && ((iwh >= 0x40 && iwh <=0x7e) || (iwh >= 0x80 && iwh <= 0xFE)))
{
continue;
}
else if((ich >= 0xaa && ich <= 0xaf) && ((iwh >= 0x40 && iwh <=0x7e) || (iwh >= 0x80 && iwh <= 0xa0)))
{
continue;
}
else if((ich >= 0xf8 && ich <= 0xfe) && ((iwh >= 0x40 && iwh <=0x7e) || (iwh >= 0x80 && iwh <= 0xa0)))
{
continue;
}
else if((ich >= 0xd7 ) && ((iwh >= 0x40 && iwh <=0x7e)))
{
continue;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
return i;
}
}
void adQuery()
{
while(true)
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在查询学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** 请选择查询方式: **\n");
printf("** **\n");
printf("** 1、通过学号进行查询 **\n");
printf("** **\n");
printf("** 2、通过姓名进行查询 **\n");
printf("** **\n");
printf("** 3、遍历所有学生信息 **\n");
printf("** **\n");
printf("** 4、返回 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("请选择:");
char temp[100] = {'\0'};
scanf("%s",&temp);
char text1[100] = "1" , text2[100] = "2" ,text3[100] = "3" , text4[100] = "4";
if(strcmp(temp,text4) == 0)
{
return;
}
else if((strcmp(temp,text1) == 0) || (strcmp(temp,text2) == 0) || (strcmp(temp,text3) == 0))
{
int num = int(temp[0]) - 48;
adQueryFunctionJudge(num);
}
else
{
printf("输入错误,请在两秒后重新进行输入");
Sleep(2000);
}
}
}
void adQueryFunctionJudge(int num)
{
if(num == 1)
{
adQueryFunction1();
return;
}
else if(num == 2)
{
adQueryFunction2();
}
else if(num == 3)
{
adQueryFunction3();
}
}
void adQueryFunction1()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在查询学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 查询方式:通过学号查询 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
FILE *PF = fopen("userFile.txt","r");
if(PF == NULL)
{
perror("错误原因:");
}
else
{
printf("请输入要查询的学号:");
char ipStuNum[100];
char CH[100];
int Num = 0, num = 0;
for(int i = 0; i < 100; i++)
{
ipStuNum[i] = '\0';
CH[i] = '\0';
}
scanf("%s",ipStuNum);
char temp = fgetc(PF);
while(temp != EOF)
{
fseek(PF,4,SEEK_CUR);
for(int i = 0; i < 5; i++)
{
CH[i] = fgetc(PF);
}
if(strstr(CH,ipStuNum) != NULL)
{
num++;
if(num == 1)
{
printf("-----------------------------------------------------------------\n");
printf("| 学号 | 密码 | 姓名 | 联系方式 |\n");
printf("-----------------------------------------------------------------\n");
}
adQueryFunctionInput(Num);
// num = 1;
// char ch[100],cht[100],Cht[100];
// for(int G = 0; G < 100; G++)
// {
// ch[G] = '\0';
// cht[G] = '\0';
// Cht[G] = '\0';
// }
// cht[0] = 'Y', Cht[0] = 'y';
// while(true)
// {
// printf("是否退出查看(Y OR N)?:");
// scanf("%s",ch);
// if((strcmp(ch,cht)==0) || (strcmp(ch,Cht)==0))
// {
// return;
// }
// }
}
while(temp != '\n')
{
temp = fgetc(PF);
}
if(temp == '\n')
{
temp = fgetc(PF);
Num++;
}
}
if(num == 0)
{
printf("抱歉,系统查询未存在此学生\n");
Sleep(2000);
return;
}
char Ftb[100],Temp[100],Gemp[100];
for(int G = 0; G < 100; G++)
{
Ftb[G] = '\0';
Temp[G] = '\0';
Gemp[G] = '\0';
}
Temp[0] = 'Y';
Gemp[0] = 'y';
// while(true)
// {
printf("是否继续查看(Y OR N)?:");
scanf("%s",Ftb);
if((strcmp(Ftb,Temp) == 0) || (strcmp(Ftb,Gemp) == 0))
{
adQueryFunction1();
return;
}
else
{
return;
}
// }
}
}
void adQueryFunction2()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在查询学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 查询方式:通过姓名查询 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
FILE *PF = fopen("userFile.txt","r");
if(PF == NULL)
{
perror("错误原因:");
}
else
{
char ipStuNum[100];
char CH[100];
int Num = 0, num = 0;
for(int i = 0; i < 100; i++)
{
ipStuNum[i] = '\0';
CH[i] = '\0';
}
printf("请输入你要进行搜索的姓名:");
scanf("%s",ipStuNum);
char ch;
while(fgetc(PF) != EOF)
{
fseek(PF,38,SEEK_CUR);
ch = fgetc(PF);
int i = 0;
while(ch != ' ')
{
CH[i] = ch;
ch = fgetc(PF);
i++;
}
if(strstr(CH,ipStuNum) != NULL)
{
num++;
if(num == 1)
{
printf("-----------------------------------------------------------------\n");
printf("| 学号 | 密码 | 姓名 | 联系方式 |\n");
printf("-----------------------------------------------------------------\n");
}
adQueryFunctionInput(Num);
// num = 1;
}
for(int i = 0; i < 100; i++)
{
CH[i] = '\0';
}
while(true)
{
ch = fgetc(PF);
if(ch == '\n')
{
Num++;
break;
}
}
}
if(num == 0)
{
printf("抱歉,系统查询未存在此学生\n");
Sleep(2000);
return;
}
char Ftb[100],Temp[100],Gemp[100];
for(int G = 0; G < 100; G++)
{
Ftb[G] = '\0';
Temp[G] = '\0';
Gemp[G] = '\0';
}
Temp[0] = 'Y';
Gemp[0] = 'y';
// while(true)
// {
printf("是否继续查看(Y OR N)?:");
scanf("%s",Ftb);
if((strcmp(Ftb,Temp) == 0) || (strcmp(Ftb,Gemp) == 0))
{
adQueryFunction2();
return;
}
else
{
return;
}
// }
}
}
void adQueryFunctionInput(int i)
{
char filename[] = "userFile.txt";
FILE *fp;
int WhichLine=i; //指定要读取哪一行
int CurrentIndex=0; //当前读取的行
char StrLine[1024]; //每行最大读取的字符数,可根据实际情况扩大
char temp;
int T = 0, Temp = 1;
char queryStuNum[100];
char queryStuPassword[100];
char queryStuName[100];
char queryStuPhone[100];
for(int j = 0; j < 15; j++)
{
queryStuNum[j] = ' ';
queryStuPassword[j] = ' ';
queryStuName[j] = ' ';
queryStuPhone[j] = ' ';
}
for(int j = 15; j < 100; j++)
{
queryStuNum[j] = '\0';
queryStuPassword[j] = '\0';
queryStuName[j] = '\0';
queryStuPhone[j] = '\0';
}
if((fp = fopen(filename,"r")) == NULL)
{
printf("error!");
return;
}
while (!feof(fp))
{
if (CurrentIndex==WhichLine)
{
temp = fgetc(fp);
if(temp == '+')
{
return;
}
while(temp != '\n')
{
if(temp == ':' && Temp == 1)
{
temp = fgetc(fp);
while(temp != ' ')
{
queryStuNum[T+4] = temp;
temp = fgetc(fp);
T++;
}
T = 0;
Temp++;
}
else if(temp == ':' && Temp == 2)
{
char TTemp[16];
for(int j = 0; j < 16; j++)
{
TTemp[j] = '\0';
}
temp = fgetc(fp);
while(temp != '&')
{
TTemp[T] = temp;
temp = fgetc(fp);
T++;
}
while(temp != ' ')
{
temp = fgetc(fp);
}
T = 0;
int DD = strlen(TTemp);
int TT = (15-DD)/2;
for(int j = 0; j < DD; j++)
{
queryStuPassword[j+TT] = TTemp[j];
}
// T = 0;
Temp++;
}
else if(temp == ':' && Temp == 3)
{
char TTemp[16];
for(int j = 0; j < 16; j++)
{
TTemp[j] = '\0';
}
temp = fgetc(fp);
while(temp != ' ')
{
TTemp[T] = temp;
temp = fgetc(fp);
T++;
}
T = 0;
int DD = strlen(TTemp);
int TT = (15-DD)/2;
for(int j = 0; j < DD; j++)
{
queryStuName[j+TT] = TTemp[j];
}
// T = 0;
Temp++;
}
else if(temp == ':' && Temp == 4)
{
temp = fgetc(fp);
while(temp != ' ')
{
queryStuPhone[T+2] = temp;
temp = fgetc(fp);
T++;
}
T = 0;
Temp++;
}
temp = fgetc(fp);
}
printf("|%s|%s|%s|%s|",queryStuNum,queryStuPassword,queryStuName,queryStuPhone);
printf("\n-----------------------------------------------------------------\n");
fclose(fp);
return;
}
fgets(StrLine,1024,fp); //读取一行,并定位到下一行
CurrentIndex++;
}
fclose(fp); //关闭文件
return;
}
void adQueryFunction3()
{
FILE *pf = fopen("userFile.txt","r");
if(pf == NULL)
{
perror("error:");
Sleep(2000);
return;
}
else
{
int NUM[10000], nums = 0, Temp = 0;
char CH;
char temp = fgetc(pf);
for(int i = 0; i < 10000; i++)
{
NUM[i] = -1;
}
while(temp != EOF)
{
if(temp == '\n')
{
fseek(pf,-9,SEEK_CUR);
CH = fgetc(pf);
if(CH != '+')
{
NUM[Temp] = nums;
Temp++;
}
fseek(pf,8,SEEK_CUR);
nums++;
}
temp = fgetc(pf);
}
rewind(pf);
int numPath = Temp/10;
if((Temp%10)>0)
{
numPath+=1;
}
cout << numPath << endl;
if(Temp < 10)
{
G:
system("cls");
printf("-----------------------------------------------------------------\n");
printf("| 学号 | 密码 | 姓名 | 联系方式 |\n");
printf("-----------------------------------------------------------------\n");
for(int i = 0; i < Temp; i++)
{
adQueryFunctionInput(NUM[i]);
}
char path[10];
while(true)
{
int num = 0;
printf("按0退出:");
scanf("%s",path);
for(int i = 0; i < strlen(path);i++)
{
num = num*10 + (int(path[i])-48);
}
if(num == 0)
{
fclose(pf);
return;
}
else
{
printf("输入错误");
Sleep(500);
goto G;
}
}
}
else
{
int num = 1, Num = 1;
char path[10];
errorInput:
system("cls");
printf("-----------------------------------------------------------------\n");
printf("| 学号 | 密码 | 姓名 | 联系方式 |\n");
printf("-----------------------------------------------------------------\n");
for(int i = 0; i < 10; i++)
{
adQueryFunctionInput(NUM[i]);
}
g:
Num = num;
num = 0;
printf("当前第%d页,跳转__页(共%d页)(按0退出):",Num,numPath);
scanf("%s",&path);
for(int i = 0; i < strlen(path); i++)
{
if((path[i] < '0') || (path[i] > '9'))
{
printf("输入有误");
Sleep(500);
num = 1;
goto errorInput;
}
}
for(int i = 0; i < strlen(path);i++)
{
num = num*10 + (int(path[i])-48);
}
if((num > numPath))
{
printf("输入有误");
Sleep(500);
num = 1;
goto errorInput;
}
else if(num == 0)
{
return;
}
else
{
system("cls");
printf("-----------------------------------------------------------------\n");
printf("| 学号 | 密码 | 姓名 | 联系方式 |\n");
printf("-----------------------------------------------------------------\n");
if((num == numPath) && (Temp%10>0))
{
for(int i = (num-1)*10; i < Temp; i++)
{
adQueryFunctionInput(NUM[i]);
}
goto g;
}
else
{
for(int i = (num-1)*10; i < (num*10); i++)
{
adQueryFunctionInput(NUM[i]);
}
goto g;
}
goto g;
}
}
}
return;
}
void reviseInformation()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 学生信息管理系统 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 正在修改学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
FILE *PF = fopen("userFile.txt","r");
if(PF == NULL)
{
perror("error:");
}
else
{
char ipStuNum[100];
char CH[100];
int Num = 0;
for(int i = 0; i < 100; i++)
{
ipStuNum[i] = '\0';
CH[i] = '\0';
}
printf("请选择你要修改学生的学号:");
scanf("%s",ipStuNum);
char temp = fgetc(PF);
while(temp != EOF)
{
fseek(PF,4,SEEK_CUR);
for(int i = 0; i < 5; i++)
{
CH[i] = fgetc(PF);
}
if(strcmp(CH,ipStuNum) == 0)
{
revise(Num);
return;
}
while(temp != '\n')
{
temp = fgetc(PF);
}
if(temp == '\n')
{
temp = fgetc(PF);
Num++;
}
}
printf("抱歉,系统查询未存在此学生\n");
Sleep(2000);
return;
}
}
int Revise()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在修改学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** 请选择: **\n");
printf("** **\n");
printf("** 1、修改密码 **\n");
printf("** **\n");
printf("** 2、修改手机号码 **\n");
printf("** **\n");
printf("** 3、返回 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("请选择:");
char CH[100] = {'\0'};
scanf("%s",&CH);
char text1[100] = "1" , text2[100] = "2" ,text3[100] = "3";
if(strcmp(CH,text1) == 0)
{
return 1;
}
else if(strcmp(CH,text2) == 0)
{
return 2;
}
else if(strcmp(CH,text3) == 0)
{
return 3;
}
else
{
printf("输入错误,请在两秒后重新进行输入");
Sleep(2000);
Revise();
}
}
void revise(int i)
{
FILE *fp;
int WhichLine=i; //指定要读取哪一行
int CurrentIndex=0; //当前读取的行
char StrLine[1024]; //每行最大读取的字符数,可根据实际情况扩大
if((fp = fopen("userFile.txt","r+")) == NULL) //判断文件是否存在及可读
{
printf("error!");
return;
}
while (!feof(fp))
{
if (CurrentIndex==WhichLine)
{
int temp = Revise();
if(temp == 1)
{
B:
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在修改学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 修改类型:修改学生密码 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
char nowPassword[100];
for(int temp = 0; temp < 100; temp++)
{
nowPassword[temp] = '\0';
}
printf("请输入新的密码:");
scanf("%s",nowPassword);
if(strlen(nowPassword) > 12) //判断密码格式是否正确,错误原因1、若出现数位不等于10则报错,2、若出现除字母与数字外的字符则报错
{
printf("密码输入格式有误,请重新输入");
Sleep(1000);
goto B;
}
for(int i = 0; i < (strlen(nowPassword)); i++)
{
if(isalnum(nowPassword[i]) == 0)
{
printf("密码输入格式有误,请重新输入");
Sleep(1000);
goto B;
}
}
for(int i = (strlen(nowPassword)); i < 13; i++)
{
nowPassword[i] = '&';
}
fseek(fp,16,SEEK_CUR);
fputs(nowPassword,fp);
fclose(fp);
printf("修改成功");
Sleep(1000);
}
else if(temp == 2)
{
C:
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在修改学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 修改类型:修改学生手机号码 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
char nowPhone[100];
for(int temp = 0; temp < 100; temp++)
{
nowPhone[temp] = '\0';
}
printf("请输入新的手机号码:");
scanf("%s",nowPhone);
if(strlen(nowPhone) != 11) //判断手机号格式是否正确,错误原因有1、若出现数位不等于11则报错 。2、若出现除数字外的字符则报错
{
printf("手机号输入格式有误,请重新输入");
Sleep(1000);
goto C;
}
for(int i = 0; i < 11; i++)
{
if(isdigit(nowPhone[i]) == 0)
{
printf("手机号输入格式有误,请重新输入");
Sleep(1000);
goto C;
}
}
int i = 0;
char Temp = fgetc(fp);
while(Temp != '\n')
{
if(Temp == ':')
{
i++;
}
if(i == 4)
{
fseek(fp,0,SEEK_CUR);
fputs(nowPhone,fp);
fclose(fp);
printf("修改成功");
Sleep(1000);
break;
}
Temp = fgetc(fp);
}
}
return;
}
fgets(StrLine,1024,fp); //读取一行,并定位到下一行
CurrentIndex++;
}
fclose(fp); //关闭文件
}
void stuModeWindow()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 学生信息管理系统 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 正在进入学生模式 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
Sleep(2000);
}
int stuJudgeFunction()
{
while(true)
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 学生模式 **\n");
printf("** **\n");
printf("** **\n");
printf("** 请选择: **\n");
printf("** **\n");
printf("** 1、登录 **\n");
printf("** **\n");
printf("** 2、注册 **\n");
printf("** **\n");
printf("** 3、返回 **\n");
printf("** **\n");
printf("** 4、退出程序 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("请选择:");
char CH[100] = {'\0'};
scanf("%s",&CH);
char text1[100] = "1" , text2[100] = "2" ,text3[100] = "3" , text4[100] = "4";
if((strcmp(CH,text1) == 0) || (strcmp(CH,text2) == 0) || (strcmp(CH,text3) == 0) || (strcmp(CH,text4) == 0))
{
int num = int(CH[0]) - 48;
return num;
}
else
{
printf("输入错误,请在两秒后重新进行输入");
Sleep(2000);
}
}
}
int stuEntry()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 正在登录 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
FILE *PF = fopen("userFile.txt","r");
if(PF == NULL)
{
perror("错误原因:");
}
else
{
printf("请输入您的学号:");
char ipStuNum[100];
char CH[100];
int Num = 0;
for(int i = 0; i < 100; i++)
{
ipStuNum[i] = '\0';
CH[i] = '\0';
}
scanf("%s",ipStuNum);
char temp = fgetc(PF);
while(temp != EOF)
{
fseek(PF,4,SEEK_CUR);
for(int i = 0; i < 5; i++)
{
CH[i] = fgetc(PF);
}
if(strcmp(CH,ipStuNum) == 0)
{
return Num;
}
while(temp != '\n')
{
temp = fgetc(PF);
}
if(temp == '\n')
{
temp = fgetc(PF);
Num++;
}
}
printf("抱歉,系统查询未存在此学生\n");
Sleep(2000);
return (-1);
}
return 0;
}
int stuNumIp(int j)
{
char filename[] = "userFile.txt"; //文件名
FILE *fp;
int WhichLine=j; //指定要读取哪一行
int CurrentIndex=0; //当前读取的行
char StrLine[1024]; //每行最大读取的字符数,可根据实际情况扩大
if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!");
return 0;
}
while (!feof(fp))
{
if (CurrentIndex==WhichLine)
{
printf("请输入密码:");
char ipStuPassword[100];
char CH[100];
int Num = 0;
for(int i = 0; i < 100; i++)
{
ipStuPassword[i] = '\0';
CH[i] = '\0';
}
scanf("%s",ipStuPassword);
fseek(fp,16,SEEK_CUR);
// for(int i = 0; i < 10; i++)
// {
// CH[i] = fgetc(fp);
// }
char GG = fgetc(fp);
int i = 0;
while(GG != '&')
{
CH[i] = GG;
i++;
GG = fgetc(fp);
}
if(strcmp(CH,ipStuPassword) == 0)
{
printf("密码输入正确");
fclose(fp);
Sleep(2000);
return 1;
}
else
{
printf("密码输入错误");
Sleep(2000);
fclose(fp);
return 0;
}
}
fgets(StrLine,1024,fp); //读取一行,并定位到下一行
CurrentIndex++;
}
fclose(fp); //关闭文件
return 0;
}
int stuFunctionJudge()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** **\n");
printf("** 学生模式 **\n");
printf("** **\n");
printf("** 请选择 **\n");
printf("** **\n");
printf("** 1、个人资料查询 **\n");
printf("** **\n");
printf("** 2、修改个人资料 **\n");
printf("** **\n");
printf("** 3、返回 **\n");
printf("** **\n");
printf("** 4、结束程序 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("请选择:");
char CH[100] = {'\0'};
scanf("%s",&CH);
char text1[100] = "1" , text2[100] = "2" ,text3[100] = "3" , text4[100] = "4";
if((strcmp(CH,text1) == 0) || (strcmp(CH,text2) == 0) || (strcmp(CH,text3) == 0) || (strcmp(CH,text4) == 0))
{
int num = int(CH[0]) - 48;
return num;
}
else
{
printf("输入错误,请在两秒后重新进行输入");
Sleep(2000);
stuFunctionJudge();
}
}
void stuQueryWindow()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在查询学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 查询方式:通过学号查询 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("-----------------------------------------------------------------\n");
printf("| 学号 | 密码 | 姓名 | 联系方式 |\n");
printf("-----------------------------------------------------------------\n");
}
void stuDelete()
{
system("cls");
printf("*****************************************************\n");
printf("*****************************************************\n");
printf("** **\n");
printf("** 正在删除学生信息 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** 删除方式:通过学号删除 **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("** **\n");
printf("*****************************************************\n");
printf("*****************************************************\n");
FILE *pf = fopen("userFile.txt","r");
if(pf == NULL)
{
perror("error:");
Sleep(1000);
return;
}
else
{
printf("请输入要删除的学生的学号:");
char ipStuNum[100];
char CH[100];
int Num = 0, num = 0;
for(int i = 0; i < 100; i++)
{
ipStuNum[i] = '\0';
CH[i] = '\0';
}
scanf("%s",ipStuNum);
char temp = fgetc(pf);
while(temp != EOF)
{
fseek(pf,4,SEEK_CUR);
for(int i = 0; i < 5; i++)
{
CH[i] = fgetc(pf);
}
if(strcmp(CH,ipStuNum) == 0)
{
printf("确定删除?(Y or N)");
char GTC[100] = {0};
scanf("%s",GTC);
char YYY[100] = {0}, yyy[100] = {0};
YYY[0] = 'Y';
yyy[0] = 'y';
if((strcmp(GTC,yyy)==0) || (strcmp(GTC,YYY)==0))
{
GGG(Num);
}
return;
}
while(temp != '\n')
{
temp = fgetc(pf);
}
if(temp == '\n')
{
temp = fgetc(pf);
Num++;
}
}
if(num == 0)
{
printf("抱歉,系统查询未存在此学生\n");
Sleep(2000);
return;
}
}
return;
}
void GGG(int i)
{
char filename[] = "userFile.txt";
FILE *fp = fopen(filename,"r+");
int WhichLine=i; //指定要读取哪一行
int CurrentIndex=0; //当前读取的行
char StrLine[1024]; //每行最大读取的字符数,可根据实际情况扩大
char temp;
if(fp == NULL)
{
printf("error!");
return;
}
while (!feof(fp))
{
if (CurrentIndex==WhichLine)
{
temp = fgetc(fp);
int i = 0, j = 0;
while(temp != '\n')
{
if(temp == ' ')
{
i++;
}
if(i == 4)
{
break;
}
j++;
temp = fgetc(fp);
}
char Temp[100];
for(int k = 0; k < 100; k++)
{
Temp[k] = '\0';
}
fseek(fp,-(j+1),SEEK_CUR);
for(int k = 0; k < j; k++)
{
Temp[k] = '+';
}
fputs(Temp,fp);
fclose(fp); //关闭文件
printf("删除成功");
Sleep(500);
return;
}
fgets(StrLine,1024,fp); //读取一行,并定位到下一行
CurrentIndex++;
}
}
//END
完成这个项目可能会用了许多蠢方法,也不会使用图形界面,毕竟还是小白请各位大佬们轻喷
下面简单讲解一下该系统
点开系统后会进入一个页面的等待窗口,6秒后会弹出一个主窗口
在输入正确可以匹配的情况下会进入所选的相应模式(管理员密码为1106811689),若输入错误则报错后让用户重新选择模式
如进入管理员模式会通知输入密码,若正确输入则会进入下面页面
1、若进入管理员添加学生信息功能则会要求用户输入正确格式的姓名、学号、密码、手机号码
2、若进入管理员查看学生信息功能则会给予用户三种选择查询的方式(学号查询(可模糊查询)、姓名查询(可模糊查询)、遍历学生信息(有翻页功能))
3、若进入管理员删除学生信息功能则输入文本中存在的学号即可进行删除
4、若进入管理员修改学生信息只能通过学生学号正确输入后修改其密码或者手机号码‘
若进入学生模式则会进入下面界面
在成功登录后便进入下面界面
由于功能与管理员模式下的功能有些相似,仅进行了弱化,便不一一描述。