收藏 分享(赏)

C语言大作业(成绩管理系统).doc

上传人:精品资料 文档编号:10733660 上传时间:2020-01-03 格式:DOC 页数:48 大小:240KB
下载 相关 举报
C语言大作业(成绩管理系统).doc_第1页
第1页 / 共48页
C语言大作业(成绩管理系统).doc_第2页
第2页 / 共48页
C语言大作业(成绩管理系统).doc_第3页
第3页 / 共48页
C语言大作业(成绩管理系统).doc_第4页
第4页 / 共48页
C语言大作业(成绩管理系统).doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、计算机科学学院计算机科学与应用系 C 程序设计报告成 绩 管 理 系 统 设 计学生姓名:* *学 号:1004681082班 级:计 科 102指导老师:* *报告日期: 2011-02-161.题目与要求1)问题提出本人计划编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。2)本系统涉及的知识点单链表、结构体、函数、循环、指针、选择3)功能要求(1)建立学生信息,每个学生的信息包括:学号、姓名、成绩。(2)求出每个学生的总分和平均分。(3)查找:根据学号、姓名、成绩、总分、平均分中任一项查询该生的基本信息。(4)排序:根据学号或总分将学生的信息按照一定的顺序进行排序。(5)根据

2、需要修改学生的基本信息。(6)根据实际情况删除某生的信息。(7)根据实际情况插入某生的信息。(8)输出。2.功能设计1)算法设计(1)利用 switch 语句设计如图所示的主菜单。图 1 学生信息管理系统主菜单请输入选项编号1查 找2排 序3学生信息的修改4链表的删除5链表的插入6链表的输出7退 出(2)选择 1 后,调用查找函数 search,进入查找函数后利用 switch 语句实现如图所示的查找子菜单。该菜单中每个选项调用一个函数(除选项 10 外) 。图 2 查找子菜单查找菜单请输入选项编号1按学号查找2按姓名查找3按 C 语言分数查找4按高数分数查找5按英语分数查找6按总分查找7按平

3、均分查找8总分前三名9不及格者10班级成绩情况11退出(3)选项 2 后, 调用排序函数 arrange,进入查找函数后利用 switch 语句实现如图所示的查找子菜单。该菜单中每个每个选项调用一个函数(除 3 外) 。排序菜单 输入选项编号1按学号排序2按总分排序3退 出图 3 排序子菜单(4)选择 3 后,调用修改函数 correct,修改某个学生的信息。(5)选择 4 后,调用删除函数 del,根据需要删除某个学生的信息。(6)选择 5 后,调用插入函数 insert,根据需要插入某个学生的信息。(7)选择 6 后,调用输出函数 output,将每个学生的信息全部输出。(8)选择 7 后

4、,退出学生信息管理系统。(9)根据所选菜单编号编写相应代码。(a)函数 welcome:欢迎用户使用。(b)函数 about: 简要介绍本程序。(c)函数 create:创建单链表,采用循环输入的方式输入学生的基本信息。(d)函数 SnoSearch:根据学号查找,输出该生的基本信息。(e)函数 NameSearch:根据姓名查找,输出该生的基本信息。(f)函数 CYuYanSearch:根据 C 语言成绩成绩查找,输出该生的基本信息。(g)函数 GaoShuSearch:根据高数成绩查找,输出该生的基本信息。(h)函数 YingYuSearch:根据英语成绩查找,输出该生的基本信息。(i)函

5、数 ZongFenSearch:根据总分查找,输出该生的基本信息。(j)函数 AverageSearch:根据平均分查找,输出该生的基本信息。(k)函数 QSMSearch:查看班级前三名学生信息情况。(l)函数 BuJiGeSearch:查看班级不及格学生信息情况。成绩菜单 输入选项编号1C 语言不及格者2高数不及格者3英语不及格者4不及格者5全不及格者6退出图 4 成绩子菜单(m)函数 ClassScore:查看班级成绩平均分整体情况。(n)函数 SnoArrange:按照学号将学生信息进行排序。(o)函数 ZongFenArrange:按照总分将学生信息进行排序。(n)函数 over:感

