歌手比赛系统课程设计报告(共34页).doc

上传人:飞****2 文档编号:13906658 上传时间:2022-05-01 格式:DOC 页数:34 大小:166KB
返回 下载 相关 举报
歌手比赛系统课程设计报告(共34页).doc_第1页
第1页 / 共34页
歌手比赛系统课程设计报告(共34页).doc_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《歌手比赛系统课程设计报告(共34页).doc》由会员分享,可在线阅读,更多相关《歌手比赛系统课程设计报告(共34页).doc(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上 计算机学院信息管理与信息系统专业程序设计综合课程设计报告 (2010/2011学年 第一学期)学生姓名: 学生班级: 1学生学号: 指导教师: 2011年1月7日目录348专心-专注-专业歌手比赛系统第一章 课程设计的目的和要求1.1课程设计的目的C+语言课程设计的主要目的是培养学生综合运用C+程序设计课程所学到的知识,编写C+程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C+语言程序的基本技巧,充分理解结构化程序设计的基本方法。C+语言程序设计的主要任务时要求学生遵循

2、软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C+语言程序及编写设计报告。本次课程设计是通过设计一个较为简单的“歌手比赛系统”,进一步熟悉C+中有关各种知识的运用与掌握。了解系统开发的需求分析、模块分析、程序流程图、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯,进一步培养完善的C+编程设计思维,为以后进行软件编程、数据库管理等深入学习打下一个牢固基础1.2课程设计的目标本课程设计的目标:1. 巩固和加深学生对C+语言课程的基本知识的理解和掌握;2. 掌握

3、C+语言编程和程序调试的基本技能;3. 掌握利用C+语言进行软件设计的方法;4. 提高书写程序设计说明文档的能力;5. 提高运用C+语言解决实际问题的能力。1.3课程设计要求基本要求:1.题目:设计一个“歌手比赛系统”软件;2.了解该系统软件开发的相关背景;3.参考相关书籍学习课程设计的基本知识;4.清楚所开发系统软件的各个相关功能,以便顺利开发系统软件;5.对系统功能模块进行分析,写出设计说明文档;6.设计完成的软件要便于操作和使用;7.对自己所设计的程序进行调试,并不断完善;8.在设计过程中熟练掌握软件编程的相关知识;9.详细体会并记录相关过程,并将心得体会写在课程设计报告中;10.设计完

4、成后提交课程设计报告。第二章 课程设计任务内容2.1 课程设计题目歌手比赛系统。2.2 背景 时下,无论是社会上某些场合还是校园内,经常举行一些歌手演唱比赛,一般不会再像以前那样用笔记录比赛的情况,歌手比赛系统由此产生。它几乎包含了一切应有的功能,歌手信息的输入,评委打分,成绩排序等功能应有尽有,省去了很多麻烦的环节,完全可以满足一次歌手比赛的需求。开发此系统只为方便一般的歌手比赛。2.3功能需求用C+实现歌手比赛系统。该系统主要有以下功能:1、 系统以菜单方式工作;2、 歌手数据录入功能(歌手数据用文件保存)-输入;3、 歌手成绩(评委打分)录入功能输入:按输入选手的顺序对其分别打分,输入每

5、个评委的评分,对一个选手打完分之后,显示其总分和平均分;4、 计算总成绩和平均成绩(去掉一个最高分和一个最低分);5、 歌手成绩排序(按平均分):对选手按平均分进行排序,输出选手的姓名、编号、总分和平均分;6、 歌手成绩查询功能算法;按编号查询:输入编号,如果存在,输出选手的数据,不存在,输出 “信息不存在”。按姓名查询:输入选手姓名,存在,则输出选手数据,不存在,则输出 “信息不存在”;7、 追加选手数据(包括歌手姓名和编号):如果添加的选手已经存在,则不能插入,不存在,则输出“成功插入”。8、 写入数据文件:将输入的信息进行保存,保存到自己所写的文件中。2.4系统模块图以下是歌手管理系统的

6、模块图:歌手管理系统创建歌手信息评委打分成绩排序数据查询追加选手数据写入数据文件退出系统图2-1 系统模块图第三章 详细设计说明 3.1 主函数的流程图输入选手数据是否继续输入查询选手数据追加选手数据结束YN成绩排序成绩输入开始图3-1主函数流程图3.2 输入歌手数据输入函数:刷新此前的显示界面,然后输入在执行上步操作后的显示界面Singer *create() 包含的参数有:选手姓名string name;编号 long num。输入歌手编号、姓名开始添加错误该信息是否存在结束NY添加到文件图3-2输入函数流程图3.3 查询歌手数据查询函数:刷新此前的显示界面,然后查询在执行上步操作后的显示

7、界面按姓名查询:void inquire(); 参数:姓名 string name按编号查询:void inquire()。参数:编号 long num输入歌手编号或姓名开始是否存在结束NY显示所查询歌手数据图3-3 查询函数流程图3.4 编码与调试此程序包含六个函数:main();Singer *create();void print(); Singer *insert(); void save();void menu();void grade();void rank(); void welcome();void inquire(); Singer *import();其中:main()为主

8、函数,可输出开机界面;void menu()功能选择界面,按提示可提供相关服务;Singer *create()创建歌手信息表,输入选手相关数据;void print()输出函数,输出选手的相关数据;Singer *insert()插入函数,插入新的选手的数据;void save()写入数据文件的函数,将选手的数据保存到文件夹中;void grade()评委打分函数,输入评委所打的分数;void rank()成绩排序函数,对选手按平均分进行排序,并输出最终结果;void welcome()该函数的作用是清空屏幕;Singer *import()文件导入函数,从某文件把选手信息导入系统。第四章

9、软件使用说明及运行结果4.1使用说明该程序可以实现对选手有关信息查找的功能,安装VisualC+6.0英文版后,在工具栏“file”中单击“new”选项,单击“files”菜单,选择“C+ Source file”输入文件名“歌手比赛系统”。开始输入程序,程序输入完成,单击“build”工具栏,选择“build歌手比赛系统.cpp1”,待程序无误后,开始执行程序。根据数据结构、函数功能和主要的流程图,进行录入源代码操作。在编码时,注意代码的书写规范,包括命名惯例、注释、分隔和缩进等,这样使程序层析清晰,增强可读性和可维护性。 编码操作完成后,先静态检查一下有没有语法错误,然后进行编译,更深一步

10、检查语法错误。待编译通过时,运行程序,观察是否能够正常运行,如果有问题,再去修改源程序,直至达到了预期的效果。4.2 运行结果1、初始界面,提供功能选择,输入相应数字或字母。图4-1 程序截图一2、选择1,输入选手信息,包括姓名和编号(编号必须是阿拉伯数字)。 图4-2 程序截图二3、评委打分界面,会依次提醒输入每个评委所打的分数(分数必须是0到100之内的数),输入完毕,显示选手的总分和平均分,也就是最终得分。 图4-3 程序截图三4、成绩排序界面,输入选择“4”,输出排序的结果,显示有选手的编号、姓名、总分和平均分,排序是按平均分。图4-4 程序截图四5、下面是查询界面,可按姓名或者编号查

11、询,输出选手信息。图4-5 程序截图五6、追加选手数据,输入新增选手的姓名和编号。图4-6 程序截图六7、写入数据文件,保存信息到自己建立的文件内。图4-7 程序截图七第五章 课程设计心得与体会课程设计刚开始的时候,我真的感觉到无从下手。因为已经过去一个学期了,期间又没有怎么看书,大一的时候学的c+,不过基本上已经忘光了,而且那时候学的不深,如果单单写一个比较的小的程序还可以,大程序基本写不了。当老师把题目发给我们之后,刚开始是一筹莫展,不过短时间内就已经觉醒,重新对题目分析了一遍,了解了一下要用到哪方面的知识,然后着手去看书,重新熟悉一下以前的知识。然后去图书馆借了一些关于数据结构和c+的书

12、。看过那些书之后,信心增加了不少,对接下来的程序编译有很大帮助。通过这三周的课程设计,我独立完成了一个较大的C+语言程序的设计,并认真完成了课程设计报告。回忆这三周的时间,我收获很大。首先,我熟练地运用了所学的知识编写程序,并成功的完成,感觉成就感很强,这大大激发了我编程的兴趣;其次,在设计的过程中遇到了一些困难,我会认真的去思考,或者充分利用网络资源来寻求帮助,提高获取信息的能力。课程设计期间,我有向老师和同学寻求帮助,在交流中共同进步。最后,我了解了软件开发的大体过程及各个步骤,这对将来的学习和工作是很有帮助的。对于信管专业的大学生来说,积累实战经验是一项极其重要的内容,很可能成为将来就业

13、的敲门砖。而程序设计综合课程设计就是积累实战经验的一个过程,虽然程序的规模并不大,但能够让我们尽早地认识软件开发的重要性和必要性,为将来的就业打下坚实的基础。经过两个星期的上机实践学习,使我对C+语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己编程粗心大意,经常出错,通过学习也有所改进;再有对C+语言的一些标准函数不太了解,还有对函数调用的正确使用不够熟悉,以及对C+语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。这次的课程设让我认识到很多C+的内在要素:1. 程序设计语言是程序设计

14、的工具。这是我通过两周课程设计深深体会的一点,并且发现如果想有效的进行程序设计,正确地应用程序设计语言表达算法,必须准确的运用程序设计语言,掌握其语法知识。2. 学习程序设计必须重视时间环节,多读程序,多编写程序,多上机实践。这次的课程设计就使得课堂教学、式样和实践之间的关系更为紧密。对我的学习有着很深远的影响。3. 我发现作为一个程序设计人员,需要掌握面向过程的程序设计,也要掌握面向对象的程序设计。从前,人们通过C+语言学习面向过程的程序设计,再通过C+学习面向对象的程序设计。其实C+并不是纯粹的面向对象的语言,它是一种混合语言。学习C+既可以编写面向过程的程序,也可以编写面向对象的程序。这

15、一点是我通过可课程设计所的实践发现的。4. 深切的感受到了C+语法的复杂,内容的繁多。发现如果对它缺乏系统的了解,将难以真正的运用,编出来的程序错误百出。附录1:参考文献1谭浩强编著:C+程序设计,北京:清华大学出版社,20042杨秀金编著:数据结构(c+版),北京:人民邮电出版社,2009.43湛为芳编著:C+程序设计技术习题解答和实验指导,北京:清华大学出版社,2009.104 伍俊良编著:Visual C+6.0课程设计与系统开发案例.北京:清华大学出版社,2002.115、(美)戴特尔(Deitel,H.M.)等编著,张引等译:C+大学基础教程(第五版),北京:电子工业出版社,2006

16、.6附录2:程序清单以下是歌手比赛系统的源代码:#include#include#include#includeusing namespace std;#define NULL 0int n=0; /链表节点数bool formExist=false; /原有链表是否存在struct Singerstring name;long num;int sum;int mark10;float average;Singer *next;/创建链表Singer *create();/打印信息void print(Singer *pt);/插入节点Singer *insert(Singer *head,S

17、inger *sin);/保存到文件void save(Singer *head,char filename);/菜单void menu();/评委打分void grade(Singer *head,int mark);/成绩排序void rank(Singer *&head);/欢迎void welcome();/按姓名查询void inquire(Singer *head,string name);/按编号查询void inquire(Singer *head,long num);/从文件导入Singer *import(char filename,Singer *head);int ma

