1、C语言课程设计学生成绩管理系统封面作者:PanHongliang仅供个人学习#include stdio.h#include string.h#include stdlib.h#include conio.h#include string.h#include fcntl.htypedef struct student int num。 char grade10。 char classroom10。 char name10。 float score_math。 float score_chinese。 float score_english。 float average。 float sum。S
2、TU。typedef struct Node STU data。 struct Node *next。*linklist。void menu()。char *loginpassword(char password,int n)。/登录验证密码函数声明/linklist createstulist(linklist head)。 /创建学生链表即学生信息录入函数声明/void printstulist(linklist head)。 /学生信息输出函数声明/void searchstu_namelist(linklist head)。 /学生信息查询函数声明(按姓名)/void searchst
3、u_numlist(linklist head)。 /学生信息查询函数声明(按学号)linklist modifystulist(linklist head)。 /学生信息修改函数声明/linklist delatestulist(linklist head)。 /学生信息删除函数声明/void savestulist(linklist head)。 /学生信息保存到文件函数声明/linklist loadstulist()。 /从文件中读取学生信息函数声明/void sortstulist(linklist head)。 /成绩排名函数(按年级)声明/void sort(STU stu,in
4、t flag)。 /学生分班函数声明/void sortstuclass(linklist head)。 /成绩排名函数(按班级)声明/*/void main() char admin=zhangqiong。 char password=123456。 char person20。 char password110。 int i。 int j=0。 printf(*n)。 printf(tt *欢迎来到学生成绩管理系统*nn)。 printf(*nn)。 printf(tttt用户登录nnnn)。 for(i=0。i3。i+) printf(用户名: )。 gets(person)。 fflu
5、sh(stdin)。 printf(nnn)。 loginpassword(password1,10)。 printf(nnn)。 if(strcmp(admin,person)=0&strcmp(password,password1)=0) printf(tttt成功登录,亲!n)。 printf(nn)。 printf(按任意键继续!)。 getch()。 menu()。 break。 else printf(t用户名或者密码输入错误n)。 if(i=3) printf(t对不起,您今天输入次数太多,已被强制退出!n)。/*/*/ char *loginpassword(char pass
6、word,int n) /登录密码函数,隐藏密码可见/ int i=0。 int m=0。 char ch。 printf(用户密码:)。 while(ch=getch()!=r&mnext=NULL。 int ch。 do printf(t -*-*-*-nn)。 printf(ttt*学生成绩管理系统*nn)。 printf(t -*-*-*-nnnnn)。 printf(t1.录入学生成绩信息nt2.输出学生成绩信息nt3.按学号查找学生信息nt4.按姓名查找学生信息nt5.修改学生信息nt6.删除学生信息nt7.保存学生信息到文件nt8.从文件中读取学生信息nt9.年级总成绩排序nt1
7、0.班级总成绩排序nt11.退出n)。 printf(nn)。 printf(请输入您要查询的工程:n)。 scanf(%d,&ch)。 switch(ch) case 1:system(cls)。 createstulist(L)。 break。 case 2:system(cls)。 printstulist(L)。 break。 case 3: system(cls)。 searchstu_numlist(L)。 break。 case 4: system(cls)。 searchstu_namelist(L)。 break。 case 5: system(cls)。 modifystu
8、list(L)。 break。 case 6: system(cls)。 delatestulist( L)。 break。 case 7: system(cls)。 savestulist(L)。 break。 case 8: system(cls)。 L=loadstulist()。 break。 case 9: system(cls)。 sortstulist(L)。 break。 case 10: system(cls)。 sortstuclass(L)。 break。 case 11:system(cls)。 exit(0)。 while(1)。/*/linklist creates
9、tulist(linklist L) /录入信息函数/ linklist p,q。 char ch。 q=L。 printf(*请输入学生信息*nnn)。 do p=(linklist)malloc(sizeof(Node)。 if(!p) printf(没有多余内存空间n)。 return L。 printf(请输入学号:n)。 scanf(%d,&p-data.num)。 printf(请输入姓名:n)。 scanf(%s,&p-data.name)。 printf(请输入年级:n)。 scanf(%s,&p-data.grade)。 printf(请输入班级:n)。 scanf(%s,&
10、p-data.classroom)。 printf(请输入数学成绩:n)。 scanf(%f,&p-data.score_math)。 while(p-data.score_math100) printf(成绩超过100了,你是猪吗?n)。 printf(给老子重新输入:n)。 scanf(%f,&p-data.score_math)。 printf(请输入语文成绩:n)。 scanf(%f,&p-data.score_chinese)。 while(p-data.score_chinese100) printf(成绩超过100了,你是猪吗?n)。 printf(给老子重新输入:n)。 sca
11、nf(%f,&p-data.score_chinese)。 printf(请输入英语成绩:n)。 scanf(%f,&p-data.score_english)。 while(p-data.score_english100) printf(成绩超过100了,你是猪吗?n)。 printf(给老子重新输入:n)。 scanf(%f,&p-data.score_english)。 p-data.sum=p-data.score_math+p-data.score_chinese+p-data.score_english。 p-data.average=p-data.sum/3。 q-next=p。
12、 q=p。 q-next=NULL。 printf(是否要输入下一个学生的信息(Y/N)!)。 fflush(stdin)。 ch=getchar()。 system(cls)。 while(ch=Y|ch=y)。 return(L)。/*/void printstulist(linklist L) /输出信息函数/ linklist p。 p=L-next。 if(p=NULL) printf(请先录入学生信息,亲!n)。 else while(p!=NULL) printf(学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩n)。 printf(%6d %3s %2s %2s %4.1f
13、 %4.1f %4.1f %4.1f %4.1fn,p-data.num,p-data.name,p-data.grade,p-data.classroom,p-data.score_math,p-data.score_chinese,p-data.score_english,p-data.sum,p-data.average)。 p=p-next。 printf(按任意键继续n)。 getch()。 system(cls)。/*/void searchstu_namelist(linklist L) /按姓名查询函数/ linklist p。 char str10。 printf(请输入要查
14、询的学生姓名:n)。 scanf(%s,str)。 p=L-next。 if(p=NULL) printf(请先录入学生信息n)。 while(p!=NULL) if(strcmp(p-data.name,str)=0) printf(学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩n)。 printf(%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1fn,p-data.num,p-data.name,p-data.grade,p-data.classroom,p-data.score_math,p-data.score_chinese,p-data
15、.score_english,p-data.sum,p-data.average)。 p=p-next。 printf(按任意键继续n)。 getch()。 system(cls)。/*/void searchstu_numlist(linklist L) /按学号查询函数/ linklist p。 int number。 printf(请输入要查询的学生学号:n)。 scanf(%d,&number)。 p=L-next。 if(p=NULL) printf(请先录入学生信息n)。 while(p!=NULL) if(p-data.num=number) printf(学号姓名年级班级数学成
16、绩语文成绩英语成绩总分平均成绩n)。 printf(%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1fn,p-data.num,p-data.name,p-data.grade,p-data.classroom,p-data.score_math,p-data.score_chinese,p-data.score_english,p-data.sum,p-data.average)。 p=p-next。 printf(按任意键继续n)。 getch()。 system(cls)。 /*/ linklist delatestulist(linklist L
17、) /删除信息函数/ linklist p,q。 int number。 char ch。 printf(请输入要删除的学生学号:n)。 scanf(%d,&number)。 p=L-next。 if(p=NULL) printf(请先录入学生信息n)。 return NULL。 while(p!=NULL) if(p-data.num=number) printf(学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩n)。 printf(%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1fn,p-data.num,p-data.name,p-data.g
18、rade,p-data.classroom,p-data.score_math,p-data.score_chinese,p-data.score_english,p-data.sum,p-data.average)。 printf(确定要删除该学生的信息吗?(Y/N)n)。 fflush(stdin)。 ch=getchar()。 if(ch=Y|ch=y) q=L。 while(q-next!=p) q=q-next。 if(q-next=p) if(p-next=NULL) q-next=NULL。 else q-next=p-next。 free(p)。 printf(已删除该学生的相
19、关信息!n)。 return(L)。 else return NULL。 else p=p-next。 printf(按任意键继续n)。 getch()。 system(cls)。 /*/ void savestulist(linklist L) /存盘函数/ FILE *fp。 linklist p。 char outfile20。 printf(请输入你要保存信息的文件名:(例如:D:学生管理系统student.text)n)。 scanf(%s,outfile)。 if(fp=fopen(outfile,w)=NULL) printf(文件打开失败n)。 exit(1)。 p=L。 wh
20、ile(p!=NULL) fwrite(p,sizeof(Node),1,fp)。 p=p-next。 fclose(fp)。 printf(信息保存成功!n)。 printf(请按任意键继续n)。 getch()。 system(cls)。 /*/ linklist loadstulist() /读盘函数/ linklist q,p,L。 L=NULL。 FILE *fp。 char infile20。 printf(请输入要打开的文件名:n)。 scanf(%s,infile)。 if(fp=fopen(infile,rb)=NULL) printf(文件打开失败!n)。 exit(1)。
21、 printf(正在打开文件.n)。 p=(linklist)malloc(sizeof(Node)。 if(!p) printf(无法申请到内存空间)。 return L。 L=p。 while(!feof(fp) if(fread(p,sizeof(Node),1,fp)!=1) printf(读取信息失败!n)。 break。 p-next=(linklist)malloc(sizeof(Node)。 if(!p-next) printf(无法申请到内存空间)。 return L。 q=p。 p=p-next。 q-next=NULL。 fclose(fp)。 printf(读取成功!n
22、)。 return L。 /*/ void sortstulist(linklist L) /年级排序函数/ STU stu1000。 int i=0。 int flag=0。 linklist p。 p=L-next。 if(p=NULL) printf(请先录入学生信息,亲!n)。 while(p!=NULL&idata。 i+。 p=p-next。 flag+。 printf(正在排序.n)。 sort(stu, flag)。 /*/ void sort(STU stu,int flag) int i,j。 STU temp。 for(i=1。iflag。i+) for(j=0。jstu
23、j+1.sum) temp=stuj。 stuj=stuj+1。 stuj+1=temp。 printf(学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩n)。 for(i=flag-1。i=0。i-) printf(%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1fn,stui.num,stui.name,stui.grade,stui.classroom,stui.score_math,stui.score_chinese,stui.score_english,stui.sum,stui.average)。 printf(按任意键继续!n)。 getch()。 system(cls)。 /*/void sortstuclass(linklist L) /班级排序函数/ STU stu1000。 int i=0。 STU c1100,c2100,c3100,c4100,c5100,c6100,c7100,c8100。 int flag=0,flag1=0,flag2=0,flag3=0,flag4=0,flag5=0,flag6=0,flag7=0,f
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1