6、谢用户使用。2)画模块图主模块显示欢迎界 面按 C语言不及格者查 找显示程序介 绍输 入成 绩查 找排 序修改学生信 息按学号查找按姓名查找按成绩查找按总分查找按平均分查 找按高数不及格者查 找pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3结束3)画部分模块的流程图pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3a=pnew-snoN Yp-next=NULL输入学生信息输入学生信息开始删除学生信 息输出学生信 息显示

7、结束界 面插入学生信 息按前三名查 找 按不及格查 找 按学号排序 按总分排序 按英语不及格者查 找按不及格者查 找按全不及格者查 找图 5 成绩管理系统模块图图 6 creat 函数流程图开始输入 at+t=num+1图 7 SnoSearch 函数流程图a=p-sno输出学生信息结束YNYp=p-nextN开始输入 bt=0;flag=0;p=head;t+t=num+1flag=0 k=0flag=1输出学生信息p=p-next结束开始s=0;r=0;w=0;t=0m=0;n=0;p=head;s!=nums+tscorep=head;s=0s!=numY NYNYNYN图 8 Name

8、Search 函数流程图 YN图 9 QSMSearch 函数流程图t=p-scorep=p-nexts+YNt=p-score输出学生信息Yp=p-nextNp=head结束开始p=head输入 ba=1Yn=1Na1 /判断学生信息输入是否结束(学号是否为 0)struct student *p,*pnew; /结构体指针指向结点(4)说明:学生的人数不受限制,输入结束符号即可。5.search 函数:(1)函数原型:void search()(2)功能:通过选项来选择调用不同函数,完成不同的功能。(3)变量及类型:int m,n; /switch 选择变量6.SnoSearch 函数:(

9、1)函数原型:void SnoSearch()(2)功能:通过学号来查找该生的基本信息。(3)变量及类型:int a,t; /a 用来存储学号;t 用来计数,以便跳出循环struct student *p; /指针 p 用于指向头结点7.NameSearch 函数:(1)函数原型:void NameSearch()(2)功能:通过姓名来查找该生的基本信息。(3)变量及类型:int k,t,flag; /k 用于判断;t 用于计数; flag 起标记作用char b20; /数组 b 用于存放姓名struct student *p; /指针 p 用于指向头结点8.CYuYanSearch 函数:

10、(1)函数原型:void CYuYanSearch()(2)功能:通过 C 语言成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t 用于计数;flag 起标记作用float a; /a 用于存放 C 语言成绩struct student *p; /指针 p 用于指向头结点9.GaoShuSearch 函数:(1)函数原型:void GaoShuSearch()(2)功能:通过高数成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t 用于计数;flag 起标记作用float b; /b 用于存放高数成绩struct student *p; /指针 p 用

11、于指向头结点10.YingYuSearch 函数:(1)函数原型:void YingYuSearch()(2)功能:通过英语成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t 用于计数;flag 起标记作用float c; /c 用于存放英语成绩struct student *p; /指针 p 用于指向头结点11.ZongfenSearch 函数:(1)函数原型:void ZongfenSearch()(2)功能:通过总分来查找该生的基本信息。(3)变量及类型:int t,flag; /t 用于计数;flag 起标记作用float d; /d 用于存放总分struct s

12、tudent *p; /指针 p 用于指向头结点12.AverageSearch 函数:(1)函数原型:void AverageSearch()(2)功能:通过平均分来查找该生的基本信息。(3)变量及类型:int t,flag; /t 用于计数;flag 起标记作用float e; /e 用于存放平均分struct student *p; /指针 p 用于指向头结点13.QSMSearch 函数:(1)函数原型:void QSMSearch()(2)功能:显示前三名的基本信息(3)变量及类型:int s=0,r=0,w=0; /s,r,w 均用做计数float t=0,m=0,n=0; /t,

