C语言程序设计课程设计大作业-学生成绩管理系统.doc

上传人:来看看 文档编号:3257896 上传时间:2019-08-06 格式:DOC 页数:48 大小:240.04KB
返回 下载 相关 举报
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页
点击查看更多>>
资源描述

《C语言程序设计课程设计大作业-学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计大作业-学生成绩管理系统.doc(48页珍藏版)》请在三一文库上搜索。

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

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

3、11退出 图2 查找子菜单(3)选项2后, 调用排序函数arrange,进入查找函数后利用switch语句实现如图所示的查找子菜单。该菜单中每个每个选项调用一个函数(除3外)。排序菜单 输入选项编号1按学号排序2按总分排序3退 出 图3 排序子菜单(4)选择3后,调用修改函数correct,修改某个学生的信息。(5)选择4后,调用删除函数del,根据需要删除某个学生的信息。(6)选择5后,调用插入函数insert,根据需要插入某个学生的信息。(7)选择6后,调用输出函数output,将每个学生的信息全部输出。(8)选择7后,退出学生信息管理系统。(9)根据所选菜单编号编写相应代码。(a)函数w

4、elcome:欢迎用户使用。(b)函数about: 简要介绍本程序。(c)函数create:创建单链表,采用循环输入的方式输入学生的基本信息。(d)函数SnoSearch:根据学号查找,输出该生的基本信息。(e)函数NameSearch:根据姓名查找,输出该生的基本信息。(f)函数CYuYanSearch:根据C语言成绩成绩查找,输出该生的基本信息。(g)函数GaoShuSearch:根据高数成绩查找,输出该生的基本信息。(h)函数YingYuSearch:根据英语成绩查找,输出该生的基本信息。(i)函数ZongFenSearch:根据总分查找,输出该生的基本信息。(j)函数AverageSe

5、arch:根据平均分查找,输出该生的基本信息。(k)函数QSMSearch:查看班级前三名学生信息情况。(l)函数BuJiGeSearch:查看班级不及格学生信息情况。成绩菜单 输入选项编号1C语言不及格者2高数不及格者3英语不及格者4不及格者5全不及格者6退出 图4 成绩子菜单(m)函数ClassScore:查看班级成绩平均分整体情况。(n)函数SnoArrange:按照学号将学生信息进行排序。(o)函数ZongFenArrange:按照总分将学生信息进行排序。(n)函数over:感谢用户使用。2)画模块图按学号查找显示欢迎界 面按姓名查找显示程序介 绍按C语言不及格者查 找按成绩查找输 入

6、成 绩按高数不及格者查 找按总分查找查 找 排 序主模块按平均分查 找修改学生信 息按英语不及格者查 找按前三名查 找 删除学生信 息按不及格查 找 插入学生信 息按不及格者查 找按学号排序 输出学生信 息按全不及格者查 找按总分排序 显示结束界 面图5 成绩管理系统模块图3)画部分模块的流程图开始输入学生信息pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3输入学生信息结束

7、p-next=NULLYNa=pnew-sno图6 creat函数流程图开始输入at+t=num+1YNa=p-snop=p-nextNY输出学生信息结束 图7 SnoSearch函数流程图开始输入bt=0;flag=0;p=head;t+NYt=num+1k=0Yflag=0NYN结束flag=1输出学生信息p=p-next图8 NameSearch函数流程图 开始s=0;r=0;w=0;t=0m=0;n=0;p=head;NYs!=nump=head;s=0s+NYs!=numtscoreNs+Yt=p-scoret=p-scoreNp=p-nextY输出学生信息p=headp=p-nex

8、t结束 图9 QSMSearch函数流程图开始p=head输入bNa=1NYa1&anextNYn=3i=0j=0Ni!=a-2Nj!=a-2YYp=p-nextp=p-nexti+j+p-next=NULLp-next=p-next-nextnum=num-1结束 图10 del函数流程图 3.程序代码设计1.main函数:(1)函数原型:void main()(2)功能:分别调用 welcome函数、about函数、create函数、search函数、del函数、insert函数、output函数和over函数。(3)变量及类型:int m,n; /switch选择变量(4)说明:main

9、函数中用到system(cls),其作用是清除屏幕上的文字。2.welcome函数:(1)函数原型:void welcome()(2)功能:显示欢迎用户使用界面。(3)说明:getchar()函数用于使屏幕停止,按下Enter键后再执行下面程序。3.about函数:(1)函数原型:void about()(2)功能:简要介绍本程序。(3)说明:getchar()函数用于使屏幕停止,按下Enter键后再执行下面程序。4.create函数:(1)函数原型:void create()(2)功能:利用单链表、while循环和 scanf函数完成对学生信息的输入(学号、姓名、三门成绩),并计算出总分和平

