1、c语言做的学生管理系统/*Copyright (c) 2012,陈长佑*All right reserved*文件名称:log_menu.c*文件标识:*摘 要:本文件放置了登录函数,功能是登录到管理员主菜单或学生主菜单,* 管理员账户固定,登录前加载密码,学生登录前先加载学生信息,然后匹配学生用户名和密码。*版 本:1.0*作 者:陈长佑*完成日期:2012年8月4日*/#includegloble.hvoid loger()/登录函数 int m=0; int i=0; int y=310909;/固定的管理员账户 char st32;/把加载的管理员密码放到该数组中 char str32
2、;/把输入密码放到该数组中 node_p head=create_headnode();/创建头结点 strcpy(st,load_manege_key();/75加载管理员密码 head=load_stu(head);/加载学生信息 for(i=0;inext; if(sp!=NULL) while(sp!=NULL) if(m=sp-stu.num)&(strcmp(str,sp-stu.key)=0)/验证学生学号和密码 break; sp=sp-next; if(sp!=NULL) student_menu(head,m);/进入学生菜单 else printf(系统不存在这用户!n)
3、; if(inext=NULL; return head; node_p create_node()/创建空结点,无指向 node_p headp; headp=(node_p)malloc(sizeof(node_t); if(headp=NULL) exit(1); headp-next = NULL; return headp;node_p input_data()/输入学生信息 node_p headp; static int k; k=add_num(); headp=create_node(); if(headp=NULL) printf(内存分配失败n); headp-stu.n
4、um=k; printf(自动生成学号n); printf(%d,headp-stu.num); printf(请输入姓名n); scanf(%s,headp-stu.name); getchar(); printf(请输入密码n); scanf(%s,headp-stu.key); getchar(); printf(请输入年龄n); if(headp-stu.agestu.age150) printf(输入); /* else printf(请输入学生名字 密码 年龄 班级n); scanf(%s %s %d %d,headp-stu.name,headp-stu.key,&headp-s
5、tu.age,&headp-stu.classes); getchar(); printf(请输入数学 语文 c语言成绩:n); scanf(%d %d %d,&headp-stu.grade.math,&headp-stu.grade.chinese,&headp-stu.grade.c); */ k+; return headp;int add_num()/学号自增函数 int a=301; int b,c,d,t; printf(请设置学号的年级 班级 第一个学生的编号n); scanf(%d %d %d,&b,&c,&d); getchar(); t=a*1000000+b*10000
6、+c*100+d; return t;node_p insert_node(node_p head,node_p headp)/把结点插入到链表中去 headp-next=head-next; head-next=headp; return head; node_p add_stu(node_p head)/增加学生信息 int n; int i; node_p headp; printf(输入学生人数n); scanf(%d,&n); getchar(); if(head=NULL) exit(1); for(i=0;inext; while(headp!=NULL) fwrite(&hea
7、dp-stu,sizeof(STU),1,fp); headp=headp-next; printf(保存学生信息成功n); fclose(fp); flag=0; getchar(); return head;node_p load_stu(node_p head)/加载学生信息 FILE* fp; if(head=NULL) exit(1); node_p p=head-next; while(p!=NULL) head-next = p-next; free(p); p-next=NULL; p = head-next; if(fp=fopen(stb,rt)=NULL) printf(
8、不能打开文件n); exit(1); node_p headp =create_node(); while(fread(&headp-stu,sizeof(STU),1,fp)=1) printf(学号=%d,姓名=%s,密码=%s,年龄=%d,班级=%dn,headp-stu.num,headp-stu.name,headp-stu.key,headp-stu.age,headp-stu.classes); printf(数学=%d,语文=%d,c语言=%dn,headp-stu.grade.math,headp-stu.grade.chinese,headp-stu.grade.c); h
9、ead=insert_node(head,headp); headp =create_node(); fclose(fp); flag=0; printf(加载学生信息成功n); getchar(); return head;node_p delete_stu(node_p head)/删除学生信息 int n; node_p headp; if(head=NULL) exit(1); headp=head-next; if(headp=NULL) exit(1); printf(请输入删除学生的学号:n); scanf(%d,&n); getchar(); if(headp!=NULL) w
10、hile(headp!=NULL) if(n=headp-stu.num) break; head=head-next; headp=headp-next; if(headp!=NULL) head-next=headp-next; free(headp); headp-next=NULL; printf(删除学生信息成功n); flag=1; else printf(系统不存在这用户!n); return head;node_p modify_stu(node_p head)/修改学生信息 int i; int choice; while(1) system(clear); printf(=
11、n); printf(1:修改学生成绩n); printf(2:修改学生姓名n); printf(3:修改学生班级n); printf(0:返回上一级菜单n); printf(=n); printf(请选择:n); i=scanf(%d,&choice); while(i=0) printf(输入错误,请重新输入:n); while(getchar()!=n);/清空键盘缓冲 i=scanf(%d,&choice); getchar();/去掉换行符 switch(choice) case 1: modify_score(head); break; case 2: modify_name(he
12、ad); break; case 3: modify_classes(head); break; case 0: return head; default: printf(输入不对,请重新输入:); break; getchar(); flag=1; return head;void search_stu(node_p head) int i; int choice; while(1) system(clear); printf(=n); printf(1:按姓名查询学生信息n); printf(2:按班级查询学生信息n); printf(3:按总成绩排名查询学生信息n); printf(0:
13、返回上一级菜单n); printf(=n); printf(请选择:n); i=scanf(%d,&choice); while(i=0) printf(输入错误,请重新输入:n); while(getchar()!=n);/清空键盘缓冲 i=scanf(%d,&choice);/ getchar();/去掉换行符 switch(choice) case 1: name_search(head); break; case 2: classes_search(head); break; case 3: total_sort_output(head); break; case 0: return;
14、 default: printf(输入不对,请重新输入:); break; getchar(); flag=0; return;void sort_stu(node_p head) int i; int choice; while(1) system(clear); printf(=n); printf(1:根据总成绩显示学生信息n); printf(2:根据排名显示学生信息n); printf(3:根据姓名排名显示学生信息n); printf(0:返回上一级菜单n); printf(=n); printf(请选择:n); i=scanf(%d,&choice); while(i=0) pri
15、ntf(输入错误,请重新输入:n); while(getchar()!=n);/清空键盘缓冲 i=scanf(%d,&choice);/ getchar();/去掉换行符 switch(choice) case 1: total_sort_output(head); break; case 2: rank_output(head); break; case 3: name_sort_output(head); break; case 0: return; default: printf(输入不对,请重新输入:); break; getchar(); flag=0; return;void pr
16、intf_stu(node_p head)/打印学生信息 if(head=NULL) exit(1); node_p headp=head-next; while(headp!=NULL) printf(学号=%d,姓名=%s,密码=%s,年龄=%d,班级=%dn,headp-stu.num,headp-stu.name,headp-stu.key,headp-stu.age,headp-stu.classes); printf(数学=%d,语文=%d,c语言=%dn,headp-stu.grade.math,headp-stu.grade.chinese,headp-stu.grade.c)
17、; headp=headp-next; getchar(); return;void quit_stu(node_p head)/ 退出管理员菜单函数 if(head=NULL) exit(1); if(flag=0) exit(1); if(flag=1) printf(是否保存信息y或n:n); getchar(); if(getchar()=y|getchar()=Y) save_stu(head); exit(1); if(n=getchar()|N=getchar() exit(1); return;void save_manege_key()/保存管理员密码 FILE *fp; c
18、har st32=abcde; if(fp=fopen(sts,wt)=NULL) printf(不能打开文件n); exit(1); fprintf(fp,%s,st); rewind(fp); fclose(fp); printf(保存管理员密码成功n); getchar(); return; char* load_manege_key()/加载管理员密码 FILE *fp; static char st32=; if(fp=fopen(sts,rt)=NULL) printf(不能打开文件n); exit(1); fscanf(fp,%s,st); rewind(fp); fclose(
19、fp); printf(加载管理员密码成功n); return st;void modify_manege_key()/修改管理员密码 FILE *fp; static char snew32=; static char gnew32=; while(1) printf(请输入管理员新密码:n); scanf(%s,snew); getchar(); printf(请再次输入管理员新密码:n); scanf(%s,gnew); if(strcmp(snew,gnew)=0) if(fp=fopen(sts,wt)=NULL) printf(不能打开文件n); exit(1); fprintf(fp,%s,gnew); rewind(fp); fclose(fp);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1