C++课程设计 31.docx
- 文档编号:28918806
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:29
- 大小:154.63KB
C++课程设计 31.docx
《C++课程设计 31.docx》由会员分享,可在线阅读,更多相关《C++课程设计 31.docx(29页珍藏版)》请在冰豆网上搜索。
C++课程设计31
大连科技学院
面向对象程序设计(A)课程设计
题目 宏发顺驾校考试系统
学生姓名安凯辰专业班级计算机08-2
指导教师王影职称 高级工程师
所在单位信息科学系计算机教研室
教学部主任王立娟
完成日期2011年9月9日
课程设计报告单
学号
0801020215
姓名
安凯辰
专业班级
计算机08-2
考核项目
评分
备注
1
平时工作态度及遵守纪律情况
(10分)
2
掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平
(10分)
3
独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度
(20分)
4
完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)
(60分)
总评成绩
综合评定:
(优、良、中、及格、不及格)
指导教师签字:
2011年9月9日
《面向对象程序设计(A)课程设计》任务书
一、课程设计任务及要求:
任务:
为力解决驾校考试系统信息混乱、增,删,改,查,不方便工作压力大等问题。
本次课程设计开发了这套简单,方便的驾校考试管理系统,并且此软件可以自动判题,生成成绩。
要求:
(1)根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。
可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。
(2)提交课程设计报告。
(3)指标:
要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数在200行语句以上。
二、工作量
2周(10个工作日)时间
三、计划安排
第1个工作日:
查找相关资料、书籍,阅读示例文档,选择题目。
第2个工作日-第3个工作日:
设计程序结构、模块图。
第4个工作日-第9个工作日:
完成程序的编码,并且自己调试、测试。
穿插进行课程设计报告的撰写。
第10个工作日:
上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。
指导教师签字:
2011年7月10日
目录
题目:
宏发顺驾校考试系统1
1 需求分析1
2 概要设计1
3 详细设计2
4 编码2
4.1 管理员登录模块2
4.2 试题管理模块3
4.3 扫描题库模块5
4.4 程序辅助模块6
5 调试分析6
6 测试结果及运行效果7
7 系统开发所用到的技术11
参考文献12
课程设计总结13
附录14
题目:
宏发顺驾校考试系统
1 需求分析
此软件开发是为了实现上机考试,给同学一个上机练习而产生的需求。
近年来随科技进步,网上考试越来越迫切,因此针对这一需求,此软件就此产生。
此软件分两个模块,一个是管理员管理系统,另一个是学生考试系统;管理员可以随时录入试题,可以从问件上直接修改试题;学生可以直接选择答题,和随机答题两种方式进行。
并且此软件可以自动判题,生成成绩。
给同学和老师带来了很多方便。
此程序操作简单,很容易掌握。
2 概要设计
图2-1 概要设计图
此软件分两个模块,一个是管理员管理系统,另一个是学生考试系统;从图中可以看出程序中管理员的管理系统又分三个模块:
(1)管理员登陆模块
(2)试题管理模块
(3)扫描题库模块
3 详细设计
设计tiku类及student类,运用面向对象的设计思想,实现对类的封装及成员的保护,运用链表实现首地址的传递,灵活的进行各函数间的地址传递及调用。
运用文件保存信息,分别用tiku.txt保存题库的信息,用answer.txt保存题库答案信息。
表3-1题库信息
类名
成员类别
类型
类型名
描述
Tiku
属性
char
username[20]
用户名
char
userpsw[20]
密码
char
phonenum[20]
电话号码
int
year
出生年
int
month
出生月
houxuanren*
next
下一个节点
方法
void*
userlogin()
用户登录
void*
intmenu()
菜单函数
void*
daochu();
选择处理
void*
doselect()
修改信息
void
checkresult()
判断答案
void
randdo()
随机出题
void
select()
出题
表3-2考生信息
类名
成员类别
类型
类型名
描述
student
属性
char
num1
学员学号
char
name1
学员姓名
int
flag
判断是否及格
student*
next
指向下一节点
方法
int
toupaio1(student*h);
学生登录
void
baocun1(student*h)
保存信息
student
add2();
加载考生信息
4 编码
4.1 管理员登录模块
模块描述:
此模块是确保试题的保密,不被任意人随意看到而设置的一个密
码验证登陆模块。
其作用是起到保护试题不被泄露。
程序如下:
intuserlogin()
{
charusername[20];//用户名
charuserpsw[20];//密码
cout<<"*************************************************"< cout<<"**"< cout<<"**"< cout<<"*欢迎使用*"< cout<<"**"< cout<<"**宏发顺驾校*考试系统**"< cout<<"*管理员登陆*"< cout<<"**"< cout<<"**"< cout<<"*************************************************"< cout<<"用户名: ";cin>>username; if(strcmp(username,"admin")){ cout<<"用户名错误! "< system("pause"); system("cls"); userlogin(); } else{ cout<<"密码: ";cin>>userpsw; if(strcmp(userpsw,"123")){ cout<<"密码错误! "< system("pause"); system("cls"); userlogin(); } else{system("pause"); system("cls"); return1;} } return0; 此模块的性能: 密码登陆。 其灵活性很高,当密码输入错误时,界面上会 提示“按任意键。 。 。 ”后,刷新登陆界面重新输入。 输入值: 输入的账号以及密码是唯一的,其程序是采用字符串的运算函数 strcmp(比较)来确定密码是否正确的。 字符串的长度是二十个字符,所以在超出 20个字符后会只会程序中只会存储前20个字符。 算法: 算法很简单,只是通过字符串的比较得出的0或1的值,再用if 语句来选择,1进行下个模块的运行,0表示输入错误,重新输入。 4.2 试题管理模块 模块描述: 由于此模块比较复杂,所以主要在 (1)用文件保存试题库, (2) 试题录入: 可随时增加试题到试题库中,这两个功能中。 此模块程序如下: voidadd() { ofstreamout_stream;//文件流定义 charcontent[2000];//用于存放输入的题目 intdist,n; //dist用于判断是否继续添加新的题目,n是数组计数器 intnum;//用于计数 intoptnum; charans; charansnum='A'; do{ n=0; num=1; out_stream.open("tiku.txt",ios: : app); //打开文件tiku.txt,ios: : app表示追加文件尾 if(out_stream.fail()) {cout<<"Inputfileopeningfailed.\n"; exit (1); } cout< 新增的题目中,不允许出现'@'和'#'! ! ! "< "< \n"; do{ cin>>content[n]; n++; }while(content[n-1]! ='#'); n=0; while(content[n]! ='#'){ out_stream< n++; }; out_stream< cout<<"你想要设置几个选项呢? 请输入答案选项数: ";cin>>optnum; do{ n=0; out<<"请输入第"< do{ cin>>content[n]; n++; }while(content[n-1]! ='#'); n=0; while(content[n]! ='#'){ out_stream< n++; }; out_stream< num++; }while(num! =optnum+1); out_stream< out_stream.close(); out_stream.open("answer.txt",ios: : app); //打开文件tiku.txt,ios: : app表示追加文件尾 if(out_stream.fail()){ cout<<"Inputfileopeningfailed.\n"; exit (1); }do{ cout<<"请录入答案: \n";cin>>ans; }while(ans! ='A'&&ans! ='B'&&ans! ='C'&&ans! ='D'); out_stream< out_stream.close(); maxnum++; cout<<"继续回答问题吗? 选择'1'继续,选择'2'回到主菜单。 "< }while(dist==1); doselect(menu()); } 性能: (1)用文件保存试题库(每题包括题干、4个备选答案、标准答案) (2)试题录入: 可随时增加试题到试题库中 (3)可以在录完,每一道题后,退出或继续录入 输入值: 按照相应的提示输入信息,题目会保存到tiku.txt中,答案 会保存到"answer.txt"中,并且原来的信息不会丢失。 保存到两个文件中在自 动判题时就要求两个文件一起调用,当然这是另外一部分,不在我的程序 内。 输入的信息可以是字符也可以是汉字。 算法: 此模块算法最大特点是根据字符#判断试题的题目和选项录入是 否结束。 利用循环来实现试题一道一道的录入,从而保存到文件中。 数据文件存储说明: 4.3 扫描题库模块 模块描述: 此模块是为了确定试题库中有多少道题,并且其在录入试题时也 会起到作用,根据其扫描出的题数,确定录入试题的题号。 程序如下: //*************扫描题库******************************** //统计已有题目数量 intcheckAll(){ intcount=0; charcheck;//输入信息试题题目及选项试题答案 tiku.txtanswer.txt ifstreamin_stream; in_stream.open("tiku.txt");//用open函数打开tiku.txt文本 if(in_stream.fail()){//判断打开是否成功 cout<<"Inputfileopeningfailed.\n"; exit (1); }while(in_stream>>check){ if(check=='@') count++;}returncount;} 算法: 此块的算法是在根据录入试题时在题号前面自动录一个@,所以在 扫描时根据的个数来判断试题的个数。 4.4 程序辅助模块 辅助模块是为了能够实现各模块之间紧密连接,比如程序中的menu,select模块等。 以上是部分代表性函数及功能的实现另外还有管理员登陆密码功能、修改资料、保存资料等功能没有一一写明。 5 调试分析 完成管理员管理系统的详细设计后,接下来就到了系统测试阶段。 在这一阶段 中,首先要完成代码的编译过程。 代码初步完成编写后,要仔细地进行编译,根 据系统提示错误,进行修改。 注意代码的书写规范,包括命名惯例、注释、分隔 和缩进等。 在这个过程中,我们要养成良好的程序编写习惯,对编译过程中经常出现的 错误情况加以注意,为今后的程序编写打下基础。 6 测试结果及运行效果 程序主界面: 图6-1 系统主界面 测试内容: 实现管理员和学生两个不同角色的登陆界面。 操作步骤: 输入数字1,然后按任意键 期望结果: 管理员理界面登陆成功 图6-2 管理员登陆界面 测试内容: 实现登陆正确,输入错误会重新输入 操作步骤: 输入用户名admin,然后按回车 期望结果: 用户界面登陆成功 图6-3 密码输入界面 操作: 按回车判断是否输入正确 操作截图: 图6-4 密码正确后界面 图6-5 密码输入错误界面 测试内容: 重新输入密正确码后是否进入扩充题界面 操作步骤: 按照提示操作; 期望结果: 输入成功,进入扩充试题界面 图6-6 登陆成功试题管理界面 图6-7 试题录入界面 测试内容: 测试出入题目后是否能够录入文件 操作步骤: 输入题目,不包括选项,最后输入一个#字符; 期望结果: 输入成功,进入输入选项界面 图6-8 继续录入或退出界面 图6-9 试题录入文件截图 图6-10 试题答案截图 7 系统开发所用到的技术 VisualC++6.0 应用语言C++ 注释: C++是在C语言引入了面向机制而形成的一种程序设计语言,程序结构灵活,代码简洁清晰,可移植性强,支持数据抽象,面向对象程序设计和泛型程序设计。 所以它是一种应用广泛的系统语言。 参考文献 [1]谭浩强.C++程序设计(第二版).清华大学出版社 [2]吕凤翥.C++语言基础教程(第2版).清华大学出版社. [3]吕凤翥.C++语言基础教程题解与上机指导(第二版).清华大学出版社. [4]StanleyB.Lippman,JoseeLaijoie等.C++primer(中文版).人民邮电出版. 课程设计总结 通过这次c++的课程设计,熟悉了c++语言的基本语法,选择,循环等结构。 深入练了函数的调用方法和文件的读写方法熟悉了结构体的使用更加深化了面向过程语言思想和一些基本算法。 通过对程序的后期调试熟悉了c++常见错误锻炼了思维的严密性和完备性。 通过对程序的注释和画流程图形成了一套自己编程的风格和清晰地思路使思维更加条理化清晰化。 此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。 在此,感谢于老师的细心指导,也同样谢谢其他各组同学的无私帮助! 附录 #include #include #include #include #include usingnamespacestd; //***************全局变量定义********************************* intmaxnum;//maxnum(题库中已有的题目总数) floatfinal_mark,rightnum,alldone;//rightnum代表做对的题目数,final_mark(最后成绩),alldone(所做的题目总数) //************************************************************ //***************函数声明************************************* intuserlogin();//用户登录 intmenu();//菜单函数 voiddoselect(intchoice);//选择处理 voidcheckresult(intoptionque,charoptionans);//判断答案 voidcalculate();//计算成绩 voidranddo();//随机出题 voidselect();//出题 voidadd();//添加题目 intcheckAll();//扫描题库 //************************************************************ //************************主函数****************************** intmain() { cout<<"*************************************************"< cout<<"**"< cout<<"**"< cout<<"*欢迎使用*"< cout<<"**"< cout<<"**宏发顺驾校*考试系统**"< cout<<"**"< cout<<"**"< cout<<"**"< cout<<"*************************************************"< cout<<">>>>管理员请输入1: "< cout<<">>>>考生请输入2: "< intpart; cin>>part; if(part==1) {maxnum=checkAll(); cout<<"*************************************************"< cout<<"**"< cout<<"**"< cout<<"*欢迎使用*"< cout<<"**"< cout<<"**宏发生驾校*考试系统**"< cout<<"**"< cout<<"**"< cout<<"**"< cout<<"*************************************************"< system("pause");//调用DOS命令暂停 system("cls");//调用DOS命令清屏 srand(time(0));//随机种子设置 if(userlogin()==1) doselect(menu());//处理选择 }return0; }//********************************************用户登录 intuserlogin() { charusername[20];//用户名 charuserpsw[20];//密码 cout<<"*************************************************"< cout<<"**"< cout<<"**"< cout<<"*欢迎使用*"< cout<<"**"< cout<<"**宏发顺驾校*考试系统**"< cout<<"*管理员登陆*"< cout<<"**"< cout<<"**"< cout<<"*************************************************"< cout<<"用户名: "; cin>>username; if(strcmp(username,"admin")){ cout<<"用户名错误! "< system("pause"); system("cls"); userlogin(); }else{ cout<<"密码: "; cin>>userpsw; if(strcmp(userpsw,"123")){ cout<<"密码错误! "< system("pause"); system("cls"); userlogin(); } else{ system("pause"); system("cls"); return1; } } return0; } //********************************************菜单 intmenu() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+课程设计 31 C+ 课程设计