10、均分,再存入单链表中。(3)变量及类型:int a=0; /判断学生信息输入是否结束(学号是否为0)struct student *p,*pnew; /结构体指针指向结点(4)说明:学生的人数不受限制,输入结束符号即可。5.search函数:(1)函数原型:void search()(2)功能:通过选项来选择调用不同函数,完成不同的功能。(3)变量及类型:int m,n; /switch选择变量6.SnoSearch函数:(1)函数原型:void SnoSearch()(2)功能:通过学号来查找该生的基本信息。(3)变量及类型:int a,t; /a用来存储学号;t用来计数,以便跳出循环 st

11、ruct 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函数:(1)函数原型:void CYuYanSearch()(2)功能:通过C语言成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t用于计数;flag起标记作用 float a;

12、 /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用于指向头结点10.YingYuSearch函数:(1)函数原型:void YingYuSearch()(2)功能:通过英语成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t用于计数;flag起标

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

14、用于计数;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,m,n均用做记录最高分 struct student *p; /指针p用于指向头结点14. BuJiGeSearch函数:(1)函数原型:void BuJiGeSearch()(2)功能:通过switch选择输出不及格情况。(3)变量及类型:

15、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; /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)功能:通过选项来选择调用

16、不同函数,完成不同的功能。(3)变量及类型:int a,m; /a,m均为switch选择变量;17.SnoArrange函数:(1)函数原型:void SnoArrange()(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均用于创建新链表18.ZongFenArrange函数:(1)函数原型:void ZongFenArrange()(2)功能:将学生信息按照总分进行排序。(

17、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)函数原型: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)功能:

18、删除单链表中某生的基本信息。(3)变量及类型:int a,n,i,j; /a存放要删除的结点;n为switch选择变量;i,j用于for循环 struct student *p; /指针p用于指向头结点21.insert函数:(1)函数原型: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)功能:

19、输出每个学生的基本信息。(3)变量及类型:int s=0; /s用于计数 struct student *p /指针p用于指向头结点23.over函数:(1)函数原型:void over()(2)功能:显示感谢用户使用界面。4.C程序设计总结(1)程序调试情况 在编写完程序后,执行时总会出现很多错误,便又重新检查程序,改写程序,再经过不断的调试,最终将程序改写完成。(2)本人在程序中的感想 程序在编写时总是感觉非常难,而且还会出现很多小错误,从而导致出很多麻烦,最终经过耐心检查,才将问题解决。5.结束语 由于本人完成此程序是在家中完成,又无网络可以查询,故只能参考课本,在本人的独立下完成此程序

20、,在此须感谢白燕老师。 6.参考文献1尹业安 白燕.C语言程序设计.国防科技大学出版社,2008.87.附录:程序清单#include#include#includevoid welcome();void about();void create();void search();void SnoSearch();void NameSearch();void CYuYanSearch();void GaoShuSearch();void YingYuSearch();void ZongFenSearch();void AverageSearch();void QSMSearch();void Bu

21、JiGeSearch();void ClassScore();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;

22、void main()int m,n;welcome();about();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

23、:system(cls);correct();system(cls);goto Z;case 4:system(cls);del();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是 2否n);scanf(%d,&m);switch(m)case 1:break;case 2:goto Z;default:system(cls);printf

24、(你的输入有误n);goto F;break;default:system(cls);printf(你的输入有误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);p

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

26、ate()int 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-sno,pnew-name,&pnew-score1,&pnew-score2,&pnew-score3);pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/

27、3.0;pnew-avg=(double)( (int)(pnew-avg*100)*0.01 );while(1)num+;p-next=pnew;p=pnew;pnew=(struct student *)malloc(sizeof(struct student);scanf(%d,&pnew-sno);if(a=pnew-sno)break;scanf(%s%f%f%f,pnew-name,&pnew-score1,&pnew-score2,&pnew-score3);pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew

28、-score/3.0;pnew-avg=(double)( (int)(pnew-avg*100)*0.01 );p-next =NULL; void search()int m,n;A:printf(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,&n);switch(n)

29、case 1:SnoSearch();goto A;case 2:NameSearch();goto A;case 3:CYuYanSearch();goto 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(cl

30、s);D:printf(你真的想退出吗n 1是 2否n);scanf(%d,&m);switch(m)case 1:break;case 2:goto 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,&a);t=0;p=head;printf(n学号为%d的成绩如下:n,a);printf( 学号姓

31、名 C语言 高数 英语 总分 平均分n);while(1) t+;if(t=num+1)system(cls);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(请输入

32、姓名:);T:scanf(%s,b);t=0;flag=0;p=head;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,

33、p-avg);p=p-next;printf(nnn);void CYuYanSearch()int t,flag;float a;struct student *p;system(cls);printf(请输入C语言成绩:);U:scanf(%f,&a);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;elsebreak;if(a=p-sc

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1