《c++课程设计报告参考.doc》由会员分享,可在线阅读,更多相关《c++课程设计报告参考.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+课程设计(论文)任务书 软件 学院 软件+交通运输 专业 2013-1 班 一、课程设计(论文)题目班级通讯录 二、课程设计(论文)工作自 2014 年 6 月16日起至 2014 年 6 月 22 日止 三、课程设计(论文) 地点: 创新大楼 四、课程设计(论文)内容要求:1本课程设计的目的(1)熟练掌握C+语言的基本知识和技能; (2)掌握面向对象程序设计的基本思路和方法;(3)了解指针、类的继承、文件的打开和保存、链表应用(4)利用所学的基本知识和技能,解决面向对象程序设计问题(5)培养分析、解决问题的能力;提高学生的科技论文写作能力。 2课程设计的任务及要求1)基本要求:(1)设计
2、一个的菜单将在实现的功能显示出来,并有选择提示(2)能够查询全部成员清单;(3)能够按号码或姓名查询某一个成员的信息(4)能够增加、删除、修改某一个成员的信息(5)要求有错误提示功能,例如性别只能输入F,M,输入错误提示重新输入 2)创新要求: 将通讯录信息保存为文件,能够写入与读出。3)课程设计论文编写要求(1)要按照课程设计模板的规格书写课程设计论文(2)论文包括目录、正文、心得体会、参考文献等(3)课程设计论文用A4纸统一打印,装订按学校的统一要求完成4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:40分; (3)完成调试:20分;(4)回答问题:20分。5)参考
3、文献:(1)谭浩强. C+程序设计. 北京:清华大学出版社,2008 (2)(3)6)课程设计进度安排内容 天数地点构思及收集资料 2图书馆编程设计与调试 5实验室撰写论文 3图书馆、实验室学生签名: 2014年 6月 16 日课程设计(论文)评审意见(1)完成原理分析(20分):优()、良()、中()、一般()、差(); (2)设计分析(20分):优()、良()、中()、一般()、差(); (3)完成调试(20分):优()、良()、中()、一般()、差();(4)翻译能力(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();
4、(6)格式规范性及考勤是否降等级:是()、否()评阅人: 职称: 副教授 2014 年 6 月 22 日目录第1章 系统概要7第2章 设计思路与算法8第3章源程序代码9第4章 运行结果及分析9第5章 心得体会11参考文献11报告正文撰写参考格式(1) 报告内容层次必须用下面的格式示例:下面为报告第1章使用的目录层次和行文格式,其他章节格式雷同。1 xxxx -章-(一级标题:黑体小四、段前后为0.5行、1.25倍行距)1.1 xxxx-节-(二级标题:黑体五号、段前后为0、1.25倍行距) 1.xxxx-节内第1点-(正文:宋体五号、段前后为0、1.25倍行距,程序代码用Times New R
5、oman字体) (1)xxxx-第1点第1小点-(格式同上) xxxx-(格式同上)切记:目录必须是按下面步骤生成的:“插入引用-索引和目录” 。!正文内容需首行缩进2字符。 (2)报告的插图必须使用规范下标,如下面示例:第1章第一个图记为图1-1,第二个图记为图1-2(序号与节无关)第2章第一个图记为图2-1,第二个图记为图2-2图的规范使用按下面的例子进行。【图要有下标】图1-1 计算机声卡(3)参考文献按规范格式引用如下面示例:1 周靖,龙劲松等译.C#高级程序员指南M. 北京:清华大学出版社,2003.2 王海峰,冯义等译.C#.NET WEB开发指南M. 北京:机械工业出版社,200
6、3.3 郭路. XML数据传输的安全加密EB/OL. developerWorks/cn/xml/ xmlb2b/index5.shtml, 2001-06/2001-10-04.第3个参考文献为参考网上的资料的例子。注:M 表示所参考的文献为书 J 表示所参考的文献为论文 EB/OL表示所参考的文献为网络上的资料 第1章 系统概要 时下,无论是社会上某些场合还是校园内,经常举行一些歌手演唱比赛,一般不会再像以前那样用笔记录比赛的情况,歌手比赛系统由此产生。它几乎包含了一切应有的功能,歌手信息的输入,评委打分,成绩排序等功能应有尽有,省去了很多麻烦的环节,完全可以满足一次歌手比赛的需求。开发此
7、系统只为方便一般的歌手比赛。程序设计综合课程设计功能需求用C+实现歌手比赛系统。该系统主要有以下功能:1、系统以菜单方式工作;2、歌手数据录入功能(歌手数据用文件保存)-输入;3、歌手成绩(评委打分)录入功能输入:按输入选手的顺序对其分别打分,输入每个评委的评分,对一个选手打完分之后,显示其总分和平均分;4、计算总成绩和平均成绩(去掉一个最高分和一个最低分);5、歌手成绩排序(按平均分):对选手按平均分进行排序,输出选手的姓名、编号、总分和平均分;6、歌手成绩查询功能算法;按编号查询:输入编号,如果存在,输出选手的数据,不存在,输出“信息不存在”。按姓名查询:输入选手姓名,存在,则输出选手数据
8、,不存在,则输出“信息不存在”;7、追加选手数据(包括歌手姓名和编号):如果添加的选手已经存在,则不能插入,不存在,则输出“成功插入”。8、写入数据文件:将输入的信息进行保存,保存到自己所写的文件中。第2章 设计思路与算法输入选手数据是否继续输入查询选手数据追加选手数据结束YN成绩排序成绩输入开始图2-1 总体设计用流程图说明整体思路;用文字描述实现的关键算法。第3章源程序代码#include#include#include#includeusingnamespacestd;#defineNULL0intn=0;/链表节点数boolformExist=false;/原有链表是否存在struct
9、Singerstringname;longnum;intsum;intmark10;floataverage;Singer*next;/创建链表Singer*create();/打印信息voidprint(Singer*pt);/插入节点Singer*insert(Singer*head,Singer*sin);/保存到文件voidsave(Singer*head,charfilename);/菜单voidmenu();/评委打分voidgrade(Singer*head,intmark);/成绩排序voidrank(Singer*&head);/欢迎voidwelcome();/按姓名查询v
10、oidinquire(Singer*head,stringname);/按编号查询voidinquire(Singer*head,longnum);/从文件导入Singer*import(charfilename,Singer*head);intmain()Singer*head=NULL;Singernewsin;stringname;voidgrade(Singer*);ifstreaminfile;charfilename20;longnum;charchoose;boolquit=false;charc;welcome();while(true)menu();cinchoose;swi
11、tch(choose)case1:if(formExist)coutc;if(!(c=y|c=Y)continue;elsen=0;head=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;else
12、head=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause
13、);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();
14、system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;
15、head=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;sen=0;head=create();system(pau
16、se);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;sen=0;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;sen=0;head=create();system(pause);break;elsehead=create();system(pause);break;elsehead=cre
17、ate();system(pause);break;case2:coutfilename;head=import(filename,head);system(pause);break;case3:grade(head);system(pause);break;case4:cout成绩排序结果为:endl;rank(head);system(pause);break;case5:print(head);system(pause);break;case6:cout请输入姓名:name;inquire(head,name);system(pause);break;case7:cout请输入编号:nu
18、m;inquire(head,num);system(pause);break;case8:cout请输入新增选手的姓名、编号:newsin.name;cinnewsin.num;head=insert(head,&newsin);system(pause);break;casek:coutfilename;save(head,filename);system(pause);break;casec:system(cls);welcome();break;caseq:quit=true;break;default:cout输入错误!endl;if(quit)break;/退出时提示保存coutc
19、;if(c=y|c=Y)coutfilename;save(head,filename);程序设计综合课程设计21return0;/欢迎界面voidwelcome()cout*endl欢迎使用歌手比赛管理系统!endl制作人:黄光亮时间:2010-12-29endl*endlendl;/菜单voidmenu()coutsetiosflags(ios:left);coutnn您要做什么?endlsetw(20)1.创建选手信息表setw(20)2.从文件导入信息表endlsetw(20)3.评委打分setw(20)4.成绩排序endlsetw(20)5.打印所有的信息setw(20)6.按姓名查
20、询endlsetw(20)7.按编号查询setw(20)8.追加选手数据endlsetw(20)k.保存信息表到文件setw(20)c.清空屏幕endlsetw(20)q.退出endlendl输入您的选择:;/创建链表Singer*create()boolerror=false;formExist=true;Singer*p1,*p2,*head;head=NULL;p1=head;while(true)p2=p1;p1=newSinger;coutp1-name;if(p1-name=0)break;coutp1-num;n+;if(n=1)head=p1;p1-next=NULL;else
21、p2-next=p1;p1-next=NULL;cout输入结束!endl;returnhead;/输出信息voidprint(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;/评委打分voidgrade(Singer*head)Singer*p;p=head;if(p!=NULL)dointi,max,min;intsum=0;max=-1;程序
22、设计综合课程设计24min=101cout请输入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;while(q-next!=tail)/swapif(p-next-av
23、eragenext-average)p-next=q-next;q-next=q-next-next;p-next-next=q;p=p-next;else/nextstepq=q-next;p=p-next;/tailistheelementbubbleout/sinceweusesinglelinktail=q;程序设计综合课程设计26/*do/求出选手的的人数p=p-next;n+;while(p-next!=NULL);Singer*temp=head-next;Singer*prev=head;for(i=0;iaverageaverage)prev-next=temp-next;t
24、emp-next=head;head=temp;/*for(i=1;inext-next;for(j=0;jnexti.averageaverage)/满足条件交换数据位置p1-next-next=p2-next;p2-next=p1-next;p1-next=p2;p2=p2-next;/ifp1=p1-next;p2=p2-next;/for/for*/输出排序后数据/head=p-next;p=h-next;coutsetw(10)编号setw(10)姓名setw(10)总分setw(15)平均分endl;docoutsetw(10)numsetw(10)namesetw(10)sums
25、etw(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)cout编号为num的选手已存在!next;p1-next=p0;p0-next=NULL;n+;cout成功插入信息!endl;returnhead;/保存到文件voidsave(Singer*head,cha
26、rfilename)Singer*p=head;boolflag=false;if(head=NULL)cout没有可以保存的信息!endl;return;elsefstreamoutfile(filename,ios:out);if(!outfile)cout打开数据文件出错!endl;return;doif(flag)outfileendl;outfilenametnumtmark;flag=true;p=p-next;while(p!=NULL);outfile.close();cout保存成功!保存到filenameendl;/按姓名查询voidinquire(Singer*head,
27、stringname)boolflag=true;Singer*p=head;inttotal=0;if(p=NULL)cout信息为空!name=name)if(flag)cout姓名为name的选手有:endl;coutsetw(15)姓名setw(10)编号setw(7)成绩endl;flag=false;coutsetw(15)namesetw(10)numsetw(7)averagenext;while(p!=NULL);cout已查询到total条记录。endl;/按编号查询voidinquire(Singer*head,longnum)boolflag=true;Singer*p
28、=head;if(p=NULL)cout信息为空!num=num)程序设计综合课程设计31if(flag)cout编号是num的选手是:endl;coutsetw(15)姓名setw(7)成绩endl;flag=false;coutsetw(15)namesetw(7)averagenext;while(p!=NULL);cout查无此人!endl;/从文件导入Singer*import(charfilename,Singer*head)ifstreaminfile;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;returnhead;b mka8每个函数模块要求注释说明其功能,如示例第四章 运行结果及分析