版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1课程设计题目与要求1.1设计题目〔1〕信息初始化,输入:N-参赛学校总数,M-男子竞赛工程数,W-女子竞赛工程数;各工程名次取法有以下几种:1.取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1.2.取前3名:第1名得分5,第2名得分3,第3名得分2.3.用户自定义:各名次权值由用户指定。〔2〕提醒用户填写比赛结果,输入各工程获奖运发动的信息。〔3〕所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛工程信息等。1.2设计要求:〔1〕只能使用c/c++语言,源程序要有适当的注释,使程序容易阅读。〔2〕至少采用文本菜单界面〔如果能采用图形界面更好〕〔3〕学生可以自动增加新功能模块2总体设计主菜单流程图:开始开始调用调用begin()函数调用face()调用face()函数调用manu()调用manu()函数退出退出模块示意图:初始化模块初始化模块输入模块查询模块退出模块飞机订票系统记录信息模块各模块功能如下:1.初始化模块:进行对学校数,男子工程,女子工程的值进行输入,以及各工程名次得分取值的选择;2.数据输入模块:输入学生姓名,学校,工程,性别,排名;3.查询模块:分为按学校,工程,学生查询,查询全部信息以及返回主菜单;4.查询记录模块:可以查询现共有记录条数以及个记录的字符长度;5.退出程序。3详细设计3.1数据结构设计structstudent{ charname[10];//姓名10个字符 charschool[20];//学校名16个字符 charitem[10];//工程名10个字符 charsex[4];//性别4个字符 intposition;//排名2个字符 intmark;//得分2个字符}stu[A];整个程序只定义了一个结构体,即学生结构体,包含了姓名,学校,工程,性别,排名,得分。3.2主模块设计//设置的全局变量inty=0,j,i,W,M,N,p[15],q[15],t;//N-参赛学校总数//M-男子竞赛工程数,//W-女子竞赛工程数//y是菜单的选项//j是用户自定义工程权值的选项//i是数据记录的个数//p[15]是用于存放排名第几的数组//q[15]是用于存放得分第几的数组//t是循环计数器//各个函数声明voidface();//制作的界面函数voidmenu();//菜单界面函数voidestablish();//初始化函数voidenter();//输入函数voidsearch();//查询函数voidsearch_by_item();//通过工程名查询的函数voidsearch_by_school();//通过学校名查询的函数voidsearch_by_student();//通过学生名查询的函数voidsearch_by_all();//查询所有信息的函数voidprinter_1();//报表格式1函数voidprinter_2();//报表格式2函数voidmark();//排名转换为分数voiddefined_by_user();//用户自定义权值voidset_stu();//输入信息的函数voidbegin();//在一开始就运行的函数intput_stu(intz);//输出第z个数据voidreturn_record();//返回记录号其中voidface();voidprinter_1();voidprinter_2();三个函数主要是输出界面,voidface()函数是主菜单界面,而voidprinter_1();voidprinter_2();分别是最后查询输出的报头和报表。voidmenu();函数用do_while循环控制对变量n的输入是否正确。如果正确进入switch循环,如果不正确那么返回错误信息,并且重新输入。其中n的值为1-5,分别通过五个函数voidestablish();voidenter();voidsearch();voidreturn_record();exit();执行以下五个模块:1.初始化模块;2.数据输入模块;3.查询模块;4.查询记录模块;5.退出程序。voidestablish();首先进行参赛学校总数,男子竞赛工程数,女子竞赛工程数的初始化,函数用do_while循环控制对变量j的输入是否正确。如果正确进入switch循环,如果不正确那么返回错误信息,并且重新输入。其中j的值为1-3,因为j是全局变量,j是用户自定义工程权值的选项,如果j的值为1或2,在建立是通过j调用mark()函数对权值进行定义,如果j的值为3,那么调用voiddefined_by_user();函数,用户可以自由定义权值。voidenter();通过y变量控制输入前一定要初始化,输入时调用voidset_stu();函数,通过do_while判断是否继续输入信息。voidsearch();函数用do_while循环控制对变量t的输入是否正确。如果正确进入switch循环,如果不正确那么返回错误信息,并且重新输入。其中t的值为1-5,分别通过五个函数search_by_school();search_by_item();search_by_student();search_by_all();menu();执行以下五个功能:1.按学校名查询;2.按工程查询;3.按学生查询;4.查询全部信息;5.返回主菜单。voidsearch_by_item();voidsearch_by_school();voidsearch_by_student();三个函数的结构几乎相同,首先用二进制文件输入输出定义对象名为iofile,再定位get指针在文件开头,定义一个字符串数组,对这个字符串输入数据,通过循环对所有现有数据的stu[t].item和字符串数组进行匹配,如果成功那么返回该条记录。voidsearch_by_all();首先用二进制文件输入输出定义对象名为iofile,再定位get指针在文件开头,用for循环逐条输出已有记录。voidmark();利用全局变量j,对权值进行三种不同的赋值,j=1时按第一种方式赋值,当j=2时,按第二种方式赋值,j=3时用户自定义权值。voiddefined_by_user();通过for循环对全局变量p[15],q[15]进行赋值,其中p[15]是用于存放排名第几的数组,q[15]是用于存放得分为几的数组。voidset_stu();先输入到内存,然后用二进制文件输出流,输出到"data.dat"文件。voidbegin();在主函数的开始就调用,所以称之为begin函数,其作用是将stu[]的前十二个数据输出到"data.dat"文件。并且给全局变量赋值为12.intput_stu(intz);形参z是记录号,输出第z个记录的各项,并且规定了输出的长度,以利于最终输出时报表的形式。voidreturn_record();返回共有几条记录,和第几条记录的长度是多少。在此应该特别说明一下begin()函数,为了防止数据的丧失我在结构体后以结构体数组方式直接初始化了12个数据,并且在begin函数中将这12个数据写入data文件中,在程序运行时,我将这两个地方注释掉了,如果数据丧失,将其注释取消,编译连接后即可恢复数据!以上是所有函数的功能。开始开始Data.dat文件,Data.dat文件,Data1.dat文件是否存在N建立Data.dat文件Data1.dat文件YY翻开翻开Data.1dat文件输入i变量输入i变量关闭关闭Data1.dat文件翻开翻开Data.dat文件t=0t=0t是否小于iYt是否小于iY将数据读入s[i]结构体数组中将数据读入s[i]结构体数组中t++NN关闭关闭Data1.dat文件退出退出begin()函数的流程图begin()函数的流程图开始开始调用调用set_s(i);函数i++输入t变量输入t变量调用set_s(i);函数调用set_s(i);函数i++Yt是否等于1YYNN翻开翻开Data1.dat文件写入i变量写入i变量关闭Data关闭Data1.dat文件调用menu()函数退出退出enterenter()函数的流程图开始开始输入t判断t输入t判断t调用search_by_name()函数调用search_by_school()函数调用search_by_item()函数t=4t=1t=3t=5t=2调用search_by_all()函数调用menu()函数退出退出searchsearch()函数的流程图输入字符串a假设不相等指向下一条记录t++开始输入字符串a假设不相等指向下一条记录t++开始判断数据是否与输入字符串a相等调用put_stu(p)函数且指向下一条记录调用menu〔〕函数t=0t是否小于i退出退出SSearch_by_name;函数等的流程图运行结果主菜单的界面用户自定义权值界面主菜单的界面用户自定义权值界面初始化界面初始化界面按工程查询界面按学生查询界面按工程查询界面按学生查询界面按学校查询界面按学校查询界面查询全部记录查询全部记录信息的输入信息的输入新加数据后的全部信息新加数据后的全部信息新加数据后的记录个数和记录长度新加数据后的记录个数和记录长度5课程设计总结这次是我第一次做课程设计,收获很多,遇到了很多从没遇见的问题,通过上网查询,借阅书籍,解决了一局部问题,提高了动手编程的能力,对于c++这门课程也有了新的认识,纸上得来终觉浅,绝知此事要躬行。对于这次的课程设计功能根本都实现了,学校和男女工程的初始化,数据的输入,数据的查询,而且新增了查询所有信息,和按学生查询,查询记录条数和每个记录的长度。界面和最后输出的报表做的格式很好。再经过仔细考虑后,此程序有了储存功能,主要是通过data2文件保存全局变量i,这样就可以知道数据中有几条记录了。i的值是在enter函数中改变的,所以每次调用enter函数后,都将全局变量i写入data2文件〔以覆盖方式〕。但是也有很多的缺乏,希望同学和老师进行指正。以下是我个人发现的几点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 违反交通规则保证书写什么内容
- 透水混凝土销售协议
- 酒店会议室清洁需求
- 酒店服务合同的应急预案
- 重型地磅购买协议
- 钢材招标文件投诉
- 钢筋购买合同范本
- 铝制散热器招标文件
- 银行个人贷款续借合同
- 销售代理协议书范本
- 小区物业消防安全职责与日常检查
- 施工现场危险源辨识及风险评价表
- 烟草专卖许可证新办申请表(国)
- 玩转计算机网络-计算机网络原理智慧树知到课后章节答案2023年下青岛大学
- 安全隐患排查台账(附排查表)
- 核安全工程师-核安全综合知识-辐射防护基础-辐射防护剂量限值
- 音乐治疗学基础理论
- 幼儿园大班语言活动-火警电话119
- 小学二年级期中家长会课件
- 第六届大学生化学实验技能竞赛初赛笔试试题
- 质量通病防治施工措施及质量通病防治措施
评论
0/150
提交评论