资源描述
内蒙古科技大学C+课程设计说明书 C+程序设计课程设计说明书题 目:比赛参赛选手管理系统 学生姓名: 学 号: 专 业:电子信息工程 班 级:信息092 指导老师: 内蒙古科技大学课程设计任务书课程名称C+语言课程设计设计题目比赛参赛选手管理系统指导教师时间2011.6.132011.6.24一、教学要求1. 巩固和加深学生对C+语言课程的基本知识的理解和掌握2. 掌握C+语言编程和程序调试的基本技能3. 利用C+语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C+语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,可根据设计内容适当修改题目名称。*比赛参赛选手管理系统定义人员基类,包含选手的基本数据和基本属性;要求至少设计以下各功能模块:v 输入记录v 查询功能v 排序v 显示信息三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用4. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C+面向对象程序设计,吴敏、杨国林 主编,内蒙古大学出版社2C+语言程序设计(第三版),郑莉,清华大学出版社比赛参赛选手管理系统摘要C+语言是目前公认的热门编程语言之一。C+是在C语言基础上发展演变而来的一种面向对象程序设计语言。它既支持面向过程的程序设计方法,也支持面向对象的程序设计方法。当今,C+语言在社会的各个领域发挥着越来越重要的作用。参赛选手系统的设计正是C+用于生活中的一项应用。参赛选手管理系统能方便用户快捷处理选手的信息,得到想要的数据并能将选手的信息以文档方式保存。此系统的主要管理的信息有:选手的姓名,编号和三项赛事的成绩。系统的主要功能有选手信息的添加、修改、显示,能对选手成绩按编号或成绩进行排序,可以根据用户的要求按姓名,编号查询选手的信息,保存信息到文件以及从文件中读取信息等功能。目录摘要2第一章 问题描述2第二章 问题分析2第三章 数据模型2第四章 设计流程图2第五章 程序代码2第六章 运行结果2第七章 设计总结2参考文献2第一章 问题描述建立一套比赛参赛选手管理系统。定义人员基类(competitor),包含选手的基本数据和基本属性,实现以下各功能:v 输入记录:选手信息数据要以文件的形式保存,能实现选手信息数据的维护。此模块包括子模块有:增加选手信息、修改选手信息。v 查询功能:查询时可实现按姓名查询、按编号查询、成绩查询v 排序:能对用户指定的任意项目名,按成绩由低到高排列选手数据并显示排序结果。v显示信息:显示选手的编号、项目、成绩等信息。设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用第二章 问题分析方案说明:参赛选手管理系统是用面向对象的方法设计,由于数组的存放是连续的,而单链表是非连续存放的,是动态分配内存空间,因此此系统采用单链表来完成。各个功能模块的实现主要转变到对单链表的遍历,添加和删除结点。系统功能模块的划分:在主界面中包括“增加选手 修改选手 查询选手信息 排序 保存信息 读取信息 退出”等全部的功能,之所以设计这么一个主界面,一是因为能使用户对程序操作的流程更加清楚简明,二是保证了用户同时只能对一个文件进行操作的系统要求,保证了系统不会发生打开文件紊乱或者出现致命错误。功能模板的划分显示菜单功能模板1增加选手功能2修改选手功能3查询选手信息4排序功能5保存信息6读取信息7退出第三章 数据模型类的设计定义参赛选手competitor类,包含成员变量:姓名name,编号num,短跑、跳高、跳远成绩x,y,z。class competitor /选手public: competitor *next; public: string name; /姓名 long num; /编号 int x,y,z; /短跑,跳高,跳远 成员函数:void sadd(); /添加void samend(); /修改void ssearch(); /查询void staxis(); /排序void ssave(); /保存void sload(); /读取void pxh();void psx();void pyw();void pyy();第四章 设计流程图开始读入文件中的数据并输出菜单及提示信息输入选择选择操作子程序保存并退出 图4.1 流程图 第五章 程序代码#include #include #include #include using namespace std; class competitor public: competitor *next; public: string name; /姓名 long num; /编号 float x,y,z; /短跑,跳高,跳远 void play()coutname选手的编号是num,短跑:x,跳高:y,跳远:z next; delete comp; comp=p; comp=0; void sadd(); /添加 void samend(); /修改 void ssearch(); /查询 void staxis(); /排序 void ssave(); /保存 void sload(); /读取 void pxh(); void psx(); void pyw(); void pyy(); private: competitor *comp; /头接点 ; void cla:sadd() /添加 competitor *q; string name1; long num1; float x1,y1,z1; system(cls); coutn *增加的选手* nendl; cout请输入选手的(中间用空格间隔) endl; cout姓名 编号 短跑成绩 跳高成绩 跳远成绩name1num1x1y1z1; q=new competitor(name1,num1,x1,y1,z1); q-next=0; if(comp) competitor *t; t=comp; if(t-num=num1) cout编号已存在,请重新输入next) if(t-num=num1) cout编号已存在,请重新输入next; t-next=q; else comp=q; cout输入完毕endl; void cla:samend() /修改 system(cls); long num1; coutn* 修改选手信息 *n; coutnum1; /查找要修改的结点 competitor *p1,*p2; p1=comp; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p1!=NULL) cout编号是num1的选手的信息:endl; cout姓名 name 短跑x 跳高y 跳远zendl; cout请输入修改后的信息:姓名 短跑成绩 跳高 ;cout成绩 跳远成绩p1-namep1-xp1-yp1-z; cout修改成功endl; else /未找到接点 cout未找到!n; void cla:ssearch() /查询 system(cls); coutn* 查询选手信息 *nendl; cout请输入查询方式:endl; cout1.按编号查询endl; cout2.按姓名查询endl; cout3.返回c; switch (c) case 1: long num1; cout要查询的编号num1; /查找要查询的结点 competitor *p1,*p2; p1=comp; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p1!=NULL) cout编号是num1的选手的信息endl; cout姓名:name 短跑:x 跳高:y 跳远:zendl; cout查询完毕.; else /未找到接点 cout未找到!n; break; case 2: string name1; cout要查询的选手姓名name1; /查找要查询的结点 competitor *p1,*p2; p1=comp; while(p1) if(p1-name=name1) break; else p2=p1; p1=p1-next; if(p1!=NULL) coutname1的选手的信息endl; cout编号:num 短跑:x C+:y 跳远:zendl; cout查询完毕.; else /未找到接点 coutnext) n+; p1=p1-next; cout共有n条信息.endl; int i; p1=comp; for(i=1;inump1-next-num) / 如果头结点大于第二个的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /头结点交换 comp=p2; p1=comp; while(p1-next-next) /中间的交换 p2=p1; p1=p1-next; if(p1-nump1-next-num) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交换 p1=comp; do p1-play(); p1=p1-next; while(p1); void cla:psx() /按短跑成绩排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1-next) n+; p1=p1-next; cout共有n条信息.endl; int i; p1=comp; for(i=1;ixp1-next-x) / 如果头结点大于第二个的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /头结点交换 comp=p2; p1=comp; while(p1-next-next) /中间的交换 p2=p1; p1=p1-next; if(p1-xp1-next-x) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交换 p1=comp; do p1-play(); p1=p1-next; while(p1); void cla:pyw() /按跳高成绩排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1-next) n+; p1=p1-next; cout共有n条信息.endl; int i; p1=comp; for(i=1;iyp1-next-y) /如果头结点大于第二个的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /头结点交换 comp=p2; p1=comp; while(p1-next-next) /中间的交换 p2=p1; p1=p1-next; if(p1-yp1-next-y) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交换 p1=comp; do p1-play(); p1=p1-next; while(p1); void cla:pyy() /按跳远成绩排序 competitor *p1,*p2; int n; p1=comp; n=1; while(p1-next) n+; p1=p1-next; cout共有n条信息.endl; int i; p1=comp; for(i=1;izp1-next-z) / 如果头结点大于第二个的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /头结点交换 comp=p2; p1=comp; while(p1-next-next) /中间的交换 p2=p1; p1=p1-next; if(p1-zp1-next-z) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交换 p1=comp; do p1-play(); p1=p1-next; while(p1); void cla:staxis() /排序 system(cls); char c; cout请选择以何种方式排序:endl; cout1以编号排序endl; cout2以短跑成绩排序endl; cout3以跳高成绩排序endl; cout4以跳远成绩排序endl; cout5返回endl; cout请选择(1-5)c; switch (c) case 1:pxh(); break; case 2:psx(); break; case 3:pyw(); break; case 4:pyy(); break; case 5:return; void cla:ssave() /保存到文件 system(cls); char c; coutc; if(toupper(c)!=Y) return; ofstream tfile(date.txt,ios_base:binary); competitor *p=comp; while(p) / 写入文件 tfilenametnumtxtytz; tfilenext; tfile.close(); cout保存完毕.next; delete p; p=comp; If stream tfile(date.txt,ios_base:binary); string name1; long num1; float x1,y1,z1; tfilename1num1x1y1z1; while(tfile.good() /创建选手接点 competitor *s; s=comp; s=new competitor(name1,num1,x1,y1,z1); s-next=0; if(comp) /若已经存在结点 competitor *p2; p2=comp;while(p2-next) /查找尾结点 p2=p2-next; p2-next=s; /连接 else /若不存在结点(表空) comp=s; /连接 tfilename1num1x1y1z1; tfile.close(); coutn欢迎使用选手成绩管理系统n; void main() char c; cla a; do cout*n; cout 1增加选手 n; cout 2修改选手 n; cout 3查询选手信息 n; cout 4排序 n; cout 5保存信息 n; cout 6读取信息 n; cout 7退出 n; cout*n; coutc; switch(c) case 1: a.sadd();break; case 2: a.samend();break; case 3: a.ssearch();break; case 4: a.staxis();break; case 5: a.ssave();break; case 6: a.sload();break; while(c!=7); 第六章 运行结果图6.1 运行结果主界面第七章 设计总结通过一个学期的C+学习,我对C+语言有了基本认识,但是对有些知识懂得还不够透彻。通过这次为期两周的课程设计,我学到了更多关于C+面向对象的程序设计的内容。这个课题用到了C+语言程序设计的知识,通过这次课程设计,使我对C+设计有了更深的了解,对课本上的知识有了进一步的掌握,同时也使我对自己的专业知识有进一步的巩固加深。在写程序时,要注意类与对象、构造函数、析构函数、成员函数等相结合,尤其是在学好程序后,要运行,有不足之处及时完善。把理论知识与实践相结合,才能将所学知识运用的恰到好处。参考文献1吴敏,杨国林. C+面向对象程序设计M.呼和浩特:内蒙古大学出版社.2006.2郑莉.C+语言程序设计M. 北京:清华大学出版社.2003.3刘开军.C+程序设计M.北京:清华大学出版社.2004.21
展开阅读全文