13、m,n 均用做记录最高分struct student *p; /指针 p 用于指向头结点14. BuJiGeSearch 函数:(1)函数原型:void BuJiGeSearch()(2)功能:通过 switch 选择输出不及格情况。(3)变量及类型:int n,m,r,s,t,k,h,flag; /n,m 为 switch 选择变量;r,s,t,k,h 用做计数;flag 起标记作用struct student *p; /指针 p 用于指向头结点15.ClassScore 函数:(1)函数原型:void ClassScore()(2)功能:查看班级成绩的整体情况。(3)变量及类型:int i

14、; /i 用于 for 循环float a=0,b=0,c=0,d,e; /a,b,c,d,e 均用于中间变量struct student *p; /指针 p 用于指向头结点16.arrange 函数:(1)函数原型:void arrange()(2)功能:通过选项来选择调用不同函数,完成不同的功能。(3)变量及类型:int a,m; /a,m 均为 switch 选择变量;17.SnoArrange 函数:(1)函数原型:void SnoArrange()(2)功能:将学生信息按照学号进行排序。(3)变量及类型:int a,c,i,j; /a 为 switch 选择变量;c 用于计数;i,j

15、 用于 for 循环struct student *p,*q,*k,*newp,*newhead; /指针 p,q,k,newp,newhead 均用于创建新链表18.ZongFenArrange 函数:(1)函数原型:void ZongFenArrange()(2)功能:将学生信息按照总分进行排序。(3)变量及类型:int a,c,i,j; /a 为 switch 选择变量;c 用于计数;i,j 用于 for 循环struct student *p,*q,*k,*newp,*newhead; /指针 p,q,k,newp,newhead 均用于创建新链表19. correct 函数:(1)函

16、数原型:void correct()(2)功能:修改某生的信息。(3)变量及类型:int t,a,b,m,flag; / t 用于计数;a 用于判断 ;b,m 为 switch 选择变量;flag 起标记作用struct student *p; /指针 p 用于指向头结点20.del 函数:(1)函数原型:void del()(2)功能:删除单链表中某生的基本信息。(3)变量及类型:int a,n,i,j; /a 存放要删除的结点;n 为 switch 选择变量;i,j 用于 for 循环struct student *p; /指针 p 用于指向头结点21.insert 函数:(1)函数原型:

17、void insert()(2)功能:将某生的基本信息插入单链表中。(3)变量及类型: int a,n,i,j; / a 存放要插入的结点;n 为 switch 选择变量;i,j 用于 for 循环struct student *p,*q; /指针 p 用于指向头结点;指针 q 用于指向新生信息的结点22.output 函数:(1)函数原型:void output()(2)功能:输出每个学生的基本信息。(3)变量及类型:int s=0; /s 用于计数struct student *p /指针 p 用于指向头结点23.over 函数:(1)函数原型:void over()(2)功能:显示感谢用

18、户使用界面。4.C 程序设计总结(1)程序调试情况在编写完程序后,执行时总会出现很多错误,便又重新检查程序,改写程序,再经过不断的调试,最终将程序改写完成。(2)本人在程序中的感想程序在编写时总是感觉非常难,而且还会出现很多小错误,从而导致出很多麻烦,最终经过耐心检查,才将问题解决。5.结束语由于本人完成此程序是在家中完成,又无网络可以查询,故只能参考课本,在本人的独立下完成此程序,在此须感谢白燕老师。6.参考文献1尹业安 白燕.C 语言程序设计.国防科技大学出版社,2008.87.附录:程序清单#include#include#includevoid welcome();void about

19、();void create();void search();void SnoSearch();void NameSearch();void CYuYanSearch();void GaoShuSearch();void YingYuSearch();void ZongFenSearch();void AverageSearch();void QSMSearch();void BuJiGeSearch();void ClassScore();void arrange();void SnoArrange();void ZongFenArrange();void correct();void de

