700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 学生信息管理系统C语言单链表文件实现

学生信息管理系统C语言单链表文件实现

时间:2019-06-01 10:21:49

相关推荐

学生信息管理系统C语言单链表文件实现

功能概述:分有教师端和学生端1、录入学生信息 2、排列学生信息

3、修改学生信息 4、删除学生信息

5、查找学生信息 6、修改系统密码

7、获取学生人数 8、统计分数信息

9、重置学生账号 0、退出管理信息大一上用于熟练C语言语法,是程序设计实践期末的大作业。所以代码方面还有许多不尽人意的地方。结构体

//结构体 struct xs{char name[20];//姓名 int age;//年龄 char sex[5];//性别 char tel[20];//电话 char bh[20];//int yy;//英语 int sx;//数学 char zh[20];//账号 char mm[20];//密码 char zy[10];//专业 };struct node{//创建链表 struct node *next;//指针域 struct xs data;};

main函数

int main() {int s;struct node* list=creat();//创建了list链表 PrintMode(); //系统菜单界面 scanf("%d",&s);//选择进入教师端还是学生端 while(s!=0&&s!=1&&s!=2){printf("输入错误请重新输入\n");scanf("%d",&s);}if(s==2){system("cls");//清屏 printf("进入教师系统,请稍后\n");sleep(1);char key[100];dlread(key,"key.txt");//读取教师端的登陆密码文件 read(list,"学生管理系统.txt");//读取文件中的学生信息 gdl(key);//教师端登陆函数,传入密码key int a;while(1){menu();//教师端的菜单 scanf("%d",&a);keydown(a,list,key);//界面选择功能 system("pause");system("cls");write(list,"学生管理系统.txt");//重新将链表的信息写入文件 }}if(s==1){//进入学生端 read(list,"学生管理系统.txt");//读取信息 system("cls");printf("进入学生系统,请稍后\n");sleep(1);//延迟效果 struct xs mem;system("cls");while(1){dawenjinzuimei();//界面 printf("账号:\n");char count[20];scanf("%s",count);//账号输入 printf("密码:\n");char code[20];scanf("%s",code);//密码输入 if(search(list,&mem,count,code)){printf("登录成功!\n");system("pause");system("cls");printf("正在进入系统。。。。。");Sleep(2*1000);system("cls");while(1){studentmenu(mem,list);//选择功能进行 system("cls");}}else{printf("账号或密码错误!\n");system("pause");}system("cls");} if(s==0){system("cls");printf("退出中\n");sleep(1);exit(0);}return 0;}}

链表

struct node* creat(){//用这个创建,直接调用struct node* headnode=(struct node*)malloc(sizeof(struct node));headnode->next=NULL;return headnode;}struct node* list(struct xs data){//存入struct node *newnode=(struct node*)malloc(sizeof(struct node));newnode->next=NULL;newnode->data=data;return newnode;}void cr(struct node *headnode,struct xs data){//增加节点struct node *newnode=list(data);newnode->next=headnode->next;headnode->next=newnode;}

gdl函数用于教师端登录

#include <stdio.h>void gdl(char*key){//登陆界面函数printf("\t╔══════════════════════════════════════════════════════════════╗\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t║ ._______________________.║\n");printf("\t║ | _____________________ |║\n");printf("\t║ | I I |║\n");printf("\t║ | I 教师管理系统 I |║\n");printf("\t║ | I I |║\n");printf("\t║ | I___________________I |║\n");printf("\t║ !_______________________!║\n");printf("\t║ ._[__________]_.║\n");printf("\t║ .___|_______________|___.║\n");printf("\t║ | | ║\n");printf("\t║ | 请输入密码:| ║\n");printf("\t║ !_____________________! ║\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t╚══════════════════════════════════════════════════════════════╝\n");char*m;while(1){m=num();//密码隐藏输入,返回字符串 if(strcmp(m,key)==0){printf("登录成功\n");printf("请稍等............\n");sleep(1);//延迟 system("cls");break;}else{printf("密码错误,重新输入\n");}}}

各个界面函数

void gdyaidawenjin()//学生界面 {printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 信 息 系 统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 请选择编号********\n");printf("\t\t\t****** ********\n");printf("\t\t\t******1. 分 数 信 息********\n");printf("\t\t\t******2. 基 本 信 息********\n");printf("\t\t\t******0. 返 回 上 级********\n");printf("\t\t\t****** ********\n");printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");}void woaidawenjin()//学生界面 {printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 学 生 系 统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 请选择系统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t******1. 修 改 密 码********\n");printf("\t\t\t******2. 查 询 修 改********\n");printf("\t\t\t******0. 退 出 系 统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** ********\n");printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");}void gudeyangaidawenjin()//学生界面 {printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 修 改 系 统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 请选择编号********\n");printf("\t\t\t****** ********\n");printf("\t\t\t******1. 修 改 性 别********\n");printf("\t\t\t******2. 修 改 年 龄********\n");printf("\t\t\t******3. 修 改 账 号********\n");printf("\t\t\t******4. 修 改 电 话********\n");printf("\t\t\t******5. 修 改 密 码********\n");printf("\t\t\t******0. 退 出 菜 单********\n");printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");}

void menu(){//教师主菜单 printf("\n");printf("*****************************************************\n");printf("* 学生信息管理系统 *\n");printf("*****************************************************\n");printf("********************系统功能菜单*********************\n");printf("------------------------------------------------\n");printf("*****************************************************\n");printf("** 1、录入学生信息 *2、排列学生信息**\n");printf("*****************************************************\n");printf("** 3、修改学生信息 *4、删除学生信息**\n");printf("*****************************************************\n");printf("** 5、查找学生信息 *6、修改系统密码**\n");printf("*****************************************************\n");printf("** 7、获取学生人数 *8、统计分数信息**\n");printf("*****************************************************\n");printf("** 9、重置学生账号 *0、退出管理信息**\n");printf("------------------------------------------------\n");}void PrintMode(){//系统菜单页面printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 教 学 系 统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** 请选择系统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t******1. 学 生 系 统********\n");printf("\t\t\t******2. 教 师 系 统********\n");printf("\t\t\t******0. 退 出 系 统********\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** ********\n");printf("\t\t\t****** ********\n");printf("\t\t\t**************************************\n");printf("\t\t\t**************************************\n");}void dawenjinzuimei(){printf("\t╔══════════════════════════════════════════════════════════════╗\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t║ ._______________________.║\n");printf("\t║ | _____________________ |║\n");printf("\t║ | I I |║\n");printf("\t║ | I 学生登陆界面 I |║\n");printf("\t║ | I I |║\n");printf("\t║ | I___________________I |║\n");printf("\t║ !_______________________!║\n");printf("\t║ ._[__________]_.║\n");printf("\t║ .___|_______________|___.║\n");printf("\t║ | | ║\n");printf("\t║ |我爱肖老师| ║\n");printf("\t║ !_____________________! ║\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t║ ║\n");printf("\t╚══════════════════════════════════════════════════════════════╝\n"); }

学生端信息更改函数

void change2(struct node* L,struct xs mem)//信息更改函数 {struct node* p=L->next;int b;//用于选择修改内容 char a[100]; if(p==NULL){printf("你还未创建链表!\n"); return;}else{while(p){system("cls");if(strcmp(mem.bh,p->data.bh)==0 ){printf("查找成功!\n");printf("目前您的信息是 学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 专业:%s 账号:%s 密码:%s\n",p->data.bh,p->data.name,p->data.sex,p->data.tel,p->data.age,p->data.zy,p->data.zh,p->data.mm);system("pause");gudeyangaidawenjin(); printf("请输入您要修改的部分的选项\n");scanf("%d",&b);sc(L,mem.bh);switch(b){ case 1:printf("性别修改为:\n");scanf("%s",&p->data.sex );break;case 2:printf("年龄修改为:\n");scanf("%d",&p->data.age);break;case 3:printf("账号修改为:\n");scanf("%s",&p->data.zh );break;case 4:printf("电话修改为:\n");scanf("%s",&p->data.tel );break;case 5:printf("密码修改为:\n");scanf("%s",&p->data.mm);break;case 0:return;default:printf("选择错误\n");break; }cr(L,p->data);printf("现在您的信息是 学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 专业:%s 账号:%s 密码:%s\n",p->data.bh,p->data.name,p->data.sex,p->data.tel,p->data.age,p->data.zy,p->data.zh,p->data.mm);return;}p=p->next;}if(p==NULL){printf("不存在的学生信息!请检查信息输入是否有误\n");return;}} }

教师端更改函数

void change(struct node* L)//信息更改函数 {struct node* p=L->next;int i;int b;//用于选择修改内容 char a[100]; if(p==NULL){printf("你还未创建链表!\n"); return;}else{printf("您要修改的学生信息的学号是:\n"); scanf("%s",a);while(p){system("cls");if(strcmp(a,p->data.bh)==0 ){printf("查找成功!\n");printf("目前他的信息是 学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 英语成绩:%d 数学成绩:%d 专业:%s\n",p->data.bh,p->data.name,p->data.sex,p->data.tel,p->data.age,p->data.yy,p->data.sx,p->data.zy);zcd();printf("请输入您要修改的部分的选项\n");scanf("%d",&b);switch(b){ case 9:printf("姓名修改为:\n");scanf("%s",&p->data.name);printf("性别修改为:\n");scanf("%s",&p->data.sex);printf("电话修改为:\n");scanf("%s",&p->data.tel);printf("学号修改为:\n");scanf("%s",&p->data.bh);printf("年龄修改为:\n");scanf("%d",&p->data.age); printf("英语成绩修改为:\n");scanf("%d",&p->data.yy);printf("数学成绩修改为:\n");scanf("%d",&p->data.sx); printf("专业修改为:\n");scanf("%s",&p->data.zy); printf("修改成功\n");break;case 1:printf("姓名修改为:\n");scanf("%s",&p->data.name );break;case 2:printf("年龄修改为:\n");scanf("%d",&p->data.age);break;case 3:printf("性别修改为:\n");scanf("%s",&p->data.sex );break;case 4:printf("电话修改为:\n");scanf("%s",&p->data.tel );break;case 5:printf("高等数学成绩修改为:\n");scanf("%d",&p->data.sx);break;case 6:printf("大学英语成绩修改为:\n");scanf("%d",&p->data.yy );break;case 7:printf("学号修改为:\n");scanf("%s",&p->data.bh );break;case 8:printf("专业修改为:\n");scanf("%s",&p->data.zy );break;case 10:return;default:printf("选择错误\n");break; }printf("现在他的信息是 学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 英语成绩:%d 数学成绩:%d 专业:%s\n",p->data.bh,p->data.name,p->data.sex,p->data.tel,p->data.age,p->data.yy,p->data.sx,p->data.zy);return;}p=p->next;}if(p==NULL){printf("不存在的学生信息!请检查信息输入是否有误\n");return;}} }

学生的密码修改函数

void studentmenu(struct xs mem,struct node*list){//界面 woaidawenjin();//学生界面 int n;scanf("%d",&n);system("cls");switch(n){ case 1:{printf("密码修改为:\n");scanf("%s",mem.mm);sc(list,mem.bh);cr(list,mem);write(list,"学生管理系统.txt");break;}case 2:{change2(list,mem); write(list,"学生管理系统.txt");break;}case 0:exit(0);break;}}

教师的密码更改函数

void Pkey(char*key)//密码更改函数 {printf("请输入您想要改为的密码:\n");scanf("%s",key);dlwrite(key,"key.txt");}

密码隐藏输入

char* num()//密码隐藏输入 {char a[100];int i;char m;for(i=0;;i++){m=getch();if(m=='\r'){break;}if(m=='\b'){if(i>0){i--;printf("\b \b");}else{putchar(7);}}else{a[i]=m;printf("*");}}a[i]='\0';printf("\n");return a;}

文件操作

void read(struct node *headnode,char *file){FILE *p=fopen(file,"r");struct xs data;if(p==NULL){p=fopen(file,"w+");}while(fscanf(p, "%s %s %s %s %d %d %d %s %s %s",&data.bh,&data.name,&data.sex,&data.tel,&data.age,&data.sx,&data.yy,&data.zy,&data.zh,&data.mm)!=EOF){cr(headnode,data);}fclose(p);}void write(struct node *headnode,char *file){FILE *p=fopen(file,"w");struct node *move=headnode->next;while(move){fprintf(p, "%s %s %s %s %d %d %d %s %s %s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy,move->data.zh,move->data.mm);move=move->next;}fclose(p);}void dlread(char*key,char*file)//密码文件 {FILE *p=fopen(file,"r");if(p==NULL){p=fopen(key,"w+");}fscanf(p,"%s",key);fclose(p);}void dlwrite(char *key,char*file)//密码读入文件 {FILE *p=fopen(file,"w");fprintf(p,"%s",key);fclose(p);}

交互函数

void keydown(int a,struct node*list,char *key){struct xs data;switch(a){system("cls");case 0:gt();break;case 1:gl(list);break;case 2:pl(list);break;case 3:change(list);break;case 4:gshanchu(list);break;case 5:gsearch(list);break;case 6:Pkey(key);break;case 7:n(list);break;case 8:tj(list);break;case 9:{if(rewrite(list)){printf("重置成功!\n");}break;}default:printf("输入错误");break;}}

查找函数

void gll(struct node*list)//浏览函数{printf("浏览\n");printflist(list);}void gsearch(struct node*list)//分类查找 {int a;char b[100];printf("查找\n");printf("请选择查找的方式\n");printf("1、姓名查找\n");printf("2、学号查找\n");printf("3、浏览全部学生\n");printf("4、专业查找\n");printf("请输入\n");scanf("%d",&a);while(a!=1&&a!=2&&a!=3&&a!=4)//判断乱输入bug {printf("请正确输入\n");scanf("%d",&a);}if(a==1){printf("请输入查找的姓名:\n");scanf("%s",&b);gdy(list,b); }if(a==2){printf("输入您想找的人的学号:\n");scanf("%s",&b);cz(list,b);}if(a==3){gll(list);}if(a==4){printf("输入您想查找的专业:\n");scanf("%s",&b);dwj(list,b); } }void cz(struct node *headnode,char *n){struct node* move=headnode->next;if(move==NULL){printf("数据为空\n");return; }while(strcmp(move->data.bh,n)!=0){move=move->next;if(move==NULL){printf("未找到\n");return;}}if(move!=NULL){printf("您找的人如下\n");printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);}}void dwj(struct node*headnode,char*a)//专业查找 {struct node* move=headnode->next;//接收传来的头节点 if(move==NULL){printf("数据为空\n");//链表为空, return;}int b=1;//判断是否找出来人了 while(1){//找到对应的专业就停止循环 if(move!=NULL&&strcmp(a,move->data.zy )==0){if(b==1){ printf("您找的人如下\n");}printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);b++;//打印几次您找的人 }if(move==NULL){//循环完了if(b!=1)//找到人就不打印未找到 {return;}printf("未找到\n");return;}move=move->next;//指向下一个 }}void gdy(struct node*headnode,char*a)//姓名查找 {struct node* move=headnode->next;//接收传来的头节点 if(move==NULL){printf("数据为空\n");//链表为空, return;}int b=1;//判断是否找出来人了 while(1){//找到对应的姓名就停止循环 if(move!=NULL&&strcmp(a,move->data.name)==0){if(b==1){ printf("您找的人如下\n");}printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);b++;//打印几次您找的人 }if(move==NULL){//循环完了if(b!=1)//找到人就不打印未找到 {return;}printf("未找到\n");return;}move=move->next;//指向下一个 }}

检查学号录入唯一性

int jc(struct node*head,char *a)//检查是否学号重复 {struct node *move=head->next;while(move!=NULL){if(strcmp(move->data.bh,a)==0){printf("输入错误,已存在该学号,将返回主界面\n");system("pause");return 1;//输入错误的话就返回1 }move=move->next;}printf("添加成功\n");return 0;//添加成功返回0 }

录入

void gl(struct node*list)//录入函数 {struct xs data;printf("录入\n");printf("请输入您想输入学生的学号\n");scanf("%s",&data.bh);printf("请输入您想输入学生的姓名\n");scanf("%s",&data.name);printf("请输入您想输入学生的性别\n");scanf("%s",&data.sex);printf("请输入您想输入学生的电话\n");scanf("%s",&data.tel);printf("请输入您想输入学生的年龄\n");scanf("%d",&data.age);printf("请输入您想输入学生的英语成绩\n");scanf("%d",&data.yy);printf("请输入您想输入学生的数学成绩\n");scanf("%d",&data.sx);printf("请输入您想输入学生的专业\n");scanf("%s",&data.zy);int b=jc(list,data.bh);if(b==1){return; }cr(list,data);}

浏览全部

void printflist(struct node* headnode){struct node *move=headnode->next;while(move){printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);move=move->next;}}

对于查找中学生分数信息的函数,写的太拉跨了这段,请谅解

void tj(struct node*list){int a=1;printf("1、查询优秀的人 90以上\n");printf("2、查询良好的人 80以上\n");printf("3、查询及格的人 60以上\n");printf("4、查询不及格的人 60以下\n");printf("请输入您要查询的编号\n");while(a!=2){scanf("%d",&a);switch(a){case 1:youxiu(list);a=2;break;case 2:lh(list);a=2;break;case 3:jg(list);a=2;break;case 4:bjg(list);a=2;default:printf("请重新输入\n");}}}void youxiu(struct node*headnode){struct node* move=headnode->next;//接收传来的头节点 if(move==NULL){printf("数据为空\n");//链表为空, return;}int b=1;//判断是否找出来人了 while(1){//找到对应的就停止循环 if(move!=NULL&&move->data.yy+move->data.sx>=90){if(b==1){ printf("您找的人如下\n");}printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);b++;//打印几次您找的人 }if(move==NULL){//循环完了if(b!=1)//找到人就不打印未找到 {return;}printf("未找到\n");return;}move=move->next;//指向下一个 }}void lh(struct node*headnode){struct node* move=headnode->next;//接收传来的头节点 if(move==NULL){printf("数据为空\n");//链表为空, return;}int b=1;//判断是否找出来人了 while(1){//找到对应的就停止循环 if(move!=NULL&&move->data.yy+move->data.sx<90&&move->data.yy+move->data.sx>=80){if(b==1){ printf("您找的人如下\n");}printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);b++;//打印几次您找的人 }if(move==NULL){//循环完了if(b!=1)//找到人就不打印未找到 {return;}printf("未找到\n");return;}move=move->next;//指向下一个 }}void jg(struct node*headnode){struct node* move=headnode->next;//接收传来的头节点 if(move==NULL){printf("数据为空\n");//链表为空, return;}int b=1;//判断是否找出来人了 while(1){//找到对应的就停止循环 if(move!=NULL&&move->data.yy+move->data.sx>=60){if(b==1){ printf("您找的人如下\n");}printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);b++;//打印几次您找的人 }if(move==NULL){//循环完了if(b!=1)//找到人就不打印未找到 {return;}printf("未找到\n");return;}move=move->next;//指向下一个 }}void bjg(struct node*headnode){struct node* move=headnode->next;//接收传来的头节点 if(move==NULL){printf("数据为空\n");//链表为空, return;}int b=1;//判断是否找出来人了 while(1){//找到对应的就停止循环 if(move!=NULL&&move->data.yy+move->data.sx<60){if(b==1){ printf("您找的人如下\n");}printf("学号:%s 姓名:%s 性别:%s 电话:%s 年龄:%d 高等数学成绩:%d 大学英语成绩:%d 专业:%s\n",move->data.bh,move->data.name,move->data.sex,move->data.tel,move->data.age,move->data.sx,move->data.yy,move->data.zy);b++;//打印几次您找的人 }if(move==NULL){//循环完了if(b!=1)//找到人就不打印未找到 {return;}printf("未找到\n");return;}move=move->next;//指向下一个 }}

一样拉垮的排列

void pl(struct node *list){//选择排列方式 int a,b;printf("1.学号排序\n");printf("2.大学英语成绩从大到小排序\n");printf("3.高数成绩从大到小排序\n");printf("请输入您的选择\n");scanf("%d",&a);while(a!=1&&a!=2&&a!=3){printf("输入错误,请从新输入\n");scanf("%d",&a);}if(a==1){if(line1(list)){printf("排序成功!\n");sleep(1);system("cls");printflist(list);}}if(a==2){if(line2(list)){printf("排序成功!\n");sleep(1);system("cls");printflist(list);}}if(a==3){if(line3(list)){printf("排序成功!\n");sleep(1);system("cls");printflist(list);}}}int line1(struct node*list)//学号 {struct xs a;struct node*pmove=list->next;struct node*pmovefront=list;if(pmove==NULL){printf("学生信息为空!\n");return 0;}else{while(pmove!=NULL){while(pmove->next!=NULL){if(strcmp(pmove->data.bh,pmove->next->data.bh)>0){a.age=pmove->data.age;a.sx=pmove->data.sx;a.yy=pmove->data.yy;strcpy(a.bh,pmove->data.bh);strcpy(a.mm,pmove->data.mm);strcpy(a.name,pmove->data.name);strcpy(a.sex,pmove->data.sex);strcpy(a.tel,pmove->data.tel);strcpy(a.zh,pmove->data.zh);strcpy(a.zy,pmove->data.zy);pmove->data.age=pmove->next->data.age;pmove->data.sx=pmove->next->data.sx;pmove->data.yy=pmove->next->data.yy;strcpy(pmove->data.bh,pmove->next->data.bh);strcpy(pmove->data.mm,pmove->next->data.mm);strcpy(pmove->data.name,pmove->next->data.name);strcpy(pmove->data.sex,pmove->next->data.sex);strcpy(pmove->data.tel,pmove->next->data.tel);strcpy(pmove->data.zh,pmove->next->data.zh);strcpy(pmove->data.zy,pmove->next->data.zy);pmove->next->data.age=a.age;pmove->next->data.sx=a.sx;pmove->next->data.yy=a.yy;strcpy(pmove->next->data.bh,a.bh );strcpy(pmove->next->data.mm,a.mm );strcpy(pmove->next->data.name,a.name );strcpy(pmove->next->data.sex,a.sex );strcpy(pmove->next->data.tel,a.tel );strcpy(pmove->next->data.zh,a.zh );strcpy(pmove->next->data.zy,a.zy );}pmove=pmove->next;}pmove=pmovefront->next;pmovefront=pmove;}return 1;}}int line2(struct node*list)//英语高到低 {struct xs a;struct node*pmove=list->next;struct node*pmovefront=list;if(pmove==NULL){printf("学生信息为空!\n");return 0;}else{while(pmove!=NULL){while(pmove->next!=NULL){if(pmove->data.yy<pmove->next->data.yy){a.age=pmove->data.age;a.sx=pmove->data.sx;a.yy=pmove->data.yy;strcpy(a.bh,pmove->data.bh);strcpy(a.mm,pmove->data.mm);strcpy(a.name,pmove->data.name);strcpy(a.sex,pmove->data.sex);strcpy(a.tel,pmove->data.tel);strcpy(a.zh,pmove->data.zh);strcpy(a.zy,pmove->data.zy);pmove->data.age=pmove->next->data.age;pmove->data.sx=pmove->next->data.sx;pmove->data.yy=pmove->next->data.yy;strcpy(pmove->data.bh,pmove->next->data.bh);strcpy(pmove->data.mm,pmove->next->data.mm);strcpy(pmove->data.name,pmove->next->data.name);strcpy(pmove->data.sex,pmove->next->data.sex);strcpy(pmove->data.tel,pmove->next->data.tel);strcpy(pmove->data.zh,pmove->next->data.zh);strcpy(pmove->data.zy,pmove->next->data.zy);pmove->next->data.age=a.age;pmove->next->data.sx=a.sx;pmove->next->data.yy=a.yy;strcpy(pmove->next->data.bh,a.bh );strcpy(pmove->next->data.mm,a.mm );strcpy(pmove->next->data.name,a.name );strcpy(pmove->next->data.sex,a.sex );strcpy(pmove->next->data.tel,a.tel );strcpy(pmove->next->data.zh,a.zh );strcpy(pmove->next->data.zy,a.zy );}pmove=pmove->next;}pmove=pmovefront->next;pmovefront=pmove;}return 1;}}int line3(struct node*list)//数学高到低 {struct xs a;struct node*pmove=list->next;struct node*pmovefront=list;if(pmove==NULL){printf("学生信息为空!\n");return 0;}else{while(pmove!=NULL){while(pmove->next!=NULL){if(pmove->data.sx<pmove->next->data.sx){a.age=pmove->data.age;a.sx=pmove->data.sx;a.yy=pmove->data.yy;strcpy(a.bh,pmove->data.bh);strcpy(a.mm,pmove->data.mm);strcpy(a.name,pmove->data.name);strcpy(a.sex,pmove->data.sex);strcpy(a.tel,pmove->data.tel);strcpy(a.zh,pmove->data.zh);strcpy(a.zy,pmove->data.zy);pmove->data.age=pmove->next->data.age;pmove->data.sx=pmove->next->data.sx;pmove->data.yy=pmove->next->data.yy;strcpy(pmove->data.bh,pmove->next->data.bh);strcpy(pmove->data.mm,pmove->next->data.mm);strcpy(pmove->data.name,pmove->next->data.name);strcpy(pmove->data.sex,pmove->next->data.sex);strcpy(pmove->data.tel,pmove->next->data.tel);strcpy(pmove->data.zh,pmove->next->data.zh);strcpy(pmove->data.zy,pmove->next->data.zy);pmove->next->data.age=a.age;pmove->next->data.sx=a.sx;pmove->next->data.yy=a.yy;strcpy(pmove->next->data.bh,a.bh );strcpy(pmove->next->data.mm,a.mm );strcpy(pmove->next->data.name,a.name );strcpy(pmove->next->data.sex,a.sex );strcpy(pmove->next->data.tel,a.tel );strcpy(pmove->next->data.zh,a.zh );strcpy(pmove->next->data.zy,a.zy );}pmove=pmove->next;}pmove=pmovefront->next;pmovefront=pmove;}return 1;}}

重置功能

int rewrite(struct node*list){struct node*pmove=list->next;if(pmove==NULL){printf("学生信息为空!\n");return 0;}else{printf("默认初始账号为学号!\n");printf("请输入初始化密码:\n");char a[20]; scanf("%s",a);while(pmove){strcpy(pmove->data.zh,pmove->data.bh);strcpy(pmove->data.mm,a);pmove=pmove->next;}return 1;}}

删除

void gshanchu(struct node*list){char a[100];printf("删除\n");printf("输入想删除的人的学号\n");scanf("%s",a);sc(list,a);}void sc(struct node *headnode,char *n){struct node* move=headnode->next;struct node* movef=headnode;if(move==NULL){printf("数据为空,无法删除\n");return;}while(strcmp(move->data.bh,n)!=0){movef=move;move=move->next;if(move==NULL){printf("未找到此人\n");return;}//移动结构体指针 }movef->next=move->next;free(move);}

学生端个人查找

int search(struct node*list,struct xs *mem,char *count,char *code)//判断账号密码是否正确并传值给结构体 {struct node*pmove=list->next;if(pmove==NULL){return 0;}else{while(pmove){if(strcmp(pmove->data.zh,count)==0&&strcmp(pmove->data.mm,code)==0){mem->age=pmove->data.age;mem->yy=pmove->data.yy;mem->sx=pmove->data.sx;strcpy(mem->name,pmove->data.name);strcpy(mem->sex,pmove->data.sex);strcpy(mem->tel,pmove->data.tel);strcpy(mem->bh,pmove->data.bh);strcpy(mem->zh,pmove->data.zh);strcpy(mem->mm,pmove->data.mm);strcpy(mem->zy,pmove->data.zy);return 1;}pmove=pmove->next;}printf("输入错误\n");return 0;}}

这是加的一个拉垮功能,主要是看着功能多一点的假象,分高一点

​void n(struct node *list){int a=0;struct node *move=list->next;while(move){a++;move=move->next;}printf("已录入的学生的人数:");printf("%d\n",a);}​

退出程序

​void gt()//退出函数 {printf("退出\n");system("pause");exit(0);}​

其中一些功能都是在CSDN上面先理解别人怎么做到的,自己才学会写的。

这个程序已经答辩过了,老师给了89分。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。