收藏 分销(赏)

毕业设计-基于vc开发与设计考试系统.doc

上传人:鼓*** 文档编号:9904505 上传时间:2025-04-12 格式:DOC 页数:61 大小:586.50KB
下载 相关 举报
毕业设计-基于vc开发与设计考试系统.doc_第1页
第1页 / 共61页
毕业设计-基于vc开发与设计考试系统.doc_第2页
第2页 / 共61页
点击查看更多>>
资源描述
毕业设计(论文) 基于VC开发与设计考试系统 授人以渔 能力为本 摘 要 随着社会的发展,考试要求、类型和规模的不断变化,普通的手工阅卷已无法满足考试形式和内容日益复杂多样的需求。如何更好的实现公平公正,充分发挥考试的作用,使之真正成为选拔录用人才的工具,这个问题已经成为社会关注的焦点。随着国家对创新型、高素质人才需求的增加,对考生实践能力和创新意识进行考察的发散思维和主观性试题在教育考试中所占比重越来越多,这就给评阅工作的公平、公正性提出了新的挑战,传统手工阅卷诸多弊端逐渐显现,如何更好的控制阅卷误差成为急待解决的问题。随着计算机网络技术、信息处理技术以及计算机的普及,计算机考试系统应运而生。计算机考试系统的出现可以说是我国考试领域的重大变革,近年来高考、中考、全国英语等级考试、公务员考试等大型考试中考试系统备受关注。 本论文针对班级考试开发设计了一个学校信息管理系统的一个子系统——班级考试系统。经过对多种主流数据库管理系统进行比较分析之后,选择Office Access作为数据库管理系统,使用VC++6.0作为开发平台,MFC类库辅助。通过计算机对信息的管理简化了教师对试卷的管理过程,优化了试卷的管理。首先对考试系统进行简单地绪论和定义,随后对考试系统的可行性进行了多方面的研究,并从需求分析下手,对考试系统粗略的分析,构建起考试系统的基本结构,并对系统架构和功能架构进行设计。在总体设计中划分功能模块,并对系统的功能模块进行描述,对各个模块的设计与实现进行阐述,列举了一些关键代码帮助理解,并对系统界面进行了人性化的设计。最后对本次开发和研究进行了总结和展望。 关键词:VC++;Access;MFC;考试系统 目 录 第一章 绪 论 1 1.1 考试系统的定义 1 1.2 考试系统的特点 1 第二章 需求分析 3 2.1 功能需求 3 2.2 可行性分析 3 2.3 开发及运行环境 4 2.3.1 硬件环境 4 2.3.2 软件环境 4 2.3.3 开发工具及其技术的选择 5 2.4 开发系统的应用技术 6 2.4.1 Access数据库的介绍及其优缺点 6 2.4.2 MFC的介绍及其优缺点 7 第三章 系统总体设计 9 3.1 功能模块设计 9 3.1.1 学生考试子模块图 9 3.1.2 教师管理子模块图 10 3.2 系统流程图 10 3.3 用例图 11 3.3.1 系统总用例图 11 3.3.2 学生考试子模块用例图 11 3.3.3 教师管理子模块用例图 12 第四章 数据库设计 13 4.1 E-R分析 13 4.2 数据库的逻辑设计 14 4.3 数据库的生成 15 第五章 系统实现 17 结 论 24 致 谢 25 参考文献 26 附 录 27 第一章 绪 论 随着家长对孩子教育方面的不断重视,教育行业在人民心中的地位越来越重,老师们的负担与压力也越来越重。如何减轻老师的负担及压力,已经成为广大学校校长需要解决的头号难题。在教育工作中,为学生考试出试卷和批改改卷是老师们最头痛的,不仅消耗大量的时间,而且消耗大量的精力体力。因此,考试过程由人工操作转向计算机操作是必然的结果。 1.1 考试系统的定义 考试系统是以财政部印发的《从业资格考试大纲》为依据、以优化的题库资源为基础、以现代信息技术为手段,通过随机组合生成无纸化考试试卷进行考试,并及时生成考试成绩,集考试报名、试卷生成、上机考试、阅卷、成绩生成等为一体的、多元化,新型的从业考试管理模式。计算机考试系统的出现可以说是我国考试领域的重大变革。 1.2 考试系统的特点 传统考试从出题、组卷、印刷,到试卷的分发,答题、收卷,再到判卷,公布成绩,统计分析考试结果整个过程都需要人工参与,周期长,工作量大,容易出错,还要有适当的保密工作,使得整个学习考试成本较大。而考试系统相对于传统考试拥有了很多优势: 1.减少工作人员人工输入分数的环节,减少过程中出现错误的可能性,提高准确性。 2.减少纸质试卷封装加工环节,节省费用开支,减少出错机率。 3.数据全部电子化,可以做到永久保存,管理也更加方便高效。 4.具有评阅质量监控功能。由于所有考试信息保留在服务器,所以可以实时掌握阅卷质量,如果出现偏差可以及时纠正。 5.真正实现无干扰阅卷,尽量减小人为误差,真正实现公平公正,这是传统手工阅卷所无法比拟的。 6.传统手工阅卷中需要专人核对,而且需要搬用试卷,考试系统自动分配,大大节省人力。 7.数据信息方便深度挖掘,可以作为教学和决策依据。 第二章 需求分析 2.1 功能需求 查阅大量相关的文献资料,对题目进行了深入地研究。通过对班级考试和师生相关人物角色关系的调研,并对考试相关情况进行了解,得出系统需具有以下功能: 1.由于考试的需要和保密性,也为了便于管理,系统用户具有不同的等级,即不同的权限。用户按等级分为两个等级:学生、教师。不同权限的用户登录后进入系统的页面也不同(系统的功能菜单不同)。其中学生只有对考试现场进行操作,不能对试题管理做任何操作。 2.从现有的考试模式来看,系统开发要具有两大主要功能模块:学生考试模块和教师后台管理模块。 3. 学生考试模块主要是对学生考试的处理,在这个功能模块里主要是学生的考试功能,进入时选择考试科目,进入后开始考试,考试时间设为1个小时。为了公平,每人每科只能考一次。 4.教师后台管理模块根据不同需求对所需要的数据进行分类管理统计分析,对于教师来说,所需要做的就是对考生所考的科目、试题和考试所的分数进行分类管理。根据要求设置不同的考试科目和考试题目,以便对学生的学习成绩进行考核,这些考生的考试数据对教师来说,能更好的了解学生学习的情况。对以后的教学有更好的帮助。增加、修改、删除和查询等数据操作是维护系统所必须的。 2.2 可行性分析 本系统的开发宗旨,以及总体任务就是要实现考试的自动化﹑规范化、系统化、科学化和人性化。通过对论文的调查与分析,复查了系统的规模和目标,所以为了能够实现编制这个软件所设定的目标,在程序的开发前的可行性析是有必要的。本章对开发该系统的可行性从以下几个方面进行了分析。 1.社会可行性:随着国内外软件开发的日益发展壮大,各种中小企事业单位已具备独立开发各种类型的软件的能力,能够满足不同行业的特别的需求。目前很多的学校在考试的管理运行中都采用科学的信息系统管理方法加以统一管理,运用科学的管理方法可以使考试的投入的相对减少而获得更加可观的考试效果。这是没个学校都愿意的,因此,考试系统的开发是可行的。 2.技术可行性:这个系统尽管其在组织关系上存在着很大的复杂性,繁琐性,但是就整个系统的技术构成上来看,它还是属于一个数据库应用类的系统。其基本操作还是对存在数据库进行添加、删除、查找、编辑等。所以就单纯的数据库应用来看,不存在太大的技术问题。该系统初步的设想是运用C语言开发的,采用B/S模式,在开发中不会存在技术的问题,所以在技术上是可行的,能够实现这个系统。 3.经济可行性:开发本系统的成本是很低的,能够满足经济要求。 根据可行性研究的结果,认为可以开发这个系统。 2.3 开发及运行环境 2.3.1 硬件环境 可以根据班级的大小选择合适的硬件的配置,如表2-1所示 表2-1考试系统的硬件选择 用户(人) 并发访问数据 稳定性 维护性 备选服务器 小型班级(10-30) 20-60(条/s) 低 差 CPU/256M 内存/256M 磁盘/30G 中型班级(30-50) 60-800(条/s) 中 一般 CPU/512M内存/512M磁盘/100G 大型班级(50-100) 800-1600(条/s) 高 良 CPU/1G内存/1G磁盘/300G 超大型班级(>100) >1600(条/s) 极高 优 CPU/2G内存/2G磁盘/500G 以上这些硬件的配置不是绝对的,这些数据只是参考数据,具体的配置还要根据用户的需求来选择,本人由于设备有限选用Pentium CPU/1G 内存/1G 磁盘/300GB个人PC。 2.3.2 软件环境 软件配置主要包括操作系统、数据库和开发工具及其技术的选择。 1.操作系统的选择 服务器操作系统的选择,根据用户量的大小选择不同的操作系统,一般是选择用户比较熟悉的如Windows 2000﹑Windows XP Professional或者 Windows 2000 Server操作系统。而UNIX﹑Linux﹑Windows NT操作复杂,界面对用户来说很陌生。经比较选择 Windows XP Professional操作系统。用户操作系统的选择,因为本系统对客户机的要求非常的简单,所有操作系统最好选择我们大家都非常的熟悉的Windows操作系统如:Windows 98、 Windows 2000、Windows XP、Windows 2000 Server等都可以,本人选择 Windows XP操作系统。 2.数据库的选择 可以根据数据的大小选择不同的数据库,如表2-2所示 表2-2数据库选择 用户(人) 数据量大小 稳定性 维护性 数据库 小型班级(10-30) 小 低 差 Mysql 中型班级(30-50) 一般 中 一般 Mysql、Sql Server 大型班级(50-100) 大 高 良 Access、Sql Server 超大型班级(>100) 极大 极高 优 Oracle 上面列举出来的数据库配置也并不是绝对的。对于超大型班级的数据信息量是非常大的,要求数据库的吞吐量和稳定性较高,同时对维护性要求也很高,能够在定时的较短时间内恢复系统和数据,这需要选择更好的数据库。但是对于一般的中小型班级,由于学生较少,数据信息量相对也比较小,为了节约成本和资金,可以选择免费的数据库或者是较为便宜的数据库,这要根据用户的需求来确定。数据库的选择还要考虑与操作系统的配合,本人为了免去数据库的开支,选择的是Access数据库。 2.3.3 开发工具及其技术的选择 系统开发使用VC++开发平台,MFC类库辅助,采用Access数据库,在Windows平台上运行,它有一个很友好和人性化的图形用户界面,有很好的可扩展性,使用非常的方便简单,其优势很明显。 2.4 开发系统的应用技术 2.4.1 Access数据库的介绍及其优缺点 1.基本介绍 Microsoft Office Access(前名 Microsoft Access)是由微软发布的关联式数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office的成员之一。 Access能够存取 Access/Jet、Microsoft SQL Server、Oracle(甲骨文软件公司),或者任何 ODBC 兼容数据库内的资料。熟练的软件设计师和资料分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的"进阶用户"则能使用它来开发简单的应用软件。虽然它支援部份面向对象(OO)技术,但是未能成为一种完整的面向对象开发工具。   这个软件能够有效地处理大量记录但是测试显示在某些情况下会导致数据损毁.比如说,大小超过700MB的文件常会出问题。(值得注意的是在1.0版广泛应用的时候大多数硬盘是小于700MB的。)软件的使用指南指出过时的设备驱动和错误的配置可能回导致数据丢失。 与一般的CS关系型数据库管理不同,Access不执行数据库触发,预存程序或交互式登录操作。Access 2010包括了嵌入ACE数据引擎的表级触发和预存程序,因此,客户-服务器数据库系统对于Access 2010就不是必需的了。在Access 2010中,表格,查询,图表,报表和宏现在基于网络的应用上能够进行分别开发。 2.Access数据库的的优点 (1)存储方式单一 Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件种,便于用户的操作和管理。 (2)面向对象 Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。 (3)界面友好、易操作 Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。 (4)集成环境、处理多种数据信息   Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。 (5)Access支持ODBC(开发数据库互连,Open Data Base Connectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。 3.Access数据库的缺点 Access是小型数据库,既然是小型就有他根本的局限性,以下几种情况下数据库基本上会吃不消: (1)数据库过大,一般Access数据库达到50M左右的时候性能会急剧下降。 (2)网站访问频繁,经常达到100人左右的在线。 (3)记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降。 2.4.2 MFC的介绍及其优缺点 1.MFC的介绍 微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C++ 开发工具发布。目前最新版本为10.0(截止2011年3月),并且发布了中文版。该类库提供一组通用的可重用的类库供开发人员使用,大部分类均从C Object 直接或间接派生,只有少部分类例外。 MFC 应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。 Windows 应用程序中,MFC 的主包含文件为"Afxwin。h"。 此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。由于它的易用性,初学者常误认为VC++开发必须使用MFC,这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。 2.MFC的优点 随着编程语言的推陈出新,MFC一些缺点日益突出。最重要的就是入门门槛相对其他语言要高,而且同样完成一个任务代码量相对较多。而原有的优势如运行速度快等,也因为其他编程语言的日臻完善和个人电脑的运算速度增加而显得不那么突出。MFC似乎江河日下。 但是MFC真的没有任何优势了吗?不是,面对底层程序,它能很轻松的与Windows API或驱动程序结合,就是在自己的代码中直接使用API函数,而API和驱动程序的资料都是以C语言为基础的,这使得VC程序员能够更轻松的使用Windows API。这样造成了一个很有意思的现象,即入门时VC程序员要付出更多的努力来学习,但是一旦掌握后,开发其他领域的程序或使用第三方软件时,如工业控制类的程序,由于底层的程序都是用C语言编写,反倒是VC程序员能够更快的掌握该领域的编程技术。而很多其他的编程语言甚至找不到相关的资料。这就说明VC(MFC)实际上是一种入门困难,但是扩展学习却很轻松的语言框架。如果局限于某一领域的话VC毫无优势可言,但是如果开发一个新的领域的应用程序或者该程序涉及多个应用领域的话,可减少重复学习的频率和难度,VC(MFC)的优势会立刻显现出来。 第三章 系统总体设计 3.1 功能模块设计 功能模块设计在整个系统设计当中站有非常重要的地位,通过它可以对系统进行详细的设计。如图3-1是系统模块图。 考试系统 学生考试模块 教师管理模块 图3-1 系统模块图 3.1.1 学生考试子模块图 学生考试模块 科目选择 试卷考试 图3-2 学生考试模块图 3.1.2 教师管理子模块图 教师管理模块 试题管理 学生成绩查询 数据库管理 增加科目 删除科目 新增试题 修改试题 删除 试题 数据库备份 数据库还原 数据库初始化 图3-3 教师管理模块图 3.2 系统流程图 系统流程图又叫事务流程图,是在计算机事务处理应用进行系统分析时常用的一种描述方法(另一个是数据流图),它描述了计算机事务处理中从数据输入开始到获得输出为止,各个处理工序的逻辑过程。 图3-4 系统流程图 3.3 用例图 用例图是简单的形象的描述用户对整个系统的操作,当然不同权限的用户拥有的用例关系也不同。 3.3.1 系统总用例图 系统用例图如图3-5所示,是用来形象的描述系统业务处理以及业务与业务之间的内在关系。 在整个系统的用例中,两个不同权限的用户,对应他们的业务处理也是不同的,教师和学生拥有的权限是完全不同的,教师不对学生考试进行任何干预,学生不对试题、成绩、数据库做任何操作。 学生 教师 科目选择 试卷考试 登录 学生成绩查询 数据库管理 试题管理 试卷 图3-5 系统总用例图 3.3.2 学生考试子模块用例图 学生考试用例图如图3-6所示,该用例图有且仅有一个用户,也就是只有学生这一用户,该用户仅对考试科目进行选择并对试题作答,此外不能做其他操作。 学生 科目选择 试卷考试 试卷 图3-6 学生管理模块用例图 3.3.3 教师管理子模块用例图 教师管理管理用例图如图3-7所示,该用例图描述了教师在后台对学生信息的管理的具体情况和流程。 教师 学生成绩查询 数据库管理 试题管理 删除科目 新增试题 修改试题 删除试题 增加科目 图3-7 教师管理模块用例图 第四章 数据库设计 4.1 E-R分析 在整个系统中,所存在的实体有试卷实体、学生实体和教师实体。 对考试系统的E-R分析,从大的方面设计出各个实体之间的关系,再在这个关系的基础上进行细化。 学 生 登录名 姓 名 身份证号 年 龄 性 别 电 话 考试科目 考试成绩 编 号 图4-1 学生实体图 教 师 登录名 姓 名 身份证号 年 龄 性 别 电 话 编 号 图4-2 教师实体图 图4-3 试卷实体图试 卷 科目名 考试题目 所有答案 正确答案 编 号 4.2 数据库的逻辑设计 通过E-R图的分析,本系统所要求的数据库的框架已经确定。下面实现数据库的逻辑结构即将数据库的概念结构转化为access数据库系统所支持的实际数据模型。数据库由下面5个表组成,每个表格表示在数据库中的一个表。 各个表的详细信息如下: 1. 注册信息表 register 表4-1 register 字段名称 数据类型 长度 是否必填 说明 studentid 数字 长整型 是 用户编号 username 文本 20 否 用户名 password 文本 50 否 密码 question 文本 50 否 密码提示问题 answer 文本 50 否 答案 name 文本 20 否 真实姓名 age 数字 长整型 否 年龄 sex 文本 50 否 性别 phone 数字 长整型 否 联系电话 power 文本 50 否 用户权限 idcard 文本 50 否 身份证号 login_date 日期/时间 否 注册日期 2. 考试情况表 result 表4-2 result 字段名称 数据类型 长度 是否必填 说明 starttime 文本 50 否 起始时间 closetime 文本 50 否 截止时间 subject 文本 50 否 考试科目 totle 数字 长整型 否 学生成绩 studengtid 数字 长整型 是 学生编号 3. 科目表 subject 表4-3 subject 字段名称 数据类型 长度 是否必填 说明 subjectid 数字 长整型 否 科目ID subjectname 文本 50 否 科目名称 4. 试题表 test 表4-4 text 字段名称 数据类型 长度 是否必填 说明 testid 数字 长整型 是 试题ID question 文本 50 否 考试题目 rightanswer 文本 50 否 正确答案 totle 数字 长整型 否 题目分数 subject 数字 长整型 否 科目ID 5.试题答案表 testanswer 表4-5 testanswer 字段名称 数据类型 长度 是否必填 说明 testid 数字 长整型 否 试题ID AnswerA 文本 50 否 A选项 AnswerB 文本 50 否 B选项 AnswerC 文本 50 否 C选项 AnswerD 文本 50 否 D选项 4.3 数据库的生成 1.生成表register(注册信息) 图4-4 表register生成情况 2.生成表result(考试情况) 图4-5 表result生成情况 3.生成表subject(科目) 图4-6 表subject生成情况 4.生成表test(试题) 图4-7 表test生成情况 5.生成表testanswer(试题答案) 图4-8 表testanswer生成情况 第五章 系统实现 本系统采用VC++6.0软件开发,具有完整的应用开发功能,同时支持多种关系数据库管理系统,采用面向对象技术,图形化的应用开发环境,是数据库的前端开发工具。以下是系统运行情况。 1. 用户的登录界面: 打开(ExamOnline.exe)文件后出现用户登录界面,如下图所示: 图5-1 用户登录界面 2.用户的注册界面: 登录失败后会提醒注册或找回密码,如下图所示: 图5-2 注册提醒 图5-3 密码错误提醒 注册提醒状态下选择”是(Y)”则会出现注册界面,当然在登陆界面选择注册也会出现注册界面。如下图所示: 图5-4 注册界面 错误提醒状态下选”是(Y)”则会出现找回密码界面。如下图所示: 图5-5 密码找回界面 3.学生选择考试科目界面: 学生登陆成功后就会进入考试科目选择,如下图所示: 图5-6 学生考试科目选择界面 4.学生考试界面: 学生选择考试科目后则会进行该科目的考试,如下图所示: 图5-7 学生考试界面 5.教师对试卷的操作界面: 教师权限使用测试用户名tsoft 密码123进行登录,登录成功后则会直接进入对试卷的操作界面,如下图所示 图5-8 试卷管理界面 6.教师对学生成绩的操作界面: 图5-9 学生成绩管理界面 7.教师对数据库的管理界面: 图5-10 数据库管理界面 结 论 在整个设计的过程中,我对VC6.0++和Access等内容不仅从理论方面有了深入的学习,而且将其实践的过程融入到设计之中,这样就使得理论知识与实际很好的结合在一起,让我感受了软件开发的整个过程。毕业设计不仅是对我在大学所学知识的一个综合运用,也是一次增长知识和经验的好机会,同时也使我学会了许多处理、解决问题的方法,大大提高了自己的动手能力,为以后走上工作岗位打下了良好的基础。 由于本人是在校大学生,没有参加过具体的商业项目,开发经验不足,考虑事情的能力有限,在做论文的过程中撰写代码还存在一定的难度,所以开发出的系统软件还不够完善,功能实现的还不完全,保密性还不够高,安全性还不够好,虽然基本上实现了各个功能系统的实际应用,但也有一定的限制。这都是我们以后在系统设计需要应该重点注意和解决的问题。 致 谢 在论文完成之际,首先衷心地感谢张珍老师。在这几个月的毕业设计中,张珍老师,给我的毕业设计提出了许多关键性的建议和指导,让我在设计过程中,避免了一些错误,少走了一些弯路。更重要的是,在交流过程中,老师的一些创造性思维和方法,让我受益无限。而且无论是在学术上,还是在思想上,张珍老师都给予了我很大的帮助和鼓励,使我顺利的完成了毕业设计和毕业论文,在这再次向张珍老师您表示感谢。还要感谢三年来曾教过我的所有的老师们,是他们认真的备课、严谨的教学,让我在大学三年的时间里学到了在以后的工作中强有力的理论知识,为以后的工作奠定了良好的基础。 在毕业设计和论文写作过程中,一些同学和朋友也给了我巨大的帮助和鼓励,在这也向他们表示感谢。 再次感谢评委老师们辛勤的评阅工作! 参考文献 [1] 张荣梅,梁晓林.Visual C++实用教程[M].冶金工业出版社,2004:90. [2] 郑阿奇.Visual C++ 实用教程(第2版)[M].电子工业出版社,2003:56. [3] 孙鑫,余安萍.VC++深入详解[M].电子工业出版社,2006:110. [4] 陈清华等.Visual C++课程设计案例精选与编程指导[C].东南大学出版社, 2004:152. [5] 严华峰等.VISUAL C++课程设计案例精编(第二版)[A].中国水利水电出版社,2004:100. [6] 周鸣扬.VISUAL C++界面编程技术[M].北京希望电子,2003:30. [7] 荣钦科技.Visual C++游戏编程基础[M].电子工业出版社,2004:140. [8] 罗伟坚.Visual C++经典游戏程序设计[Z].人民邮电出版社,2006:15. [9] 荣钦科技.VISUAL C++游戏设计[M].北京科海电子出版社,2005:64. [10] 侯俊杰著.深入浅出MFC(第2版)[EB/OL].华中科技大学出版社:76. [11] 刘宗田/邢大红/孙慧杰 等译.C++编程思想[J].Bruce Eckel著.机械工业出版社:198. [12] 康博创作室译.21天学通C++[M].Jesse Liberty著.人民邮电出版社:68. 附 录 以下是系统是实现各界面的关键代码: 1.实现用户登录界面的关键代码: void CLOGIN::OnButtonOk() { UpdateData(); CString str; m_TypeList.GetLBText(m_TypeList.GetCurSel(),str); if(m_UserName.IsEmpty()) { AfxMessageBox("用户名不能为空"); return; } if(m_UserPasswd.IsEmpty()) { AfxMessageBox("密码不能为空"); return; } CString sql="select*from register where username='"+m_UserName+"' and [password]='"+m_UserPasswd+"' and power='"+str+"'"; try { _RecordsetPtr m_pRs; ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); m_pRs=m_AdoConn.GetRecordSet((_bstr_t)sql); if(m_pRs->adoEOF) { sql="select*from register where username='"+m_UserName+"'"; m_pRs=m_AdoConn.GetRecordSet((_bstr_t)sql); if(!m_pRs->adoEOF) { if(m_UserPasswd!=(char*)(_bstr_t)m_pRs->GetCollect("password")) { if(MessageBox("密码错误是否找回密码?","提示",MB_YESNO)==IDYES) { CFind dlg; dlg.Name=m_UserName; CDialog::OnCancel(); dlg.DoModal(); } } else { if(str!=(char*)(_bstr_t)m_pRs->GetCollect("power")) { AfxMessageBox("权限错误"); return; } } } else { if(MessageBox("用户名不存在是否注册","提示",MB_YESNO)==IDYES) { CDialog::OnCancel(); CRegister dlg; dlg.m_UserName=m_UserName; dlg.DoModal(); } else CDialog::OnCancel(); } } else { if(str=="教职工") { CDialog::OnCancel(); CBack dlg; dlg.DoModal(); } else CDialog::OnOK(); } m_AdoConn.ExitConn(); } catch(...) { AfxMessageBox("操作失败"); return; } } 2.实现用户的注册界面的关键代码: void CRegister::OnReg() { UpdateData(); if(m_UserName.IsEmpty()) { AfxMessageBox("请输入用户名"); return; } if(m_Passwd.IsEmpty()) { AfxMessageBox("请输入密码"); return; } if(m_Passwd!=m_PasswdRepeat) { AfxMessageBox("两次输入密码不一致,请从新输入"); return; } if(m_QuestionCombo.GetCurSel()==-1||m_QuestionCombo.GetCurSel()==0) { AfxMessageBox("请选择密码提示问题"); return; } if(m_Answer.IsEmpty()) { AfxMessageBox("请输入提示问题答案"); return; } if(m_RealName.IsEmpty()) { AfxMessageBox("请输入真实姓名"); return; } if(m_IDcard.GetLength() != 18) { AfxMessageBox("输入身份证无效"); return; } else { int num=0; char ch; for(int i=0;i<17;i++) { ch = m_IDcard.GetAt(i); if(ch>47 && ch<58) num++; } if(i==17) { ch = m_IDcard.GetAt(i); if((ch>47 && ch<58) || (ch==88 || ch==120)) num++; } if(num != 18) { AfxMessageBox("输入身份证无效"); return; } else { CString syear = m_IDcard.Mid(6,4); int year = atoi(syear); CString smonth = m_IDcard.Mid(10,2); int month = atoi(smonth); CString sday = m_IDcard.Mid(12,2); int day = atoi(sday); BOOL leap; if(month<1||month>12) { AfxMessageBox("输入身份证无效"); return; } switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day<0 || day>31) { AfxMessageBox("输入身份证无效"); return; } break; case 4: case 6: case 9: case 11: if(day<0 || day>30) { AfxMessageBox("输入身份证无效"); return; } break; case 2: if(year % 4 == 0) { if(year % 100 != 0) leap = TRUE; else if(year % 400 == 0) leap = TRUE; else leap = FALSE; } else leap = FALSE;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服