20、l();void insert();void output();void over();struct studentint sno;char name20;float score1;float score2;float score3;float score;double avg;struct student *next;struct student *head;int num=0;void main()int m,n;welcome();about();system(“cls“);create();system(“cls“);Z: printf(“1查找n“);printf(“2排序n“);p

21、rintf(“3学生信息的修改n“);printf(“4链表的删除n“);printf(“5链表的插入n“);printf(“6链表的输出n“);printf(“7退出n“);scanf(“%d“,switch(n)case 1:system(“cls“);search();system(“cls“);goto Z;case 2:system(“cls“);arrange();system(“cls“);goto Z;case 3:system(“cls“);correct();system(“cls“);goto Z;case 4:system(“cls“);del();system(“cl

22、s“);goto Z;case 5:system(“cls“);insert();system(“cls“);goto Z;case 6:system(“cls“);output();system(“cls“);goto Z;case 7:system(“cls“);F: printf(“你真的想退出吗n 1是 2否 n“);scanf(“%d“,switch(m)case 1:break;case 2:goto Z;default:system(“cls“);printf(“你的输入有误n“);goto F;break;default:system(“cls“);printf(“你的输入有误

23、n“);goto Z;system(“cls“);over();void welcome()printf(“nnn“);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“);p

24、rintf(“ 【】【】n“);getchar();void about()system(“cls“);printf(“nnn“);printf(“ttt 关于学生管理系统的说明nnn“);printf(“ 本程序采用链表和函数编写完成,主要功能有查找,链表的删除,链表的插入和链表的输出.n“);printf(“程序中主要运用链表部分和函数的知识.程序优点是:学生人数可以根据实际情况进行更改;n 缺点是: 部分程序过于复杂,程序功能不太齐全;“);printf(“本程序已经经过多次测试,尚未出现问题.nn 若在使用中出现错误,还请谅解 !“);getchar();void create()in

25、t a=0;struct student *p,*pnew;head=pnew=p=(struct student *)malloc(sizeof(struct student);printf(“请依次输入每位同学的学号,姓名和 3 门成绩,按 0 键结束n“);printf(“ 学号 姓名 C 语言 高数 英语n“) ;scanf(“%d%s%f%f%f“,pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3.0;pnew-avg=(double)( (int)(pnew-avg*100)*0.01 );wh

26、ile(1)num+;p-next=pnew;p=pnew;pnew=(struct student *)malloc(sizeof(struct student);scanf(“%d“,if(a=pnew-sno)break;scanf(“%s%f%f%f“,pnew-name,pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3.0;pnew-avg=(double)( (int)(pnew-avg*100)*0.01 );p-next =NULL; void search()int m,n;A: prin

27、tf(“1按学号查找n“); printf(“2按姓名查找n“);printf(“3按 C 语言分数查找n“);printf(“4按高数分数查找n“);printf(“5按英语分数查找n“);printf(“6按总分查找n“);printf(“7按平均分查找n“);printf(“8总分前三名n“);printf(“9不及格者n“);printf(“10班级成绩情况n“);printf(“11退出n“);scanf(“%d“,switch(n)case 1:SnoSearch();goto A;case 2:NameSearch();goto A;case 3:CYuYanSearch();g

28、oto A;case 4:GaoShuSearch();goto A;case 5:YingYuSearch();goto A;case 6:ZongFenSearch();goto A;case 7:AverageSearch();goto A;case 8:QSMSearch();goto A;case 9:BuJiGeSearch();goto A;case 10:ClassScore();goto A;case 11:system(“cls“);D: printf(“你真的想退出吗n 1是 2否 n“);scanf(“%d“,switch(m)case 1:break;case 2:g

29、oto A;default:system(“cls“);printf(“你的输入有误n“);goto D;break;default:system(“cls“);printf(“你的输入有误n“);goto A;void SnoSearch()int a,t;struct student *p;system(“cls“);printf(“请输入学号:“);S: scanf(“%d“,t=0;p=head;printf(“n 学号为%d 的成绩如下:n“,a);printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);while(1) t+;if(t=num+1)system(“c

30、ls“);printf(“你输入的学号有误n 请重新输入学号:“);goto S;if(a=p-sno)printf(“%d %s %.2f %.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);break;p=p-next;printf(“nnn“);void NameSearch()int k,t,flag;char b20;struct student *p;system(“cls“);printf(“请输入姓名:“);T: scanf(“%s“,b);t=0;flag=0;p=head

31、;printf(“n 姓名为%s 的成绩如下 :n“,b);printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);while(1)t+;if(t=num+1)if(flag=0)system(“cls“);printf(“你输入的姓名有误n 请重新输入姓名:“);goto T;elsebreak;k=strcmp(p-name,b);if(k=0)flag=1;printf(“%d %s %.2f %.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;pri

32、ntf(“nnn“);void CYuYanSearch()int t,flag;float a;struct student *p;system(“cls“);printf(“请输入 C 语言成绩:“);U: scanf(“%f“,t=0;flag=0;p=head;printf(“nC 语言成绩为%.2f 的成绩如下:n“,a);printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);while(1)t+;if(t=num+1)if(flag=0)system(“cls“);printf(“你输入的 C 语言成绩有误n 请重新输入 C 语言成绩:“);goto U;else

33、break;if(a=p-score1)flag=1;printf(“%d %s %.2f %.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(“nnn“);void GaoShuSearch()int t,flag;float b;struct student *p;system(“cls“);printf(“请输入高数成绩:“);V: scanf(“%f“,t=0;flag=0;p=head;printf(“n 高数成绩为%.2f 的成绩如下:n“,b);

34、printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);while(1)t+;if(t=num+1)if(flag=0)system(“cls“);printf(“你输入的高数成绩有误n 请重新输入高数成绩 :“);goto V;elsebreak;if(b=p-score2)flag=1;printf(“%d %s %.2f %.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(“nnn“);void YingYuSearch()int t,f

35、lag;float c;struct student *p;system(“cls“);printf(“请输入英语成绩:“);W: scanf(“%f“,t=0;flag=0;p=head;printf(“n 英语成绩为%.2f 的成绩如下:n“,c);printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);while(1)t+;if(t=num+1)if(flag=0)system(“cls“);printf(“你输入的英语成绩有误n 请重新输入英语成绩 :“);goto W;elsebreak;if(c=p-score3)flag=1;printf(“%d %s %.2f

36、%.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(“nnn“);void ZongFenSearch()int t,flag;float d;struct student *p;system(“cls“);printf(“请输入总分成绩:“);X: scanf(“%f“,t=0;flag=0;p=head;printf(“n 总分成绩为%.2f 的成绩如下:n“,d);printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);while(1)t

37、+;if(t=num+1)if(flag=0)system(“cls“);printf(“你输入的总分成绩有误n 请重新输入总分成绩 :“);goto X;elsebreak;if(d=p-score)flag=1;printf(“%d %s %.2f %.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(“nnn“);void AverageSearch()int t,flag;double e;struct student *p;system(“cls“);

38、printf(“请输入平均分成绩:“);Y: scanf(“%lf“,t=0;flag=0;p=head;printf(“n 平均分为%.2f 的成绩如下:n“,e);printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);while(1)t+;if(t=num+1)if(flag=0)system(“cls“);printf(“你输入的平均分成绩有误n 请重新输入平均分成绩 :“);goto Y;elsebreak;if(e=p-avg)flag=1;printf(“%d %s %.2f %.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1

39、,p-score2,p-score3,p-score,p-avg);p=p-next;printf(“nnn“);void QSMSearch()int s=0,r=0,w=0;float t=0,m=0,n=0;struct student *p;p=head;system(“cls“);while(s!=num)s+;if(tscore)t=p-score;p=p-next;printf(“前三名成绩如下:n“);printf(“ 学号 姓名 C 语言 高数 英语 总分 平均分n“);p=head;s=0;while(s!=num)s+;if(t=p-score)printf(“%d %s %.2f %.2f %.2f %.2f %.2lfn“,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;p=head;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报