18、in()Singer *head=NULL;Singer newsin;string name;void grade(Singer *);ifstream infile;char filename20;long num;char choose;bool quit=false;char c;welcome();while(true)menu();cinchoose;switch(choose)case 1:if (formExist)coutc;if (!(c=y|c=Y)continue;elsen=0;head=create();system(pause);break;elsehead=cr

19、eate();system(pause);break;case 2:coutfilename;head=import(filename,head);system(pause);break;case 3:grade(head);system(pause);break;case 4:cout成绩排序结果为:endl;rank(head);system(pause);break;case 5:print(head);system(pause);break;case 6:cout请输入姓名:name;inquire(head,name);system(pause);break;case 7:cout请

20、输入编号:num;inquire(head,num);system(pause);break;case 8:cout请输入新增选手的姓名、编号:newsin.name;cinnewsin.num;head=insert(head,&newsin);system(pause);break;case k:coutfilename;save(head,filename);system(pause);break;case c:system(cls);welcome();break;case q:quit=true;break;default:cout输入错误!endl;if (quit)break;/

21、退出时提示保存coutc;if (c=y | c=Y)coutfilename;save(head,filename);return 0;/欢迎界面void welcome()cout*endl 欢迎使用歌手比赛管理系统!endl制作人:黄光亮 时间:2010-12-29endl*endlendl;/菜单void menu()coutsetiosflags(ios:left);coutnn您要做什么?endlsetw(20)1.创建选手信息表setw(20)2.从文件导入信息表endlsetw(20)3.评委打分setw(20)4.成绩排序endlsetw(20)5.打印所有的信息setw(2

22、0)6.按姓名查询endlsetw(20)7.按编号查询setw(20)8.追加选手数据endlsetw(20)k.保存信息表到文件setw(20)c.清空屏幕endlsetw(20)q.退出endlendl输入您的选择:;/创建链表Singer *create()bool error=false;formExist=true;Singer *p1,*p2,*head;head=NULL;p1=head;while(true)p2=p1;p1=new Singer;coutp1-name;if (p1-name=0)break;coutp1-num;n+;if (n=1)head=p1;p1-

23、next=NULL;elsep2-next=p1;p1-next=NULL;cout输入结束! endl;return head;/输出信息void print(Singer *head)Singer *p=head;if(p!=NULL)coutsetw(15)姓名setw(10)编号endl;docoutsetw(15)namesetw(10)numnext;while(p!=NULL);cout合计选手n人。endl;elsecout没有信息!endl;/评委打分 void grade(Singer *head) Singer *p;p=head;if (p!=NULL)doint i,

24、 max, min;int sum=0;max = -1;min =101 ;cout 请输入num号选手name的得分nn;for (i=0; i10; i+)cout 第i+1p-marki;if(p-markimax)max=p-marki; if(p-markimarki;sum+=p-marki;p-sum=sum;p-average = (p-sum-max-min)/8.0;cout总分sum平均分:averagenext;while(p!= NULL);elsecoutnext = head;/h = head;while(h-next!=tail) p=h;q=p-next;

25、while(q-next!=tail)/swapif (p-next-average next-average)p-next=q-next;q-next=q-next-next;p-next-next=q;p=p-next;else/next stepq=q-next;p=p-next;/tail is the element bubble out/since we use single linktail=q;/*do/求出选手的的人数 p = p-next; n+; while(p-next != NULL);Singer *temp = head-next;Singer *prev = h

26、ead;for(i=0; iaverage average)prev-next = temp-next;temp-next = head;head = temp;/* for(i=1; inext-next; for(j=0; jnexti.average average)/满足条件交换数据位置 p1-next-next = p2-next; p2-next = p1-next; p1-next = p2; p2 = p2-next; /if p1 = p1-next; p2 = p2-next; /for /for*/ /输出排序后数据/head = p-next; p = h-next;c

27、out setw(10)编号setw(10)姓名setw(10)总分setw(15)平均分endl;do cout setw(10)num setw(10)namesetw(10)sumsetw(15)averagenext; while(p != NULL); system(pause);/插入信息Singer *insert(Singer *head,Singer *sin)Singer *p0,*p1;p1=head;p0=sin;if (head=NULL)head=p0;p0-next=NULL;elsewhile(p1-next!=NULL)if (p0-num=p1-num)co

28、ut编号为num的选手已存在!next;p1-next=p0;p0-next=NULL;n+;cout成功插入信息!endl; return head;/保存到文件void save(Singer *head,char filename)Singer *p=head;bool flag=false;if (head=NULL)cout没有可以保存的信息!endl;return;elsefstream outfile(filename,ios:out);if (!outfile)cout打开数据文件出错!endl;return;doif(flag)outfileendl;outfilenamet

29、numtmark;flag=true;p=p-next;while(p!=NULL);outfile.close();cout保存成功!保存到filenameendl;/按姓名查询void inquire(Singer *head,string name)bool flag=true;Singer *p=head;int total=0;if (p=NULL)cout信息为空!name=name)if (flag)cout姓名为name的选手有:endl;coutsetw(15)姓名setw(10)编号setw(7)成绩endl;flag=false;coutsetw(15)namesetw(

30、10)numsetw(7)averagenext;while(p!=NULL);cout已查询到total条记录。endl;/按编号查询void inquire(Singer *head,long num)bool flag=true;Singer *p=head;if (p=NULL)cout信息为空!num=num)if (flag)cout编号是num的选手是:endl;coutsetw(15)姓名setw(7)成绩endl;flag=false;coutsetw(15)namesetw(7)averagenext;while(p!=NULL);cout查无此人!endl;/从文件导入Singer *import(char filename,Singer *head)ifstream infile;infile.open(filename,ios:in);if(!infile)cout打开文件失败!=1)p1-next=p;infilep-namep-num;p-next=NULL;if (n=0)head=p;p1=p;n+;infile.close();cout导入成功!endl;return head;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com