c语言实现学生考试系统项目案例.pdf
第9章学生考试系统( Visual c++6.0+ Microsoft! Access2003实现)93.2系统功能结构学生考试系统功能结构图如图9,1所示。学生考试系统考生模块管理员模块系统选题模块统用户注册模块码改模模试题管理模块模块块块图91学生考试系统功能结构图933系统预览学生考试系统主要由考试界面、试题管及考牛成绩管理等几个模块组成,由于篇幅有限,笔者在此仅给岀部分模块效果预览图。学生考试管理系统主窗体用于考生选题答题等操作,如图9.2所示;考试结果信息模块用于对考生的答题结果进行评分,如图9.3所示子试结果信息题号:1来爬叫什么考试结果试歌项题号A项胡家「三分:下一眾重置」确定图92主窗体图93考试结果信息137Visual c++项目开发全程实录试趑管理模垬用于増添考试科目,并可以添加丶修改和删除试趑,如图9.4所示;学生成绩査洵模块用于查询考生的考试成绩,如图9.5所示。试颗管琿俘生查间撇据库管钰试甄管旦弹生成绣查询效据库管里点是个2分「考生姓名「分数增加目新增式题」修改试题删试题图94试题管理图95成绩杳询9.34业务流程图考生结果报表学生考试系统的业务流程图如图96所示。系统评分登录系统9.3.5数据库设计1·数据库分析选择科目开始考试系统出题由于学生考试系统所涉及到的数据信息量不大图96学生考试系统业务流程图对数据库的要求也不是太高,所以本系统采用Microsoft access203数据库数据库名称为 Examonline,在数据库中创建6张表,用于存储各种不同的信息,如图97所示。懂Ex-0nixe:数厍打开忆设计卫)山新速)1X-2国对氯团用最汁器创建表□表便用向导创娃表查诲讨输人数付表答题信息暂存表用户信息报浓芳证点共信早表考试科目表试题信息答案信总表概块图收底夹第9章学生考试系统( Visual c++6.0+ Microsoft! Access2003实现)图97学生考试系统数据库中的表2·数据库概念设计根据前面介绍的需求分析和系统设计规划出本系统中使用的数据库实体对象分别为用户信息实体科目信息实体丶试题信息实体丶试题答案信息实体丶答案暂存信息实体和考试结果信息实体等(1)用户信息实体用户信息实体包括用户编号丶用户名`密码密码提示闫题、案寘真实姓名丶年龄丶性别-联系电话丶用户权限、身份证号和注册日期。用户信息实体ER图,如图9.8所示。(2)科目信息实体科目信息实体包括科目I和科目名称。科目信息实体ER图,如图99所示答案密码提示问题真实姓名密码年龄用户信息科目信息用户名性另用户编号联系电话科目ID科目名称图98户信息实体ER图图99科目信息实体ER图(3)试题信息实体试题信息实体包括试题ID丶试题内容丶试题答案丶试题分数和科目ID°试题信息实体E-R图,如图9.10所示(4)试题答案信息实体试趑答案信息实体包括试题IA选项答案B选项答案℃选项答案和D诜项答案趑答案信息实体ER图,如图911所示。试是I试题ID科目I试题信息试题内容D选项答案)试题答案信息(A选项答案试题分数试题答案C选项答案B选项答案图910试题信息实体ER图图9.11试题答案信息实体ER图(5)答题暂存信息实体139Visual c++项目开发全程实录答趑暂存信息实体包括题号试题内容考生答案考生得分和考生I嗒题暂存信息实体ER图,如图912所示(6)考试结果信息实体考试结果信息实体包括起始时间`止时间、考试科囯、考试成绩和学生编号试结果信恳实体E-R图,如图9.13所示。考生答案考试科目试题内容答题暂存信息考生得分截止时间考试结果信息考试成绩题号考生I起始时间学生编号图9.12答题暂存信息实体ER图图913考试结果信息实体ER图3·数据库逻辑结构设计根捃上所描迒的实体关系E-R图创建数据表。下面分别介绍这6张表的结构。(1)用户信息表( register用户信息表主要用于记录用户注册信息账号信息及密码,保璋只有合法用户才能登录系统该表的结构如图914所示c(2)考试科目表( subject考试和目表主要用于记录要考试的科目信息。该表的结构如图915所示车段名数≠H明用尸满号用名1a5t1on密吗提小问题数宁字段名居类型图914用户信息表图9.15考试科目表(3)试题信息表(test试题信息表主要用于存放各科目考试题信息。该表的结构如图9.16所示。(4)试题答案信息表( testanswer)试题答案信息表主要用存放试题的答案选项。该表的结构如图917所示。宁段名称数据型卫 est1 on正确芒卖LsY crBesab iectid140第9章学生考试系统( Visual c++6.0+ Microsoft! Access2003实现)图916试题信息表图917试题答案信息表(5)答题信息暂存表( xammingInfo答题信息暂存表主要用于暂时存储考生在考试过程中的答题信息,当程序退出后将自动被清空。该表的结构如图918所示(6)考试结果信息表( result考试结果信息表主要用于存储考生考试的时间丶科目丶成绩等信息,方便日后査询。该表的结构如图919所示。画卫nnfo:表宇毁名称数抿类型三段名称说玥考生号图918答题信息暂存表图919考试结吴信息表以上6张数据表关系如图920所示。subjecttestregisterExammingInfoPK, Il I subjectedPKtestedPK, 2 studentidPK 3testnumsubjectnamequestionusernamerightanswerpasswordqucstiontotleanswerFK1, I 2, Il subjectedFK1, 2, I1 studentidnamctestanswerDhonePK, FK1, ltestidAnsweraogin dateloAnswerAnswerAnswerD图920数据表之间的关系9,4公共模块设计在系统程序设计中封装了一些常用的方法和事件,在编程过程中赳到了事半功倍的效果。公共类的编写可以减少重复代码的编写,有利」代码维护味系统中创建了一个公共类 ADOCon类,主要用来访问 Microsoft access数据库,在程序开发时,只需调用相应的方法即可,下面对这个类进行介绍,(1)首先选择 Insert New clas令弹出 New Class(新走类)对话框,在该对话框中为类设置类等信息,如图9,21所示141Visual c++项目开发全程实录a55OKClass inlurimialiuNa图921新建一个 ADOConn类(2)单击OK按钮创建完成,在工作区窗口选择 File view选项卡、选取 Header files文件夹中的ADOConn.h头文件,向其屮添加如下代码用于导入 mado l5dl动态链接库,如图9.22所示。#import"C: Program Files\ Common Files\ System ado!msado15 dll"no namespace rename (eoF", adOEOF")回邮8B87圆adADOCUIILLAll class liMiTErs● ExcLuLcSQL篇!、身gl workspace'ExamOnline'a十! detined卟 X ADUCUN H D!}366;gDU恕g/64_1 NCLUDED白匚 xam Online filld5define AFX ADOCONN H PE5F36GE 9B7P JIAA9 5PC 8PB767A1FB2F INCLUPED#import"C: \\Program Files\\Conmon Files\\System\\ado\\msadD15dll no namespace\口 Hcadcr fili+ MSC UEH >1011tpra#cnd立/! SC UER>18B目 Examina. hv1455在这添加代码publi File View近项卡trSQLYclas. [LRes Fled hlecar'dsetpEr& GetRecordset( bstr t bstISQLi图922导入动态链接库(3)在 ADOConn h头文件中为类添加成员变量、添加如下代码。Connection Ptr m pCon/添加一个指向( Connection对象的指针RecordsetPtr m pRs/加一个指向 Recordset对象的指针(4)为 ADOCon类添加成员函数。在二作区选择「 unction TypcClassⅤiew选项卡,单击 ADOConn节点,在弹出的快捷Cancel菜单中选择 Add Member Function命令,打开添加戒员函巴kr数窗口,如图923所示。C Rule tleuC Privale(5)在 Function Type文本框中输入函数的返回值厂 Virtual类型void,在 Function declaration文本框中输入函数的图923添加成员函数142第9章学生考试系统( Visual c++6.0+ Microsoft! Access2003实现)声明 OnInitADOConn,单击OK按钮添加成员凼数 OnInitADoConn谢数主要用于打开数据库连接,在函数中添加如下代码。void ADOConn: OnlnitADOConnoCoinitialize(null):/初始化 OLE/ COM库环境trym pCon. Createlnstance("ADODB Connection")/创建 Connection对象m pCon->Connection Timeout-3设置连接延时设置连接字符串m pCon->Open("ProviderMicrosoftJet OLEDB 4.0; Data Source=ExamOnline mdb","",adModeUnknown);catch Co捕获异常AfxMessage Box(e Description)显示错误信息(6)按照上泷方法继续沄加 Exiton成员囪数, Exitconn函数主要用于关闭数据库连接呸加代码如下void ADOConn: ExitConn()if(m pRs!NUL先判断记录集是否为空Rs->Close/不为空则先关闭记录集m pCon->Cosco/关闭连接CoUninitializeo释放环境(7)接着在 ADOConn类中添加 GetRecordSet( bstr t bstr SQL)函数,函数类型为RecordsetPtr&,该函数主要用于打开并获得记录集。添加代码如下RccordsctPtr& ADOConn: GctRccordSct( bstr t bstr SQLif(m pCon--NULL)/判断 Connection对象是否为室OnlnitADOConno如昊为空则重新连接数据库m pRs. Createlnstance("ADODB. Recordset")/创建记录集对象获取数据表中的数据m pRs->Open(bstr SQL, m pCon. GetInterfacePtr(, adOpen Dynamic, adLockOptimistic, adCmdText)catch( com error e)/捕获异常AfxMessage Box(e Description)显示错误信息return m pRs;/反回记录集Visual c++项目开发全程实录(8)最后再为 ADOConn类中添加 Execute SQL( bstr t bstrSQL)函数,函数类型为BOOL,该函数主要用于执行数据库语句。添加代码如下:BOOL ADOConn: Execute sQL( bstr t bstr SQL)tryif(m pCon==NULL)/)断 Connection对象是否为空OnInitAdOConn(;/如昊为空则重新连接数据库m pCon->Execute(bstrSQL, NULL, adCmdText):/行数据库语句rcturn truc;catch( com error e)获异常AfxMessageBBox(e Description);显示错误信息return false9.5主窗体设计程序主窗体的作用是给学生提供一个考试的平台,为了使考生在考试过程中不受外界事务的影响主窗体的设计必须简单明了。主窗体运行结果如图924所示。主要包含以下内容区考试信息显示(包括题号,试题题目,试题选项显示区答题按钮(包括继续下一题,修改上一题及重新考试等功能学生考试或旋试题题日乱西下一题图924主窗体运行结果设计方法如下(1)启动 MicrosoftⅤ isual c++6.0,新建一个MHC应用程序,将程序命名为 Exam online,如144
用户评论