一、课程设计目的1.学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
2.全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
3.掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。
4.在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。
二、课程设计任务按照如下要求,运用C++语言,编写一套可用的较为完善的校运动会比赛计分管理系统软件1)参加运动会的学校及运动员基本信息(参赛学校、参赛项目、运动员性别及所在学校、得分、排名等);运动会计分规则:取前五名:第一名 7分,第二名 5分,第三名 3分,第四名2分,第五名 1分;取前三名:第一名 5分,第二名 3分,第三名 2分;计分规则也可根据需求自定义。
2)能够实现由程序提醒用户填写比赛接结果,输入各项目获奖运动员信息。
3)能够在所有信息记录完毕后,用户可查询各个学校的比赛成绩信息和排名。
4)能够显示学校信息,运动员信息,以及学校总得分。
5)能够产生各类报表,查看并打印参赛学校信息和比赛项目信息等。
注:我与网络工程102001班刘乐乐同学合作,共同完成本次有关于校运动会记分管理系统的程序设计。
我负责完成学校信息录入模块、学生信息录入模块和成绩录入模块的实现三、系统设计方案3.1系统详细描述3.1.1系统设计背景随着国家对学校学生全面培养,塑造德、智、体、美、劳全面均衡发展的国家栋梁,举办运动会基本上是每个学校每年必办的一项体育性活动,目的就是为了鼓励学生们在学习的同时别忘了坚强身体的锻炼,既要有好的成绩也要有好的身体,这样才能更好地为祖国效力。
为方便运动会比赛信息及结果的记录,更加有效地举办好运动会,一个好的运动会计分管理系统是非常必要的,既能比较容易地记录比赛信息,又能迅速的计算项目得分及各个学校和项目的排名。
该项目作为《C++课程设计》课程的训练项目,目的是为了提高同学们系统的开发以及大家的实践能力。
3.1.2系统设计详细信息系统适用对象设定为山西省高校联合举办的运动会,参赛学校初步设定为四个即太原科技大学、太原理工大学、山西大学、山西财经大学(可适当的加减参加比赛学校的数目)。
该管理系统可以就参加的学校、运动员输入信息,通过输入比赛的成绩将各个项目和学校的排名输出,可根据用户需要增添缩减参赛学校及比赛项目。
能够显示输入后经系统整理的数据。
使用起来是比较方便的。
3.2功能模块划分3.2.1功能模块描述根据课程设计内容要求及运动会比赛相关情况,校运动会计分管理系统需要实现学校及运动员信息的录入,运动员成绩的录入,在输入后系统会自动将其排出名次,该系统有几种查询方式,可通过学校或运动员查询一系列项目及排名,如果需要的话还可以输出数据并生成报表,用户可打印出来。
为了简化程序,有以上分析可将系统分为五大模块:1)信息录入:信息录入包括学校信息录入以及运动员信息的录入。
2)成绩录入:成绩录入主要有两个模块,分别是男子成绩录入和女子成绩录入,根据运动员在个比赛中的成绩的输入还可以对他们进行排名。
3)查询:查询模块有三种查询方式,即姓名查询、项目查询、学校查询,通过这个模块更加方便的让用户操作。
4)显示数据:该模块能够让用户更容易的看比赛成绩以及对运动员成绩的比较也是非常直观的。
5)生成报表:其功能是将用户搜寻的结果通过文本文档输出,以方便用户打印带走。
3.2.2输入输出项以下输入项均为键盘输入:得分规则选择 int a(1、2、3)选择主菜单选项 int n(1、2、3、4、5、6、7、8)学校个数 int XN学校校名 string mingzi学校代号 string daihao学生数量 int SN学生姓名 string xingming学生性别 bool xingbie参赛项目 bool xiangmu[4]成绩 float chengji选择查询方式int a(1、2、3、4)选择显示的信息 int l(1、2、3、4)选择现实的排名 int a(1、2、3)输出项:学校名次int mingci[4];学校校名 string mingzi学生姓名 string xingming学生性别 bool xingbie参赛项目 bool xiangmu[4]成绩 float chengji单项得分i nt defen[4]总分 int zongfen注:我主要负责编写信息录入和成绩录入模块,刘乐乐同学主要负责编写查询以及文件的显示及生成报表,部分内容经我们一块研究合作实现的。
四、系统实现与测试4.1主菜单模块实现4.1.2主菜单代码void menu() //菜单{int w1,n;system("cls");cout<<"\t\t--------------------------------------------"<<endl<<"\t\t*************welcome to load****************"<<endl<<"\t\t--------------------------------------------"<<endl<<"\t\t※※※※※※※※※※※※※※※※※※※※※※"<<endl<<"\t\t※欢迎使用校运动会计分系统※"<<endl<<"\t\t※※"<<endl<<"\t\t※※"<<endl<<"\t\t※※"<<endl<<"\t\t※ 1.学校信息录入※"<<endl<<"\t\t※ 2.学生信息录入※"<<endl<<"\t\t※ 3.成绩录入※"<<endl<<"\t\t※ 4.查询※"<<endl<<"\t\t※ 5.显示数据※"<<endl<<"\t\t※ 6.输出文件※"<<endl<<"\t\t※7.显示排名※"<<endl<<"\t\t※8.退出※"<<endl<<"\t\t※※"<<endl<<"\t\t※※"<<endl<<"\t\t※※"<<endl<<"\t\t※制作人※"<<endl<<"\t\t※刘乐乐黄科荣※"<<endl<<"\t\t※※"<<endl<<"\t\t※※※※※※※※※※※※※※※※※※※※※※"<<endl;do{cout<<"请输入你想操作的代号(1-8):"<<endl;cin>>n;if(n<1||n>8){w1=1;cout<<"您的输入有误,请重新输入!"<<endl;}else w1=0;}while(w1==1);switch(n){case 1:xuexiaoluru();case 2:xueshengluru();case 3:chengjiluru();case 4:chaxun();case 5:xianshi();case 6:wenjian();case 7:paimingxianshi();}}4.1.3主菜单测试以下图片是程序在该模块运行时出现的相应界面及测试情况运行运动会计分管理系统时选定计分规则后可进入主菜单页面,如图4.2所示:图4.2主菜单界面8退出系统,输入选项以外的数字系统会自动提示输入错误,需重新输入。
如:输入1,则系统会出现学校信息录入模块,如图4.3所示:4.2信息输入模块实现4.2.1信息输入流程图注:为了程序的简洁我将学校信息录入和学生信息录入两模块合并,所以在看流程图的时候希望读者留心。
输入参赛学生信息图4.3信息输入界面Y N开始是否为1输入n调入学校信息录入调入学生信息录入输入参赛学校信息结束图4.4信息输入流程图4.2.2信息输入代码void xuexiaoluru() //学校信息录入{cout<<"请输入学校个数:";cin>>XN;for(int i=0;i<XN;i++){cout<<"请输入第"<<i+1<<"个学校的名字:";cin>>xx[i].mingzi;cout<<"请输入第"<<i+1<<"个学校的代码:";cin>>xx[i].daihao;xx[i].chengji=xx[i].mingci=0;}cout<<"学校信息为:"<<endl<<setw(15)<<"学校名称"<<" 学校代号"<<endl;for(i=0;i<XN;i++)cout<<setw(15)<<xx[i].mingzi<<" "<<xx[i].daihao<<endl;system("pause");menu();}void xueshengluru() //学生信息录入{cout<<"请输入学生数量:";cin>>SN;int k;for(int i=0;i<SN;i++){cout<<"请输入第"<<i+1<<"个学生的信息:"<<endl<<setw(15)<<"学校名称"<<" 学校代号"<<endl;for(int j=0;j<XN;j++)cout<<setw(15)<<xx[j].mingzi<<" "<<xx[j].daihao<<endl;cout<<"请输入学生所在学校的代码:";cin>>xs[i].xue;cout<<"请输入学生的姓名:";cin>>xs[i].xingming;cout<<"请输入学生的性别(男输入1 /女输入0 ):";cin>>xs[i].xingbie;for(k=0;k<4;k++){xs[i].chengji[k]=xs[i].defen[k]=xs[i].mingci[k]=0;xs[i].xiangmu[k]=0;}xs[i].haoma=i+1;}menu();}4.2.3信息输入测试以下图是在运行校运动会计分管理系统中信息录入模块的界面以及测试情况。