前言
随着二十一世纪信息时代的到来,计算机开始迅速发展,学生信息管理系统已经成为学校管理学生基本信息的常用手段和方法(博主论文的一段话)
提示:以下是本篇文章正文内容,下面案例可供参考
一、学生管理系统是什么?
本系统的目的是让管理员和教师管在理学生信息情况中省时省力,并且可以轻松了解和掌握学生的基本信息。无论是新生入学时需要添加学生信息,还是学生毕业时需要查找和删除毕业生信息设计相关功能来提高工作效率,或者特殊情况下需要学生,可以根据学生的学号、专业等找到自己需要了解的基本信息。同时可以修改录入时输入错误的信息。系统设计的第一要务是缓解管理组的工作压力、节约人力成本以及提高工作效率。(论文的部分解释)
二、使用工具
DEV-C++或者VC++6.0
(我是在LINUX中搞得毕业设计利用gcc编译器,但是也写了windows的代码)
三、主体思想
没有高大尚的语句和逻辑,实现基本的功能:分权限登录、增、删、改、查等代码的设计,代码套路很简单,一个功能一个代码比较呆滞,为什么分享呢?是因为小白可以利用简单的语句来写出不简单的分权限。
四、定义及功能代码
定义学生结构和密码结构相关的字段
short int long float double char
struct Student // student结构
{
char name[20];//姓名 (别问为什么都是char,问就是无脑char!!!)
char id[15];//学号
int age;//年龄
char sex[20];//性别
char address[20];//住址
char tele[20];//电话
char major[20];//专业
char birthday[15];//生日 这里好像也可以是date
}students[N];
int n=0, m=0;//定义变量
struct users//密码结构
{
char ac[30];//账号
char pw[30];//密码
};
struct users use[50];
所有功能的函数命名,这里所有功能的函数名字都可更改,记得在后续的对应地方修正即可。例如改void Hello为void Student,在后面就要注意有Hello的地方全改为Student
void Admin(); //管理员界面
void Hello();//学生界面
void Teacher();//教师界面
void registeruser();//管理员注册
void zhuce();//学生员注册
void tzhuce();//教师注册
void login();//管理员登陆
void denglu();//学生员登陆
void tdenglu(); //教师登陆
void tips();//管理员提示
void tishi();//学生提示
void ttishi();//教师提示
void load();//调取数据
int resh();//刷新数据
void seek();//查询管理员、教师系统
void chaxun();//查询学生系统
void modify();//修改
void insert();//添加
void del();//删除
void display();//显示
void Exit();//退出
void tuichu();
void save();//保存
void interaction(); //交互
int menu();//管理员菜单
int caidan();//学生菜单
int tcaidan();//教师菜单
int main();//主函数
管理员的注册登录界面(文章最后会有详细代码在这里就不细说学生和老师了,以管理为例)
void Admin() //管理员注册登录界面
{
int se;
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│***学生信息管理系统管理员登录界面***│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("\t\t1.管理员系统账户注册\n");
printf("\t\t2.管理员系统账户登录\n");
printf("\t\t3.退出界面\n\n");
printf("******************欢迎使用******************\n");
printf("请选择:");
scanf("%d", &se);
switch (se)
{
case 1:
registeruser();//管理员注册调用,这里注意学生老师管理都有对应函数
break;
case 2:
login();//管理员登录调用,这里注意学生老师管理都有对应函数
break;
case 3:
tuichu();
break;
default:
printf("\n没有这个选项,请重新选择!\n");
break;
}
}
管理员注册功能,后有个判断函数,注册时密码输入不一致会直接注册失败,后续可以改进 让其重新输入一遍 ,加个循环 就行了,有兴趣的同学可以试试
void registeruser() //管理员注册
{
char ac[30];
char pw[30],pd[30];
int i, a = 0;
printf("\t\t【注册帐号】\n");
FILE *fp = fopen("管理员账号密码.txt", "ab");
printf("请输入用户账号和密码(账号、密码可以为数字,中文字母,英文字母,符号)\n\n\n");
printf("\t请你输入账号:");
scanf("%s", &ac);
strcpy(use[a].ac, ac);
printf("\n\t请你输入密码:");
scanf( "%s", &pw );
strcpy( use[a].pw, pw );
printf("\n\n\t再次确认密码:");
scanf( "%s", &pd );
if(strcmp(pw,pd)==0)
{
strcpy( use[a].pw, pw );
fprintf(fp, "账号\t密码\n");
fprintf(fp, "%s\t%s\n", use[a].ac, use[a].pw);
printf("\n注册成功!!!\n");
fclose(fp);
}
else printf("注册失败,两次密码不一致,退出系统\n");
}
管理员登录这里没什么可以说的,注意定义的字母
void login() //管理员登录
{
char ac[30];
char ad[30], pw[30];
int i, j, a = 0;
int flag = 0;
printf("--------【登录账号】--------\n");
for (i = 0; i<3; i++)
{
printf("请输入帐号:");
scanf("%s", &ac);
printf("请输入密码:");
scanf("%s", &pw);
FILE *fp;//定义FP指针
fp = fopen( "管理员账号密码.txt", "r+" );//以可读可写的文件打开且必文件须存在
while ( !feof( fp ) )
{
fscanf( fp, "%s %sn", &use[a].ac, &use[a].pw );
if ( (strcmp( ac, use[a].ac ) == 0) && (strcmp( pw, use[a].pw ) == 0) )//调用文件核对账号密码
{
flag = 1;
fclose( fp );
break;
}
a++;
}
if ( flag == 1 )//存在登录成功
{
printf("\n登录成功!");
printf("按任意键进入学生信息管理系统!\n");
system("pause");
while (1)
{
menu();//调用管理员菜单,学生老师都有各自的菜单
interaction(); //交互的函数
system("pause");
}
}
else {
printf("\n账号或者密码输入错误,你还有%d次机会,请重新输入:\n", 2 - i);
}
}
if (i == 3)
{
printf("登录失败\n");
return;
}
}
这个功能完全是凑代码用的
void tips() //提示
{
printf("\n 学生管理系统介绍:\n");
printf("\n 本系统由本人根据C语言学生管理系统来延伸设计的,所用语言只有C语言,文件的保存调取均以C语言的编码完成,保存在.txt文件下\n");
printf("\n1.注册的账号和密码信息在txt文件下,忘记密码后可使用cat命令查看存放账号密码的txt文件;\n");
printf("\n2.第一次使用要看清所有功能所对应的选项;\n");
printf("\n3.首次进入系统后请您先添加学生信息;\n");
printf("\n4.为了防止文件丢失可以保存多次不重名文件;\n");
printf("\n5.添加信息后记得保存在.txt文件下;\n");
printf("\n6.谢谢您的使用!\n");
printf("\n 退出帮助请按0\n");
int a;
scanf("%d",&a);
switch(a)
{
case 0:
return;
default:
printf("输入错误!");
}
}
读取之前录入的学生信息
void load() //读取
{
char filename[20];
FILE *fp;
int i=0;
printf("请输入已经存有学生信息的文件名:\n");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL) //以可读写方式打开文件,该文件必须存在
{
printf("打开文件%s错误",filename);
system("pause");
return;
}
while(fscanf(fp,"%s %s %d %s %s %s %s %s\n",students[i].name,students[i].id,&students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday)==8)//调取的格式,注意%s&%d都是根据前面的 student结构定义的char对应%s,int对应%d
{
i++;
}
n=i;
printf("读入成功\n");
fclose(fp);
system("pause");
}
说白了也是凑代码,只不过有一点 用,在添加信息后可能会看不到,刷新一下即可
int resh()
{
char filename[LEN + 1];
int i = 0;
printf("请输入要刷新学生信息的文件名:\n");
scanf("%s", filename);
int j = 0;
FILE * fp;
if ((fp = fopen(filename, "r")) == NULL) return 0;
//从文件读取信息
while(fscanf(fp,"%s %s %d %s %s %s %s %s\n",students[i].name,students[i].id,&students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday)==8) //显示格式
{
j++;
}
n = j;
printf("刷新成功!!!");
return n;
}
这个函数就是增删改查的查,这个地方要自己理解,套了好几层,但是最主要的就case对应的按键选择,这里我只用了5个查询方式,其实在之前定义的时候可以加一个学生成绩等,代码中间有繁体字是因为一时兴起,学生有单另的查询函数
void seek() //管理员、教师查询
{
int i,item,flag;//变量
char s1[20];
printf("----------------------\n");
printf("-----1.按学号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.按住址查询-----\n");
printf("-----4.按生日查询-----\n");
printf("-----5.按专业查询-----\n");
printf("-----6. 退出 -----\n");
printf("----------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("Please enter the student's school id:\n");
printf("请输入查询学生的学号:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].id,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);//查询后显示的格式
}
if(flag==0)
printf("未找到!\n");
break;
case 2:
printf("Please enter the name of the student:\n");
printf("请输入查询学生的姓名:\n");
scanf("%s",&s1);
for(i=0;i<n;i++)
if(strcmp(students[i].name,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 3:
printf("Please enter the address of the student:\n");
printf("请输入查询学生的住址:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].address,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 4:
printf("Please enter the student's birthday:\n");
printf("请输入查询学生的生日:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].birthday,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 5:
printf("Please enter the student's major:\n");
printf("请输入查询学生的专业:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].major,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 6:return;
default:printf("請在1-6之間選擇\n");
}
}
}
教师有自己的修改权限函数,还是要注意case对应的按键,可以修改对应值比如从0开始
void modify() //管理员权限修改
{
int i,item,num;//变量
int a;
char s1[LEN+1],s2[LEN+1],s3[LEN+1],s4[LEN+1],s5[LEN+1],s6[LEN+1],s7[LEN+1],s8[LEN+1];//组长度
printf("学生学号修改:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(students[i].id,s1)==0)
{
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改学号\n");
printf("3.修改年龄\n");
printf("4.修改性别\n");
printf("5.修改住址\n");
printf("6.修改电话\n");
printf("7.修改专业\n");
printf("8.修改生日\n");
printf("9.退出\n");
printf("------------------\n");
while(1)
{
printf("请选择菜单编号:");
scanf("%d",&item);
switch(item)
{
case 1:
printf("Please enter a new name:\n");
printf("请输入新的姓名:\n");
scanf("%s",s2);
strcpy(students[num].name,s2); break;
case 2:
printf("Please enter a new id:\n");
printf("请输入新的学号:\n");
scanf("%s",s2);
students[num].id;break;
case 3:
printf("Please enter a new age:\n");
printf("请输入新的年龄:\n");
scanf("%s",s3);
students[num].age=a;break;
case 4:
printf("Please enter a new sex:\n");
printf("请输入新的性别:\n");
scanf("%s",s4);
strcpy(students[num].sex,s4);break;
case 5:
printf("Please enter a new address:\n");
printf("请输入新的住址:\n");
scanf("%s",s5);
strcpy(students[num].address,s5);break;
case 6:
printf("Please enter a new telephone:\n");
printf("请输入新的电话:\n");
scanf("%s",s6);
strcpy(students[num].tele,s6);break;
case 7:
printf("Please enter a new major:\n");
printf("请输入新的专业:\n");
scanf("%s",s7);
strcpy(students[num].major,s7);break;
case 8:
printf("Please enter a new birthday:\n");
printf("请输入新的生日:\n");
scanf("%s",s8);
strcpy(students[num].birthday,s8);break;
case 9: return;
default:printf("请在1-9之间选择\n");
}
}
}
}
这里注意%d是给第 ?多少个定义的,并不是之前的char&int
void insert() //添加
{
int j=n,i,flag;//变量
printf("请输入待增加的学生数:\n");
scanf("%d",&m);
if(m>0)
{
do
{
flag=1;
while(flag)
{
flag=0;
printf("请输入第%d位学生的学号(查重):\n",j+1);
scanf("%s",students[j].id);
for(i=0;i<j;i++)
if(strcmp(students[j].id,students[i].id)==0)
{
printf("已有该学号,请重新录入\n");
flag=1;
break;
}
}
printf("Please enter %d student name:\n",j+1);
printf("请输入第 %d 个学生姓名:\n",j+1);
scanf("%s",&students[j].name);
printf("Please enter %d student jd:\n",j+1);
printf("请输入第 %d 个学生学号:\n",j+1);
scanf("%s",&students[j].id);
printf("Please enter %d student age:\n",j+1);
printf("请输入第 %d 个学生年龄:\n",j+1);
scanf("%d",&students[j].age);
printf("Please enter %d student sex:\n",j+1);
printf("请输入第 %d 个学生性别:\n",j+1);
scanf("%s",&students[j].sex);
printf("Please nter%d student address:\n",j+1);
printf("请输入第 %d 个学生住址:\n",j+1);
scanf("%s",&students[j].address);
printf("Please enter%d student telephone:\n",j+1);
printf("请输入第 %d 个学生电话:\n",j+1);
scanf("%s",&students[j].tele);
printf("Please enter %d student major:\n",j+1);
printf("请输入第 %d 个学生专业:\n",j+1);
scanf("%s",&students[j].major);
printf("Please enter %d student bjrthday:\n",j+1);
printf("请输入第 %d 个学生生日:\n",j+1);
scanf("%s",&students[j].birthday);
if(0==flag)
{
j++;//先取J的值做计算,再自加
}
}
while(j<n+m);
}
n+=m;
printf("信息增加完毕!\n\n");
system("pause");
}
删除很简单没啥可说的
void del() //删除
{
int i,j,flag=0;
char s1[20];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(students[i].id,s1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
students[j]=students[j+1];
}
if(flag==0)
printf("该学号不存在!\n");
if(flag==1)
{
printf("删除成功,显示结果请选择菜单\n");
n--;//n自减之前的值
}
system("pause");
}
这里显示函数教师管理员基本一致而学生有不同的显示函数
void display() //显示
{
int i;
printf("共有%d位学生的信息:\n",n);
if(0!=n)
{
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________________________________\n");
for(i=0;i<n;i++)
{
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
}
else
{
printf("未找到学生信息\n");
}
return;
int a;
scanf("%d",&a);
if(a==0)
system("pause");
}
这里就是比较呆的地方搞了个子系统实现登录分权的界面
void tuichu()//退出子系统,返回登录界面
{
int input=0;
while(input !=9)
{
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│*****学生信息管理系统登录界面*****│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 1.管理员登录 ┃\n");
printf("┃ @ 2.教师登录 ┃\n");
printf("┃ @ 3.学生登录 ┃\n");
printf("┃ @ 4.退出系统 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 1:Admin();break;
case 2:Teacher();break;
case 3:Hello();break;
case 4:Exit();break;
}
}
}
保存函数 没啥难度注意自己的定义student[i].name是我的,也可以是student[d].name,xueshegn.name等,之前的定义皆是如此
void save() //保存
{
int i;
FILE *fp;
char filename[20];//字符数组
printf("请命名要保存该信息的文件名:\n");
scanf("%s",filename);
fp=fopen(filename,"w");//可读
fprintf(fp,"姓名","学号","年龄","性别","住址","电话","专业","生日");
for(i=0;i<n;i++)
{
fprintf(fp,"%s\t %s\t %d\t %s\t %s\t %s\t %s\t %s\t\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday );
}
printf("保存成功\n");
fclose(fp);
return;
}
这个菜单是进入系统的菜单可以说是子菜单,管理员的菜单界面,学生老师都有自己对应的菜单
int menu()//管理员菜单
{
int input=0;
while(input !=9)
{
printf(" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
printf(" #$ 学生管理系统(管理员版) $#\n \n");
printf(" #$ Student management system $#\n \n");
printf(" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 0.提示 Tips ┃\n");
printf("┃ @ 1.调取数据 Load data ┃\n");
printf("┃ @ 2.刷新资料 Refresh data ┃\n");
printf("┃ @ 3.寻找信息 Seek information ┃\n");
printf("┃ @ 4.更改数据 Change data ┃\n");
printf("┃ @ 5.添加信息 Add information ┃\n");
printf("┃ @ 6.删除信息 Delete information ┃\n");
printf("┃ @ 7.显示数据 Display data ┃\n");
printf("┃ @ 8.保存数据 Save data ┃\n");
printf("┃ @ 9.退出系统 Exit the system ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 0:tips();break;
case 1:load();break;
case 2:resh();break;
case 3:seek();break;
case 4:modify();break;
case 5:insert();break;
case 6:del();break;
case 7:display();break;
case 8:save();break;
case 9:tuichu();break;
default:
printf("选择错误!因为不存在此项选择!\n");
system("pause");
break;
}
}
}
这是个交互界面作用就是子系统和主系统的连接,博主比较佛系,喜欢简单的···交互,其实这个可以套进主系统里
void interaction() //连接系统
{
int choice;
switch (choice)
{
case 0:
printf("--------【@ 0.提示 Tips】------------------------\n");
tips();
break;
case 1:
printf("--------【@ 1.调取数据 Load data】---------------\n");
load();
break;
case 2:
printf("--------【 @ 2.刷新资料 Refresh data 】----------\n");
resh();
break;
case 3:
printf("--------【@ 3.寻找信息 Seek information】--------\n");
seek();
break;
case 4:
printf("--------【@ 4.更改数据 Change data】-------------\n");
modify();
break;
case 5:
printf("--------【 @ 5.添加信息 Add information】--------\n");
insert();
break;
case 6:
printf("--------【@ 6.删除信息 Delete information】------\n");
del();
break;
case 7:
printf("--------【@ 7.显示数据 Display data 】--------\n");
display();
break;
case 8:
printf("--------【@ 8.保存数据 Save data】--------\n");
save();
break;
case 9:
printf("--------【@ 9.退出系统 Exit the system (按Enter后退出系统)】--------\n");
system("pause");
exit(0);
break;
default:
printf("选择错误,请重新输入\n");
break;
}
}
这个主函数比较简陋,可以说是大白话代码
int main()
{
int input=0;
while(input !=9)
{
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│*****学生信息管理系统登录界面*****│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 1.管理员登录 ┃\n");
printf("┃ @ 2.教师登录 ┃\n");
printf("┃ @ 3.学生登录 ┃\n");
printf("┃ @ 4.退出系统 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 1:Admin();break;
case 2:Teacher();break;
case 3:Hello();break;
case 4:Exit();break;
}
}
}
五、总代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include <assert.h>
#include <conio.h>
#define LEN 50
#define N 100
struct Student // student结构
{
char name[20];//姓名
char id[15];//学号
int age;//年龄
char sex[20];//性别
char address[20];//住址
char tele[20];//电话
char major[20];//专业
char birthday[15];//生日
}students[N];
int n=0, m=0;//定义变量
struct users//密码结构
{
char ac[30];//账号
char pw[30];//密码
};
struct users use[50];
void Admin(); //管理员界面
void Hello();//学生界面
void Teacher();//教师界面
void registeruser();//管理员注册
void zhuce();//学生员注册
void tzhuce();//教师注册
void login();//管理员登陆
void denglu();//学生员登陆
void tdenglu(); //教师登陆
void tips();//管理员提示
void tishi();//学生提示
void ttishi();//教师提示
void load();//调取数据
int resh();//刷新数据
void seek();//查询管理员、教师系统
void chaxun();//查询学生系统
void modify();//修改
void insert();//添加
void del();//删除
void display();//显示
void Exit();//退出
void tuichu();
void save();//保存
void interaction(); //交互
int menu();//管理员菜单
int caidan();//学生菜单
int tcaidan();//教师菜单
int main();//主函数
void Admin() //管理员注册登录
{
int se;
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│***学生信息管理系统管理员登录界面***│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("\t\t1.管理员系统账户注册\n");
printf("\t\t2.管理员系统账户登录\n");
printf("\t\t3.退出界面\n\n");
printf("******************欢迎使用******************\n");
printf("请选择:");
scanf("%d", &se);
switch (se)
{
case 1:
registeruser();//管理员注册调用
break;
case 2:
login();//管理员登录调用
break;
case 3:
tuichu();
break;
default:
printf("\n没有这个选项,请重新选择!\n");
break;
}
}
void Hello() //学生登录
{
int se;
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│***学生信息管理系统学生登录界面***│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("\t\t1.学生系统账户注册\n");
printf("\t\t2.学生系统账户登录\n");
printf("\t\t3.退出界面\n\n");
printf("******************欢迎使用******************\n");
printf("请选择:");
scanf("%d", &se);
switch (se)
{
case 1:
zhuce();//学生注册调用
break;
case 2:
denglu();//学生登录调用
break;
case 3:
tuichu();
break;
default:
printf("\n没有这个选项,请重新选择!\n");
break;
}
}
void Teacher() //教师登录
{
int se;
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│***学生信息管理系统教师登录界面***│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("\t\t1.教师系统账户注册\n");
printf("\t\t2.教师系统账户登录\n");
printf("\t\t3.退出界面\n\n");
printf("******************欢迎使用******************\n");
printf("请选择:");
scanf("%d", &se);
switch (se)
{
case 1:
tzhuce();//教师注册调用
break;
case 2:
tdenglu();//教师登录调用
break;
case 3:
tuichu();
break;
default:
printf("\n没有这个选项,请重新选择!\n");
break;
}
}
void sort()//按学号排序
{
int i,j,k,*p,*q,s;
char temp[LEN+1],ctemp[20];
for(i=0;i<n-1;i++)
{
for(j=n-1;j>i;j--)
if(strcmp(students[i-1].id,students[i].id)>0)//输入学号与前一个比较
{
strcpy(temp,students[i-1].id);
strcpy(students[i-1].id,students[i].id);
strcpy(students[i].id,temp);
strcpy(temp,students[i-1].name);
strcpy(students[i-1].name,students[i].name);
strcpy(students[i].name,temp);//姓名往前一位
p=&students[i-1].age;
q=&students[i].age;
s=*q;
*q=*p;
*p=s;//年龄往前一位
strcpy(temp,students[i-1].sex);
strcpy(students[i-1].sex,students[i].sex);
strcpy(students[i].sex,ctemp);
strcpy(temp,students[i-1].address);
strcpy(students[i-1].address,students[i].address);
strcpy(students[i].address,temp);
strcpy(temp,students[i-1].tele);
strcpy(students[i-1].tele,students[i].tele);
strcpy(students[i].tele,temp);
strcpy(temp,students[i-1].major);
strcpy(students[i-1].major,students[i].major);
strcpy(students[i].major,temp);
strcpy(temp,students[i-1].birthday);
strcpy(students[i-1].birthday,students[i].birthday);
strcpy(students[i].birthday,temp);
}
}
}
void registeruser() //管理员注册
{
char ac[30];
char pw[30],pd[30];
int i, a = 0;
printf("\t\t【注册帐号】\n");
FILE *fp = fopen("管理员账号密码.txt", "ab");
printf("请输入用户账号和密码(账号、密码可以为数字,中文字母,英文字母,符号)\n\n\n");
printf("\t请你输入账号:");
scanf("%s", &ac);
strcpy(use[a].ac, ac);
printf("\n\t请你输入密码:");
scanf( "%s", &pw );
strcpy( use[a].pw, pw );
printf("\n\n\t再次确认密码:");
scanf( "%s", &pd );
if(strcmp(pw,pd)==0)
{
strcpy( use[a].pw, pw );
fprintf(fp, "账号\t密码\n");
fprintf(fp, "%s\t%s\n", use[a].ac, use[a].pw);
printf("\n注册成功!!!\n");
fclose(fp);
}
else printf("注册失败,两次密码不一致,退出系统\n");
}
void zhuce() //学生注册
{
char ac[30];
char pw[30],pd[30];
int i, a = 0;
printf("\t\t【注册帐号】\n");
FILE *fp = fopen("学生账号密码.txt", "ab");
printf("请输入用户账号和密码(账号、密码可以为数字,中文字母,英文字母,符号)\n\n\n");
printf("\t请你输入账号:");
scanf("%s", &ac);
strcpy(use[a].ac, ac);
printf("\n\t请你输入密码:");
scanf( "%s", &pw );
strcpy( use[a].pw, pw );
printf("\n\n\t再次确认密码:");
scanf( "%s", &pd );
if(strcmp(pw,pd)==0)
{
strcpy( use[a].pw, pw );
fprintf(fp, "账号\t密码\n");
fprintf(fp, "%s\t%s\n", use[a].ac, use[a].pw);
printf("\n注册成功!!!\n");
fclose(fp);
}
else printf("注册失败,两次密码不一致,退出系统\n");
}
void tzhuce()
{
char ac[30];
char pw[30],pd[30];
int i, a = 0;
printf("\t\t【注册帐号】\n");
FILE *fp = fopen("教师账号密码.txt", "ab");
printf("请输入用户账号和密码(账号、密码可以为数字,中文字母,英文字母,符号)\n\n\n");
printf("\t请你输入账号:");
scanf("%s", &ac);
strcpy(use[a].ac, ac);
printf("\n\t请你输入密码:");
scanf( "%s", &pw );
strcpy( use[a].pw, pw );
printf("\n\n\t再次确认密码:");
scanf( "%s", &pd);
if(strcmp(pw,pd)==0)
{
strcpy( use[a].pw, pw );
fprintf(fp, "账号\t密码\n");
fprintf(fp, "%s\t%s\n", use[a].ac, use[a].pw);
printf("\n注册成功!!!\n");
fclose(fp);
}
else printf("注册失败,两次密码不一致,退出系统\n");
}
void login() //管理员登录
{
char ac[30];
char ad[30], pw[30];
int i, j, a = 0;
int flag = 0;
printf("--------【登录账号】--------\n");
for (i = 0; i<3; i++)
{
printf("请输入帐号:");
scanf("%s", &ac);
printf("请输入密码:");
scanf("%s", &pw);
FILE *fp;//定义FP指针
fp = fopen( "管理员账号密码.txt", "r+" );//以可读可写的文件打开且必文件须存在
while ( !feof( fp ) )
{
fscanf( fp, "%s %sn", &use[a].ac, &use[a].pw );
if ( (strcmp( ac, use[a].ac ) == 0) && (strcmp( pw, use[a].pw ) == 0) )//调用文件核对账号密码
{
flag = 1;
fclose( fp );
break;
}
a++;
}
if ( flag == 1 )//存在登录成功
{
printf("\n登录成功!");
printf("按任意键进入学生信息管理系统!\n");
system("pause");
while (1)
{
menu();//调用管理员菜单
interaction();
system("pause");
}
}
else {
printf("\n账号或者密码输入错误,你还有%d次机会,请重新输入:\n", 2 - i);
}
}
if (i == 3)
{
printf("登录失败\n");
return;
}
}
void denglu() //学生登录
{
char ac[30];
char ad[30], pw[30];
int i, j, a = 0;
int flag = 0;
printf("--------【登录账号】--------\n");
for (i = 0; i<3; i++)
{
printf("请输入帐号:");
scanf("%s", &ac);
printf("请输入密码:");
scanf("%s", &pw);
FILE *fp;
fp = fopen( "学生账号密码.txt", "r+" );//以可读可写的文件打开且必文件须存在
while ( !feof( fp ) )
{
fscanf( fp, "%s %sn", &use[a].ac, &use[a].pw );
if ( (strcmp( ac, use[a].ac ) == 0) && (strcmp( pw, use[a].pw ) == 0) )
{
flag = 1;
fclose( fp );
break;
}
a++;
}
if ( flag == 1 )
{
printf("\n登录成功!");
printf("按任意键进入学生信息管理系统!\n");
system("pause");
while (1)
{
caidan();//进入学生菜单
interaction();
system("pause");
}
}
else {
printf("\n账号或者密码输入错误,你还有%d次机会,请重新输入:\n", 2 - i);
}
}
if (i == 3)
{
printf("登录失败\n");
return;
}
}
void tdenglu() //教师登录
{
char ac[30];
char ad[30], pw[30];
int i, j, a = 0;
int flag = 0;
printf("--------【登录账号】--------\n");
for (i = 0; i<3; i++)
{
printf("请输入帐号:");
scanf("%s", &ac);
printf("请输入密码:");
scanf("%s", &pw);
FILE *fp;
fp = fopen( "教师账号密码.txt", "r+" );//以可读可写的文件打开且必文件须存在
while ( !feof( fp ) )
{
fscanf( fp, "%s %sn", &use[a].ac, &use[a].pw );
if ( (strcmp( ac, use[a].ac ) == 0) && (strcmp( pw, use[a].pw ) == 0) )
{
flag = 1;
fclose( fp );
break;
}
a++;
}
if ( flag == 1 )
{
printf("\n登录成功!");
printf("按任意键进入学生信息管理系统!\n");
system("pause");
while (1)
{
tcaidan();//调取教师菜单
interaction();
system("pause");
}
}
else {
printf("\n账号或者密码输入错误,你还有%d次机会,请重新输入:\n", 2 - i);
}
}
if (i == 3)
{
printf("登录失败\n");
return;
}
}
void tips() //提示
{
printf("\n 学生管理系统介绍:\n");
printf("\n 本系统由张继文根据C语言学生管理系统来延伸设计的,所用语言只有C语言,文件的保存调取均以C语言的编码完成,保存在.txt文件下\n");
printf("\n1.注册的账号和密码信息在txt文件下,忘记密码后可使用cat命令查看存放账号密码的txt文件;\n");
printf("\n2.第一次使用要看清所有功能所对应的选项;\n");
printf("\n3.首次进入系统后请您先添加学生信息;\n");
printf("\n4.为了防止文件丢失可以保存多次不重名文件;\n");
printf("\n5.添加信息后记得保存在.txt文件下;\n");
printf("\n6.谢谢您的使用!\n");
printf("\n 退出帮助请按0\n");
int a;
scanf("%d",&a);
switch(a)
{
case 0:
return;
default:
printf("输入错误!");
}
}
void tishi()
{
printf("\n 学生管理系统介绍:\n");
printf("\n 本系统由张继文根据C语言学生管理系统来延伸设计的,所用语言只有C语言,文件的保存调取均以C语言的编码完成,保存在.txt文件下\n");
printf("\n1.注册的账号和密码信息在txt文件下,忘记密码后可使用cat命令查看存放账号密码的txt文件;\n");
printf("\n2.第一次使用要看清所有功能所对应的选项;\n");
printf("\n3.进入系统后学生可以根据窗口查找自己想要的信息;\n");
printf("\n4.系统内没有删除保存权限对学生开放;\n");
printf("\n5.注意使用规范,如有修改需要,请联系管理员老师;\n");
printf("\n6.谢谢使用!\n");
printf("\n 退出帮助请按0\n");
int a;
scanf("%d",&a);
switch(a)
{
case 0:
return;
default:
printf("输入错误!");
}
}
void load() //读取
{
char filename[20];
FILE *fp;
int i=0;
printf("请输入已经存有学生信息的文件名:\n");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL) //以可读写方式打开文件,该文件必须存在
{
printf("打开文件%s错误",filename);
system("pause");
return;
}
while(fscanf(fp,"%s %s %d %s %s %s %s %s\n",students[i].name,students[i].id,&students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday)==8)//调取的格式
{
i++;
}
n=i;
printf("读入成功\n");
fclose(fp);
system("pause");
}
int resh()
{
char filename[LEN + 1];
int i = 0;
printf("请输入要刷新学生信息的文件名:\n");
scanf("%s", filename);
int j = 0;
FILE * fp;
if ((fp = fopen(filename, "r")) == NULL) return 0;
//从文件读取信息
while(fscanf(fp,"%s %s %d %s %s %s %s %s\n",students[i].name,students[i].id,&students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday)==8) //显示格式
{
j++;
}
n = j;
printf("刷新成功!!!");
return n;
}
void seek() //管理员、教师查询
{
int i,item,flag;//变量
char s1[20];
printf("----------------------\n");
printf("-----1.按学号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.按住址查询-----\n");
printf("-----4.按生日查询-----\n");
printf("-----5.按专业查询-----\n");
printf("-----6. 退出 -----\n");
printf("----------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("Please enter the student's school id:\n");
printf("请输入查询学生的学号:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].id,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);//查询后显示的格式
}
if(flag==0)
printf("未找到!\n");
break;
case 2:
printf("Please enter the name of the student:\n");
printf("请输入查询学生的姓名:\n");
scanf("%s",&s1);
for(i=0;i<n;i++)
if(strcmp(students[i].name,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 3:
printf("Please enter the address of the student:\n");
printf("请输入查询学生的住址:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].address,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 4:
printf("Please enter the student's birthday:\n");
printf("请输入查询学生的生日:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].birthday,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 5:
printf("Please enter the student's major:\n");
printf("请输入查询学生的专业:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].major,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 6:return;
default:printf("請在1-6之間選擇\n");
}
}
}
void chaxun() //学生查询
{
int i,item,flag;//变量
char s1[20];
printf("----------------------\n");
printf("-----1.按学号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.按专业查询-----\n");
printf("-----4. 退出 -----\n");
printf("----------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("Please enter the student's school id:\n");
printf("请输入查询学生的学号:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].id,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 2:
printf("Please enter the name of the student:\n");
printf("请输入查询学生的姓名:\n");
scanf("%s",&s1);
for(i=0;i<n;i++)
if(strcmp(students[i].name,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 3:
printf("Please enter the student's major:\n");
printf("请输入查询学生的专业:\n");
scanf("%s",&s1);
getchar();
for(i=0;i<n;i++)
if(strcmp(students[i].major,s1)==0)
{
flag=1;
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________\n");
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
if(flag==0)
printf("未找到!\n");
break;
case 4:return;
default:printf("請在1-4之間選擇\n");
}
}
}
void modify() //管理员权限修改
{
int i,item,num;//变量
int a;
char s1[LEN+1],s2[LEN+1],s3[LEN+1],s4[LEN+1],s5[LEN+1],s6[LEN+1],s7[LEN+1],s8[LEN+1];//组长度
printf("学生学号修改:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(students[i].id,s1)==0)
{
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改学号\n");
printf("3.修改年龄\n");
printf("4.修改性别\n");
printf("5.修改住址\n");
printf("6.修改电话\n");
printf("7.修改专业\n");
printf("8.修改生日\n");
printf("9.退出\n");
printf("------------------\n");
while(1)
{
printf("请选择菜单编号:");
scanf("%d",&item);
switch(item)
{
case 1:
printf("Please enter a new name:\n");
printf("请输入新的姓名:\n");
scanf("%s",s2);
strcpy(students[num].name,s2); break;
case 2:
printf("Please enter a new id:\n");
printf("请输入新的学号:\n");
scanf("%s",s2);
students[num].id;break;
case 3:
printf("Please enter a new age:\n");
printf("请输入新的年龄:\n");
scanf("%s",s3);
students[num].age=a;break;
case 4:
printf("Please enter a new sex:\n");
printf("请输入新的性别:\n");
scanf("%s",s4);
strcpy(students[num].sex,s4);break;
case 5:
printf("Please enter a new address:\n");
printf("请输入新的住址:\n");
scanf("%s",s5);
strcpy(students[num].address,s5);break;
case 6:
printf("Please enter a new telephone:\n");
printf("请输入新的电话:\n");
scanf("%s",s6);
strcpy(students[num].tele,s6);break;
case 7:
printf("Please enter a new major:\n");
printf("请输入新的专业:\n");
scanf("%s",s7);
strcpy(students[num].major,s7);break;
case 8:
printf("Please enter a new birthday:\n");
printf("请输入新的生日:\n");
scanf("%s",s8);
strcpy(students[num].birthday,s8);break;
case 9: return;
default:printf("请在1-9之间选择\n");
}
}
}
}
void insert() //添加
{
int j=n,i,flag;//变量
printf("请输入待增加的学生数:\n");
scanf("%d",&m);
if(m>0)
{
do
{
flag=1;
while(flag)
{
flag=0;
printf("请输入第%d位学生的学号(查重):\n",j+1);
scanf("%s",students[j].id);
for(i=0;i<j;i++)
if(strcmp(students[j].id,students[i].id)==0)
{
printf("已有该学号,请重新录入\n");
flag=1;
break;
}
}
printf("Please enter %d student name:\n",j+1);
printf("请输入第 %d 个学生姓名:\n",j+1);
scanf("%s",&students[j].name);
printf("Please enter %d student jd:\n",j+1);
printf("请输入第 %d 个学生学号:\n",j+1);
scanf("%s",&students[j].id);
printf("Please enter %d student age:\n",j+1);
printf("请输入第 %d 个学生年龄:\n",j+1);
scanf("%d",&students[j].age);
printf("Please enter %d student sex:\n",j+1);
printf("请输入第 %d 个学生性别:\n",j+1);
scanf("%s",&students[j].sex);
printf("Please nter%d student address:\n",j+1);
printf("请输入第 %d 个学生住址:\n",j+1);
scanf("%s",&students[j].address);
printf("Please enter%d student telephone:\n",j+1);
printf("请输入第 %d 个学生电话:\n",j+1);
scanf("%s",&students[j].tele);
printf("Please enter %d student major:\n",j+1);
printf("请输入第 %d 个学生专业:\n",j+1);
scanf("%s",&students[j].major);
printf("Please enter %d student bjrthday:\n",j+1);
printf("请输入第 %d 个学生生日:\n",j+1);
scanf("%s",&students[j].birthday);
if(0==flag)
{
j++;//先取J的值做计算,再自加
}
}
while(j<n+m);
}
n+=m;
printf("信息增加完毕!\n\n");
system("pause");
}
void del() //删除
{
int i,j,flag=0;
char s1[20];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(students[i].id,s1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
students[j]=students[j+1];
}
if(flag==0)
printf("该学号不存在!\n");
if(flag==1)
{
printf("删除成功,显示结果请选择菜单\n");
n--;//n自减之前的值
}
system("pause");
}
void display() //显示
{
int i;
printf("共有%d位学生的信息:\n",n);
if(0!=n)
{
printf("%s\t %-8s %-8s %-8s %-14s %-11s %-8s %-8s\n","姓名","学号","年龄","性别","住址","电话","专业","生日");
printf("________________________________________________________________________________________________________________\n");
for(i=0;i<n;i++)
{
printf("%s\t %-8s %-8d %-8s %-14s %-11s %-8s %-6s\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday);
}
}
else
{
printf("未找到学生信息\n");
}
return;
int a;
scanf("%d",&a);
if(a==0)
system("pause");
}
void xianshi()//显示
{
int i;
printf("共有%d位学生的信息:\n",n);
if(0!=n)
{
printf("%s\t %-8s %-8s %-8s\n","姓名","学号","年龄","性别");
printf("________________________________________________________________________________________________________________\n");
for(i=0;i<n;i++)
{
printf("%s\t %-8s %-8d %-8s \n",students[i].name,students[i].id,students[i].age,
students[i].sex);
}
}
else
{
printf("未找到学生信息\n");
}
return;
int a;
scanf("%d",&a);
if(a==0)
system("pause");
}
void Exit()//退出系统
{
puts("\n谢谢使用\n");
exit(0);
}
void tuichu()//退出子系统,返回登录界面
{
int input=0;
while(input !=9)
{
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│*****学生信息管理系统登录界面*****│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 1.管理员登录 ┃\n");
printf("┃ @ 2.教师登录 ┃\n");
printf("┃ @ 3.学生登录 ┃\n");
printf("┃ @ 4.退出系统 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 1:Admin();break;
case 2:Teacher();break;
case 3:Hello();break;
case 4:Exit();break;
}
}
}
void save() //保存
{
int i;
FILE *fp;
char filename[20];//字符数组
printf("请命名要保存该信息的文件名:\n");
scanf("%s",filename);
fp=fopen(filename,"w");//可读
fprintf(fp,"姓名","学号","年龄","性别","住址","电话","专业","生日");
for(i=0;i<n;i++)
{
fprintf(fp,"%s\t %s\t %d\t %s\t %s\t %s\t %s\t %s\t\n",students[i].name,students[i].id,students[i].age,
students[i].sex,students[i].address,students[i].tele,students[i].major,students[i].birthday );
}
printf("保存成功\n");
fclose(fp);
return;
}
int menu()//管理员菜单
{
int input=0;
while(input !=9)
{
printf(" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
printf(" #$ 学生管理系统(管理员版) $#\n \n");
printf(" #$ Student management system $#\n \n");
printf(" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 0.提示 Tips ┃\n");
printf("┃ @ 1.调取数据 Load data ┃\n");
printf("┃ @ 2.刷新资料 Refresh data ┃\n");
printf("┃ @ 3.寻找信息 Seek information ┃\n");
printf("┃ @ 4.更改数据 Change data ┃\n");
printf("┃ @ 5.添加信息 Add information ┃\n");
printf("┃ @ 6.删除信息 Delete information ┃\n");
printf("┃ @ 7.显示数据 Display data ┃\n");
printf("┃ @ 8.保存数据 Save data ┃\n");
printf("┃ @ 9.退出系统 Exit the system ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 0:tips();break;
case 1:load();break;
case 2:resh();break;
case 3:seek();break;
case 4:modify();break;
case 5:insert();break;
case 6:del();break;
case 7:display();break;
case 8:save();break;
case 9:tuichu();break;
default:
printf("选择错误!因为不存在此项选择!\n");
system("pause");
break;
}
}
}
int tcaidan()// 教师菜单
{
int input=0;
while(input !=7)
{
printf(" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
printf(" #$ 学生管理系统(教师版) $#\n \n");
printf(" #$ Student management system $#\n \n");
printf(" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 0.提示 Tips ┃\n");
printf("┃ @ 1.调取数据 Load data ┃\n");
printf("┃ @ 2.刷新资料 Refresh data ┃\n");
printf("┃ @ 3.寻找信息 Seek information ┃\n");
printf("┃ @ 4.添加信息 Add information ┃\n");
printf("┃ @ 5.显示数据 Display data ┃\n");
printf("┃ @ 6.保存数据 Save data ┃\n");
printf("┃ @ 7.退出系统 Exit the system ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 0:tips();break;
case 1:load();break;
case 2:resh();break;
case 3:seek();break;
case 4:insert();break;
case 5:display();break;
case 6:save();break;
case 7:tuichu();break;
default:
printf("选择错误!因为不存在此项选择!\n");
system("pause");
break;
}
}
}
int caidan() // 学生菜单
{
int input=0;
while(input !=5)
{
printf(" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
printf(" #$ 学生管理系统 (学生版) $#\n \n");
printf(" #$ Student management system $#\n \n");
printf(" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 0.提示 Tips ┃\n");
printf("┃ @ 1.调取数据 Load data ┃\n");
printf("┃ @ 2.刷新资料 Refresh data ┃\n");
printf("┃ @ 3.寻找信息 Seek information ┃\n");
printf("┃ @ 4.显示数据 Display data ┃\n");
printf("┃ @ 5.退出系统 Exit the system ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 0:tishi();break;
case 1:load();break;
case 2:resh();break;
case 3:chaxun();break;
case 4:xianshi();break;
case 5:tuichu();break;
}
}
}
void interaction() //连接系统
{
int choice;
switch (choice)
{
case 0:
printf("--------【@ 0.提示 Tips】------------------------\n");
tips();
break;
case 1:
printf("--------【@ 1.调取数据 Load data】---------------\n");
load();
break;
case 2:
printf("--------【 @ 2.刷新资料 Refresh data 】----------\n");
resh();
break;
case 3:
printf("--------【@ 3.寻找信息 Seek information】--------\n");
seek();
break;
case 4:
printf("--------【@ 4.更改数据 Change data】-------------\n");
modify();
break;
case 5:
printf("--------【 @ 5.添加信息 Add information】--------\n");
insert();
break;
case 6:
printf("--------【@ 6.删除信息 Delete information】------\n");
del();
break;
case 7:
printf("--------【@ 7.显示数据 Display data 】--------\n");
display();
break;
case 8:
printf("--------【@ 8.保存数据 Save data】--------\n");
save();
break;
case 9:
printf("--------【@ 9.退出系统 Exit the system (按Enter后退出系统)】--------\n");
system("pause");
exit(0);
break;
default:
printf("选择错误,请重新输入\n");
break;
}
}
int main()
{
int input=0;
while(input !=9)
{
printf("╭== □══■════■□■□═□══■□■==╮\n");
printf("│*****学生信息管理系统登录界面*****│\n");
printf("╰═■□■□════■□■══□══■□═══■╯\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃ @ 1.管理员登录 ┃\n");
printf("┃ @ 2.教师登录 ┃\n");
printf("┃ @ 3.学生登录 ┃\n");
printf("┃ @ 4.退出系统 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf(" 请选择菜单编号: ");
scanf("%d",&input);
switch(input)
{
case 1:Admin();break;
case 2:Teacher();break;
case 3:Hello();break;
case 4:Exit();break;
}
}
}
运行结果一类的就不展示了,这没必要自己可以运行一下
总结
注意!!!
这里我的代码基本算是在交论文时已经提交过了,切记使用标明出处,事关重大,入库的东西用的时候注意要标明出处。
东西不是很难理解后可以自己写出来的!!!!!