C语言大作业(成绩管理系统).pdf
《C语言大作业(成绩管理系统).pdf》由会员分享,可在线阅读,更多相关《C语言大作业(成绩管理系统).pdf(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机科学学院计算机科学与应用系计算机科学学院计算机科学与应用系 C C 程序设计报告程序设计报告成成 绩绩 管管 理理 系系 统统 设设 计计学生姓名:学生姓名:*学学号:号:10046810821004681082班班级:计级:计科科 102102指导老师:指导老师:*报告日期:报告日期:2011-02-162011-02-16481.1.题目与要求题目与要求1 1)问题提出)问题提出本人计划编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。2 2)本系统涉及的知识点)本系统涉及的知识点单链表、结构体、函数、循环、指针、选择3 3)功能要求)功能要求(1)建立学生信息,每个学生
2、的信息包括:学号、姓名、成绩。(2)求出每个学生的总分和平均分。(3)查找:根据学号、姓名、成绩、总分、平均分中任一项查询该生的基本信息。(4)排序:根据学号或总分将学生的信息按照一定的顺序进行排序。(5)根据需要修改学生的基本信息。(6)根据实际情况删除某生的信息。(7)根据实际情况插入某生的信息。(8)输出。2.2.功能设计功能设计1 1)算法设计)算法设计(1)利用 switch 语句设计如图所示的主菜单。请输入选项编号1查找2排序3学生信息的修改4链表的删除48图图 1 1 学生信息管理系统主菜单学生信息管理系统主菜单5链表的插入6链表的输出7退出(2)选择 1 后,调用查找函数 se
3、arch,进入查找函数后利用 switch 语句实现如图所示的查找子菜单。该菜单中每个选项调用一个函数(除选项 10 外)。查找菜单请输入选项编号1按学号查找2按姓名查找3按 C 语言分数查找4按高数分数查找5按英语分数查找6按总分查找7按平均分查找8总分前三名9不及格者4810班级成绩情况11退出图图 2 2 查找子菜单查找子菜单(3)选项 2 后,调用排序函数 arrange,进入查找函数后利用 switch 语句实现如图所示的查找子菜单。该菜单中每个每个选项调用一个函数(除 3 外)。排序菜单输入选项编号1按学号排序2按总分排序3退出图图 3 3排序子菜单排序子菜单(4)选择 3 后,调
4、用修改函数 correct,修改某个学生的信息。(5)选择 4 后,调用删除函数 del,根据需要删除某个学生的信息。48(6)选择 5 后,调用插入函数 insert,根据需要插入某个学生的信息。(7)选择 6 后,调用输出函数 output,将每个学生的信息全部输出。(8)选择 7 后,退出学生信息管理系统。(9)根据所选菜单编号编写相应代码。(a)函数 welcome:欢迎用户使用。(b)函数 about:简要介绍本程序。(c)函数 create:创建单链表,采用循环输入的方式输入学生的基本信息。(d)函数 SnoSearch:根据学号查找,输出该生的基本信息。(e)函数 NameSea
5、rch:根据姓名查找,输出该生的基本信息。(f)函数 CYuYanSearch:根据 C 语言成绩成绩查找,输出该生的基本信息。(g)函数 GaoShuSearch:根据高数成绩查找,输出该生的基本信息。(h)函数 YingYuSearch:根据英语成绩查找,输出该生的基本信息。(i)函数 ZongFenSearch:根据总分查找,输出该生的基本信息。(j)函数 AverageSearch:根据平均分查找,输出该生的基本信息。(k)函数 QSMSearch:查看班级前三名学生信息情况。(l)函数 BuJiGeSearch:查看班级不及格学生信息情况。成绩菜单输入选项编号1C 语言不及格者2高数
6、不及格者3英语不及格者4不及格者5全不及格者6退出图图 4 4成绩子菜单成绩子菜单(m)函数 ClassScore:查看班级成绩平均分整体情况。48(n)函数 SnoArrange:按照学号将学生信息进行排序。(o)函数 ZongFenArrange:按照总分将学生信息进行排序。(n)函数 over:感谢用户使用。2)2)画模块图画模块图显按示欢学号显按示程姓名输按入成绩查按找总分修按改学平均删按除学前三插按入学不及按C 语言不及格者按高数不及格者按英语不及格者48主模re3;输出学按学号按不及格者查 找显示结按总分按全不及格图图 5 5 成绩管理系统模块图成绩管理系统模块图者查3 3)画部分
7、模块的流程图)画部分模块的流程图开始输 入 学 生pnew-score=pnew-score1+pnew-score2+pnew-scoa=pnew-N输入学生信p-next=NULL结束pnew-score=pnew-score1+pnew-score2+pnew-score3;48图图 6 6creatcreat函数流程图函数流程图开始输入 at+48图图 7 7SnoSearchSnoSearch函数流程图函数流程图d;开始输 出 学 生NYp=p-nea=p-Nt=nuY结束输t=0;flag=0;p=hea48开始图图 8 8NameSearchNameSearch函数流程图函数流程
8、图p=p-ne输出学生结束flag=1NYflag=NYk=Yt=nut+Ns=0;r=0;w=0;t=0m=0;n=0;p=head48Ys+tNYt=p-scorep=p-next图图 9 9QSMSearchQSMSearch函数流程图函数流程图Ns!=p=head;s=Ns!=Ys+t=p-sNY输出学生p=heap=p-next结束48开始p=h输NaYa1&anexnYi=nNNa=nuNi!=aNYp=p-nextj=j!=Yp=p-nexti+j+48结num=num-1p-next=p-next-nep-next=NULL图图 1010deldel 函数流程图函数流程图3.3
9、.程序代码设计程序代码设计1.main1.main 函数:函数:(1)函数原型:void main()(2)功能:分别调用 welcome 函数、about 函数、create 函数、search 函数、del 函数、insert 函数、output 函数和 over 函数。(3)变量及类型:int m,n;/switch 选择变量(4)说明:main 函数中用到 system(cls),其作用是清除屏幕上的文字。2.welcome2.welcome函数:函数:(1)函数原型:void welcome()(2)功能:显示欢迎用户使用界面。(3)说明:getchar()函数用于使屏幕停止,按下
10、Enter 键后再执行下面程序。3.about3.about 函数:函数:(1)函数原型:void about()(2)功能:简要介绍本程序。(3)说明:getchar()函数用于使屏幕停止,按下 Enter 键后再执行下面程序。4.create4.create函数函数:(1)函数原型:void create()(2)功能:利用单链表、while 循环和 scanf 函数完成对学生信息的输入(学号、姓名、三门成绩),并计算出总分和平均分,再存入单链表中。(3)变量及类型:48int a=0;/判断学生信息输入是否结束(学号是否为 0)struct student*p,*pnew;/结构体指针指
11、向结点(4)说明:学生的人数不受限制,输入结束符号即可。5.search5.search 函数函数:(1)函数原型:void search()(2)功能:通过选项来选择调用不同函数,完成不同的功能。(3)变量及类型:int m,n;/switch 选择变量6.SnoSearch6.SnoSearch函数:函数:(1)函数原型:void SnoSearch()(2)功能:通过学号来查找该生的基本信息。(3)变量及类型:int a,t;/a 用来存储学号;t 用来计数,以便跳出循环struct student*p;/指针 p 用于指向头结点7.NameSearch7.NameSearch函数:函数
12、:(1)函数原型:void NameSearch()(2)功能:通过姓名来查找该生的基本信息。(3)变量及类型:int k,t,flag;/k 用于判断;t 用于计数;flag 起标记作用char b20;/数组 b 用于存放姓名struct student*p;/指针 p 用于指向头结点8.CYuYanSearch8.CYuYanSearch函数:函数:(1)函数原型:void CYuYanSearch()(2)功能:通过 C 语言成绩来查找该生的基本信息。(3)变量及类型:int t,flag;/t 用于计数;flag 起标记作用float a;/a 用于存放 C 语言成绩48struct
13、 student*p;/指针 p 用于指向头结点9.GaoShuSearch9.GaoShuSearch函数:函数:(1)函数原型:void GaoShuSearch()(2)功能:通过高数成绩来查找该生的基本信息。(3)变量及类型:int t,flag;/t 用于计数;flag 起标记作用float b;/b 用于存放高数成绩struct student*p;/指针 p 用于指向头结点10.YingYuSearch10.YingYuSearch函数:函数:(1)函数原型:void YingYuSearch()(2)功能:通过英语成绩来查找该生的基本信息。(3)变量及类型:int t,flag
14、;/t 用于计数;flag 起标记作用float c;/c 用于存放英语成绩struct student*p;/指针 p 用于指向头结点11.ZongfenSearch11.ZongfenSearch函数:函数:(1)函数原型:void ZongfenSearch()(2)功能:通过总分来查找该生的基本信息。(3)变量及类型:int t,flag;/t 用于计数;flag 起标记作用float d;/d 用于存放总分struct student*p;/指针 p 用于指向头结点12.AverageSearch12.AverageSearch函数:函数:(1)函数原型:void AverageSe
15、arch()(2)功能:通过平均分来查找该生的基本信息。(3)变量及类型:int t,flag;/t 用于计数;flag 起标记作用float e;/e 用于存放平均分48struct student*p;/指针 p 用于指向头结点13.QSMSearch13.QSMSearch函数:函数:(1)函数原型:void QSMSearch()(2)功能:显示前三名的基本信息(3)变量及类型:int s=0,r=0,w=0;/s,r,w均用做计数float t=0,m=0,n=0;/t,m,n 均用做记录最高分struct student*p;/指针 p 用于指向头结点14.14.BuJiGeSea
16、rchBuJiGeSearch函数:函数:(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.ClassScore15.ClassScore函数:函数:(1)函数原型:void ClassScore()(2)功能:查看班级成绩的整体情况。(3)变量及类型:int i;/i 用于 for 循环float a=0,b=0,c=0,d
17、,e;/a,b,c,d,e 均用于中间变量struct student*p;/指针 p 用于指向头结点16.arrange16.arrange函数:函数:(1)函数原型:void arrange()(2)功能:通过选项来选择调用不同函数,完成不同的功能。(3)变量及类型:int a,m;/a,m 均为 switch 选择变量;17.SnoArrange17.SnoArrange函数:函数:(1)函数原型:void SnoArrange()48(2)功能:将学生信息按照学号进行排序。(3)变量及类型:int a,c,i,j;/a 为 switch 选择变量;c 用于计数;i,j 用于 for 循
18、环struct student*p,*q,*k,*newp,*newhead;18.ZongFenArrange18.ZongFenArrange函数:函数:(1)函数原型:void ZongFenArrange()(2)功能:将学生信息按照总分进行排序。(3)变量及类型:int a,c,i,j;/a 为 switch 选择变量;c 用于计数;i,j 用于 for 循环struct student*p,*q,*k,*newp,*newhead;19.correct19.correct函数:函数:(1)函数原型:void correct()(2)功能:修改某生的信息。(3)变量及类型:int t
19、,a,b,m,flag;/t 用于计数;a 用于判断;b,m 为 switch 选择变量;flag 起标记作用struct student*p;/指针 p 用于指向头结点20.del20.del 函数:函数:(1)函数原型:void del()(2)功能:删除单链表中某生的基本信息。(3)变量及类型:int a,n,i,j;/a 存放要删除的结点;n 为 switch 选择变量;i,j 用于 for 循环struct student*p;/指针 p 用于指向头结点21.insert21.insert 函数:函数:(1)函数原型:void insert()(2)功能:将某生的基本信息插入单链表中
20、。(3)变量及类型:int a,n,i,j;/a 存放要插入的结点;n 为 switch 选择变量;i,j 用于 for 循环struct student*p,*q;/指针 p 用于指向头结点;指针 q 用于指向新生信息的结点/指针 p,q,k,newp,newhead 均用于创建新链表/指针 p,q,k,newp,newhead 均用于创建新链表4822.output22.output函数:函数:(1)函数原型:void output()(2)功能:输出每个学生的基本信息。(3)变量及类型:int s=0;/s 用于计数struct student*p/指针 p 用于指向头结点23.over
21、23.over 函数:函数:(1)函数原型:void over()(2)功能:显示感谢用户使用界面。4.C4.C 程序设计总结程序设计总结(1)程序调试情况在编写完程序后,执行时总会出现很多错误,便又重新检查程序,改写程序,再经过不断的调试,最终将程序改写完成。(2)本人在程序中的感想程序在编写时总是感觉非常难,而且还会出现很多小错误,从而导致出很多麻烦,最终经过耐心检查,才将问题解决。5.5.结束语结束语由于本人完成此程序是在家中完成,又无网络可以查询,故只能参考课本,在本人的独立下完成此程序,在此须感谢白燕老师。486.6.参考文献参考文献1尹业安 白燕.C 语言程序设计.国防科技大学出版
22、社,2008.87.7.附录:程序清单附录:程序清单#include#include#includevoid welcome();void about();void create();void search();void SnoSearch();void NameSearch();void CYuYanSearch();void GaoShuSearch();48void YingYuSearch();void ZongFenSearch();void AverageSearch();void QSMSearch();void BuJiGeSearch();void ClassScore();
23、void arrange();void SnoArrange();void ZongFenArrange();void correct();void del();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();48ab
24、out();system(cls);create();system(cls);Z:printf(1查找n);printf(2排序n);printf(3学生信息的修改n);printf(4链表的删除n);printf(5链表的插入n);printf(6链表的输出n);printf(7退出n);scanf(%d,&n);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(c
25、ls);goto Z;case 4:system(cls);48del();system(cls);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是scanf(%d,&m);switch(m)case 1:break;case 2:goto Z;default:system(cls);printf(你的输入有误n);goto F;break;default:syst
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业 成绩管理系统
限制150内