学生信息管理系统设计与实现_第1页
学生信息管理系统设计与实现_第2页
学生信息管理系统设计与实现_第3页
学生信息管理系统设计与实现_第4页
学生信息管理系统设计与实现_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论本章论述了学生信息管理系统设计与实现的课题意义、课题背景、研究现状,说明了本系统应该实现的根本功能,以及开发本系统的可行性分析。1.1课题意义学生信息管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生信息管理的计算机化是整个学校教务管理中的重要一局部,能否实现这一步关系到学校办学整体效率的上下。运用学生信息管理系统可以减轻学院教学人员的工作量,加快查询速度,加强管理,以及加快国家各部门关于信息化的步伐,使各项管理更加标准化。还有就是缩小开支,提高工作效率与准确率。可以使学生能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。并且学生信息管理系统的应用也为今天的高校教育在未来市场的竞争力的提高打下了坚实的根底。随着学生规模的不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。面对庞大的信息量,需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统,可以做到信息的标准管理、科学统计和快速的查询,从而减少管理方面的工作量。所以,本系统对高校管理的科学化、信息化,具有重要意义。1.2课题背景目前,我国各大高校为了顺应信息化开展趋势,从提升自身的管理水平和提高高校竞争力的需要角度出发,都相继采用信息技术对学生的有关信息进行管理,通过使用计算机技术等手段,将工作人员从重复而繁杂的手工处理中解脱出来,防止重复劳动,标准了教学管理行为,提高了管理效率和水平,而且降低了人工处理产生的错误,使教育根底管理迈出了一个新的台阶,从而实现了教育根底管理的信息化、科学化和现代化。对于学生信息管理系统那么是以计算机为工具,通过对学生管理所需的信息进行采集、验证、处理、运算、分析、管理和维护,把管理人员从繁琐的数据计算处理中解脱出来,使其有更多的精力从事学生管理政策的研究实施,管理方法的研究改良和管理质量的监督检查,从而全面提高管理质量。在当前的信息化时代中,任何高校,都需要一个实用的管理系统来标准学校管理、学生管理和数据统计、分析,这将会大大提升高校的管理水平,优化资源,尽可能地降低本钱,实现最大效益化。设计学生管理信息系统的目标,主要是通过建立一个学生管理信息系统来实现数据采集、验证、处理、运算、分析、管理和维护等功能,统筹学工部的各项工作。各学院利用网络,通过管理系统提供的交互式界面提交各种材料,防止了提交材料的繁琐和遗漏。系统能自动核查各学院提交材料的格式是否符合要求,内容是否完整,并对不符合要求的地方给出详细的提示,待格式完全合格了方能入库,提高了审核的效率。另外,学工部通过该系统能对收集的数据进行处理,转化成可用的信息。此外,该系统不仅让学工部内部各科室到达资源共享,如学生管理科将学生违纪情况共享给扶贫助学办公室,如果该学生申请奖、助学金,系统将自动提示其违纪行为,到达自我审核的作用,同时,该系统也与学校的其它子系统到达资源共享,如该系统将有违纪处分的学生的信息共享给教务处的学籍管理系统,招生就业处的毕业生就业系统,从而实现资源合理配置和有效利用。1.3学生信息管理系统的研究现状当今社会已经进入了信息时代,利用计算机进行信息管理已经延伸到了从政府管理到企事业单位生产经营的方方面面。计算机信息管理可以提高工作效率,减少人力资源的开支,提高信息管理的精确度和改变信息的及时性。这些优点在追求低本钱、高效率、及时性的现在社会无疑有着巨大的优势。学生信息管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。迫切需要研制开发一款功能强大,操作简单,具有人性化的学生成绩管理系统。在国外高校,与国内不同,他们一般具有较大规模的稳定的技术队伍来提供效劳与技术支持。而国内高校信息化建设相对起步较晚。在数字校园理论逐步应用的过程中,各高校一方面不断投资购建各种硬件、系统软件和网络,另一方面也不断开发实施了各类教学、科研、办公管理等应用系统,形成了一定规模的信息化建设体系。但是,由于整体信息化程度相对落后,经费短缺,理论体系不健全等原因,国内高校教务管理系统在机构设置、效劳范围、效劳质量及人员要求上与国外高校相比都有一定的差距。纵观目前国内研究现状,在平安性和信息更新化方面存在有一定的缺乏,各现有系统资料单独建立,共享性差;在以管理者为主体的方式中,信息取舍依赖管理者对于信息的认知与喜好,较不容易掌握用户真正的需求,也因此无法完全满足用户的需求。因此,教务管理软件应充分依托校园网,实现教务信息的集中管理、分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向开展,并为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的根底。1.4可行性研究可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能够解决。1.经济上可行性由于早期学生信息管理完全采用纯人工方式完成工作,进行文档制作,且上传下递极不方便,所以耗用工时较多,且效率低下。后来设计一些简单的应用表格,能通过计算机报表,但只是人工去登记、查找、计算大量数据后,人工输入计算机,制成文档,所以也会统计过失,输入过程过失,正确率无法保证,而且还会消耗大量的人力和物力;常年累月积攒起来的材料过多,不易保存,也容易丧失和损坏。目前,市场上“学生管理信息系统〞类的软件开发出产品的已经比拟多了,但真正适合本校使用且价格合理的还是比拟少。一般的学校经费紧张,根无法接受这样的价格。而且一些网上出售的学生信息管理系统软件的规模太大,有些模块根本用不到,所以购进之后局部功能闲置也构成了浪费。而本系统的开发,不但为学校节省大量开支,而且为学校的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:第一,本系统的运行可以代替人工进行许多繁杂的劳动;第二,本系统的运行可以节省许多资源;第三,本系统的运行可以大大的提高学校学生管理的工作效率;第四,本系统可以使敏感文档更加平安等。所以,本系统在经济上是可行的。2.技术上可行性本系统的开发,利用MicrosoftAccess2003作为本系统的数据库,它是一个支持多用户的新型数据库,适用于中小规模的数据量需求。学校校园网的建设也为新系统效劳器/客户端的结构提供了硬件的支持。使用VisualC++6.0作为系统开发的开发环境,它作为一种现代的编程语言,提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。MFC是用来编写Windows应用程序的C++类集,该类集以层次结构组织起来,其中封装了大局部WindowsAPI函数和Windows控件。MFC大大简化了使用C++开发基于Windows的应用程序的工作。3.运行上可行性本系统为一个小型的学生信息管理系统,所消耗的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。1.5本系统要求实现的功能该系统需要实现以下根本功能:1.用户管理:管理系统操作人员,设置操作人员口令和权限。在满足不同系统用户的操作需求的根底上,提高系统的平安性。2.根底数据管理:维护学生管理相关的一些根底数据,它主要包括学校系别设置和各个系别中专业、班级的设置。3.学生管理对学生的姓名、学号、性别、年龄、家庭地址等数据的管理。4.成绩管理:提供学生考试成绩的管理,以及考试时间、科目设置等功能。5.数据库管理:对本系统数据库能够得到相应的保存与恢复。对现有的数据库进行管理,包括数据备份和恢复,以方便用户对数据库的管理和维护工作,提高系统数据平安性和运行效率。第2章系统结构及总体设计系统设计的优劣直接影响新系统的质量。本系统的设计是在保证实现逻辑模型的根底上,尽可能地提高系统的可变性、可靠性、工作质量、工作效率及经济性。2.1系统功能总体设计模块的功能设计,本学生信息管理信息系统主要可以分为:权限验证模块、用户管理模块、根底设置模块、成绩管理模块、学生管理模块、数据库管理模块以及帮助模块,如图2.1所示。用户登录系统管理学生信息管理系统根底设置成绩管理数据库管理用户管理退出系统系别设置专业设置班级设置数据库恢复数据库备份学生成绩录入学生成绩查询帮助关于权限验证学生管理系统管理学生信息管理系统根底设置成绩管理数据库管理用户管理退出系统系别设置专业设置班级设置数据库恢复数据库备份学生成绩录入学生成绩查询帮助关于权限验证学生管理学生学籍管理考试类型设置考试科目设置考试时间设置考试类型设置考试科目设置考试时间设置1.权限验证模块权限验证模块主要是根据用户输入的用户名和密码验证用户身份并且决定其操作权限。2.用户管理模块用户管理子模块负责对操作人员根本信息的建立,以及对操作人员的权限进行根本维护,不同权限的操作人员,可以使用的模块范围不一样。此模块功能只限于具有系统管理员权限的用户使用。用户管理子模块实现三个主要功能:添加新用户、修改用户口令和用户权限、删除指定的用户。3.根底设置模块根底数据设置模块负责维护学校学生管理相关的根底数据,主要包括:系别设置和专业划分、班级设置等数据。该模块的功能主要是对这些根底数据的浏览、添加、修改和删除等。4.学生管理模块学生管理模块主要管理学生的学号、姓名、性别、年龄、班级、系别等相关信息,该模块的功能主要有增加、修改、删除、查看等。5.成绩管理模块成绩管理模块主要实现对学生成绩的管理功能,具体包括学生成绩的录入、查询和学生总分名次的查询等。6.数据库管理模块数据库管理模块负责对数据库进行简单的一些管理,包括数据库备份和数据库复原工作,通过这些工作来维护数据库的平安,降低意外或人为破坏的损失。2.2系统开发环境及工具软件软硬件坏境处理器:InterPentium42.8GHZ或更高内存:512MB硬盘空间:60GB显卡:SVGA显示适配器操作系统:Windows98/ME/2000/XP工具软件:VisualC++6.0、MicrosoftAccess2003工具软件1.VisualC++6.0简介VisualC++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC++6.0为平台。VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境〔integrateddevelopmentenvironment,IDE〕。VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。2.MicrosoftAccess2003简介Access的最初名称是Cirrus。它开发于VisualBasic之前,当时的窗口引擎称作Ruby。比尔盖茨看过Ruby的原型后决定把这个基于Basic语言的组件作为一个独立的可扩展应用程序与Access联合开发。这个工程称作Thunder。这两个工程互相独立的被作为底层的窗口引擎开发并且互不兼容。然而,在VBA出现后它们被合并在一起。1995年末,access95发布,这是世界上第一个32为关系型数据库管理系统,使得access的应用得到了普及和继续开展。1997年,access97发布。它的最大特点是在access数据库中开始支持web技术,这一技术上的开展,开拓了access数据库从桌面向网络的开展。21世纪初,microsoft发布access2000,这是微软强大的桌面数据库管理系统的第六代产品,也是32为位access的第三个版本。至此,access在桌面关系型数据库的领域的普及已经跃上了一个新台阶。MicrosoftAccess在很多地方得到广泛使用,例如小型企业,大公司的部门,和喜爱编程的开发人员专门利用它来制作处理数据的桌面系统。它也常被用来开发简单的WEB应用程序.这些应用程序都利用ASP技术在InternetInformationServices运行。比拟复杂的WEB应用程序那么使用PHP/MySQL或者ASP/MicrosoftSQLServer。2.3数据库访问技术VisualC++6.0提供了多种访问数据库的技术包括:ODBC、DAO、OLEDB、ADO。2.3.1各数据库访问技术以下介绍了VisualC++6.0中各种数据库访问技术,通过了解与比拟,最后决定本学生信息管理系统所采用的数据库访问技术。1.ODBCODBC(OpenDatabaseConnectivity,开放数据库互连)是微软公司开放效劳结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成局部,它建立了一组标准,并提供了一组对数据库访问的标准API〔应用程序编程接口〕。这些API利用SQL语句来完成其大局部任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不管是FoxPro、Access,MYSQL还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

一个完整的ODBC由以下几个部件组成:(1)应用程序(Application)。(2)ODBC管理器(Administrator)。该程序位于Windows95以上操作系统控制面板(ControlPanel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。(3)驱动程序管理器(DriverManager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。(4)ODBCAPI。(5)ODBC驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。(6)数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供应ODBC,ODBC就能建立起与相应数据库的连接。在ODBC中,ODBCAPI不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBCAPI的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。在访问ODBC数据源时需要ODBC驱动程序的支持。用VisualC++6.0安装程序可以安装SQLServer、Access、Paradox、dBase、FoxPro、Excel、Oracle和MicrosoftText等驱动程序.在缺省情况下,VC6.0只会安装SQLServer、Access、FoxPro和dBase的驱动程序.如果用户需要安装别的驱动程序,那么需要重新运行VC6.0的安装程序并选择所需的驱动程序。ODBC使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地方,ODBC都引入一个公共接口以解决潜在的不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是ODBC一经推出就获得巨大成功的重要原因之一。2.DAODAO〔DataAccessObject,数据访问对象〕是一种应用程序编程接口〔API〕,存在于微软的VisualBasic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言〔SQL〕数据库。3.OLEDBOLEDB〔OLEDB〕是微软的战略性的通向不同的数据源的低级应用程序接口。OLEDB不仅包括微软资助的标准数据接口开放数据库连通性〔ODBC〕的结构化查询语言〔SQL〕能力,还具有面向其他非SQL数据类型的通路。作为微软的组件对象模型〔COM〕的一种设计,OLEDB是一组读写数据的方法〔在过去可能被称为渠道〕。OLDDB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。使用OLEDB的应用程序会用到如下的请求序列:初始化OLE连接到数据源、发出命令、处理结果、释放数据源对象并停止初始化OLE。ObjectLinkingandEmbedding,对象连接与嵌入,简称OLE技术。OLE不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象〞(数据集合和操作数据的函数)彼此进行“连接〞的机制,这种连接机制和协议称为部件对象模型。OLE是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件〔COM〕。DB〔英文全称database,数据库〕是依照某种数据模型组织起来并存放二级存储器中的数据集合。4.ADOADO技术是基于OLEDB的访问接口,它继承了OLEDB技术的优点,并且ADO对OLEDB的接口作了封装,定义了ADO对象,使程序开发得到简化。AKO技术属于数据库访问的高层接口。2.3.2本文采用ODBC数据访问技术,配置Access数据源的具体步骤如下:1.在操作系统的控制面板里选择管理工具,,翻开数据源(ODBC)。2.在弹出的ODBC数据源管理器对话框中,翻开系统DNS选项卡,点击添加,双击MicorsoftAccessDriver(*mdb)。3.单击“选择〞按钮,选择要配置的数据库文件〔本设计中为school.mdb〕,并输入数据源名〔本设计中为school〕和说明字符串,单击确认按钮,即完成配置Access数据源的配置。第3章学生信息管理系统的设计实现本章是课题的核心局部,主要包括学生信息管理系统数据库中各数据表的设计和各模块功能的设计与实现。3.1数据表设计首先使用向导创立一个Accsse2003库,数据表创立步骤根本一样,如下:1.在数据库窗口的对象列表中单击“表〞这一项。2.启动表向导,双击“使用表向导创立表〞。3.在“表向导〞对话框中,在“例如表〞列表中选择表名,然后在表的“例如字段〞字段中选择相应的字段并修改,将选中的字段组成一个新的表。本节后面各表设计时,实现步骤根本相同。系统用户表系统用户表中包括用户名、用户密码、用户类型,其中用户名和用户密码决定了使用者在启动本系统之后能否进入系统。用户类型决定了已登录用户在本系统操作中的权限。本表主键设为用户名。表名称标识:user数据来源:用户管理模块进行录入见表3.1系统用户表表3.1系统用户表名称字段名称类型是否主键附加属性用户名user文本Yes不允许空用户密码passwd文本No不允许空用户类型isAdmin文本No不允许空系别设置表系统设置表包括系别代码、系名和说明,其中系别代码设置为本表主键,说明一项的内容可以为空。系别代码和系名为学生所在系部的代码和系部全名。表名称标识:department数据来源:根底数据管理设置模块进行录入见表3.2系别设置表表3.2系别设置表名称字段名称类型是否主键附加属性系别代码Code文本Yes不允许空系名Name文本No不允许空说明Brief文本No允许空专业设置表专业设置表包括专业代码、专业名称、所属系别和说明,专业代码和专业名称指学生所学专业及其名称,本表中专业代码为主键,其中说明可以为空。表名称标识:major数据来源:根底数据管理模块进行录入见表3.3专业设置表表3.3专业设置表名称字段名称类型是否主键附加属性专业代码Code文本Yes不允许空专业名称Name文本No不允许空所属系别department文本No不允许空说明brief文本No允许空学生管理表学生管理记录表包括了学生学籍管理时相关的,班级、学号、姓名、系别、专业、家庭住址等。将学生的学号设为主键,系别、班级、专业姓名不能为空。表名称标识:student数据来源:学生管理模块进行录入见表3.4学生管理记录表表3.4学生管理记录表名称字段名称类型是否主键附加属性学号code文本Yes不允许空所在院系department文本No不允许空班级class文本No不允许空姓名name文本No不允许空性别sex文本No不允许空家庭地址address文本No允许空出生年月birthday日期/时间No不允许空学生成绩记录表学生成绩记录表包括了学生成绩管理时相关的,班级、学号、姓名、科目、成绩等,是学生信息管理系统的核心数据表。将学生在系统中的ID设为主键,成绩、补考成绩、补考标识可以为空。表名称标识:score数据来源:成绩管理模块进行录入见表3.5学生成绩记录表表3.5学生成绩记录表名称字段名称类型是否主键附加属性标识ID自动增长Yes不允许空班级class文本No不允许空时间段time文本No不允许空学号code文本No不允许空姓名name文本No不允许空科目subject文本No不允许空考试类型type文本No不允许空成绩score数字No允许空补考成绩makeup_score数字No允许空缺考标识absent文本No允许空3.2各功能模块的实现本节是基于系统需求分析与系统总体设计的结论来进行的,并采用VisualC++6.0实现各模块的功能。系统的设计和实现按照模块的划分来分别阐述。系统管理模块的实现.1.主控平台界面系统主界面是用户进入系统后主要接触界面,由它可以进入各个功能模块,菜单由一个条形菜单和一组弹出菜单组成,采用集成技术,把模块组合在一起,形成典型的下拉式菜单,条形菜单为主菜单,弹出菜单为子菜单。用户点击主菜单的某一项,立刻弹出对应的下拉菜单,直接在下拉菜单中进行选择,可执行相应功能。1.主体框架使用MFCAppWizard创立一个单文档结构的应用程序工程,建立起系统主体框架,生成应用程序类〔CSchoolApp〕、文档类〔CSchoolDoc〕、视图类〔CSchoolView〕和主框架类〔CMainFram〕。2.菜单根据系统总体设计中功能模块的划分,使用资源编辑器创立系统菜单。3.背景图通过修改系统视图类Paint事件处理函数OnPaint〔〕来实现加载背景图,具体代码见附录代码一〔主控平台的实现〕。.2.用户登录模块1.用户登录模块流程设计根据需求分析和总体设计,此模块主要是根据用户输入的用户名和密码验证用户身份并且决定其操作权限,其程序编写流程见图3.1。YYN输入用户信息信息查询信息正确否获得访问权限提示:登陆错误开始图3.1用户登录模块程序流程图2.用户登录模块的实现根据以上流程图,通过定义CLoginDlg类来实现用户登录模块模块的功能。下面阐述CLoginDlg类的设计与实现:〔1〕根据用户名和密码验证用户身份和分配权限。〔2〕登录对话框创立时,需要完成的一些初始化工作,读取可以登录的用户名称,并形成列表,供用户进行选择。局部代码如下所示,具体编程见代码二〔用户登录模块模块的实现〕。voidCLoginDlg::OnOK(){ UpdateData(); if(m_ctrUser.IsWindowEnabled()) {//增加新用户 if(m_strUser=="") { MessageBox("请填写用户名!"); m_ctrUser.SetFocus(); return; } } else {//修改用户信息 if(m_strUser=="") { MessageBox("请选择一个用户!"); return;} } if(m_strPass=="") { MessageBox("密码不能为空,请输入密码!"); m_ctrPass.SetFocus(); return; }.3.用户管理模块根据需求分析和总体设计,权限管理模块负责对操作人员根本信息的建立,以及对操作人员的权限进行根本维护,不同权限的操作人员,可以使用的模块范围不一样。此模块功能只限于具有系统管理员权限的用户使用。用户管理模块实现三个主要功能:添加新用户、修改用户口令和用户权限、删除指定的用户。1.用户管理模块流程设计具体处理过程:〔1〕增加新用户的处理1〕设置用户名编辑框为可用状态。2〕根据管理员输入的用户名判断用户是否存在,如果存在提示错误,并要重新输入。3〕如果用户不存在,根据管理员输入的用户名、用户口令和权限的类别,在数据库中用户表中添加新纪录。4〕提示新用户增加成功。〔2〕修改用户口令和权限的处理1〕在“用户列表〞中选择需要编辑的用户。2〕输入新的用户口令和权限的类别。3〕确认操作。4〕完成对数据库中系统用户表的相应操作。〔3〕删除指定用户的处理1〕在“用户列表〞中选择需要删除的用户。2〕删除操作。3〕完成对数据库中系统用户表的相应操作。2.用户管理模块的实现根据用户管理模块的流程图,通过定义CUserDlg类来实现用户管理模块的功能。下面来阐述CUserDlg类的设计与实现。〔1〕CUserDlg类使用的用户表记录集类CUserSet此类的实现与系统用户表的绑定,可以通过ClassWizard根据数据库表结构自动创立。〔2〕添加用户或编辑某用户的相关资料处理过程:检查当前的状态为添加或编辑,如果为添加状态,先检查用户名称是否已经存在,然后插入新的用户;如果为编辑状态,更新用户信息,更改相关组件的状态。添加用户操作的局部代码如下所示,具体代码见代码三〔用户管理模块的实现〕。if(m_ctrUser.IsWindowEnabled()) {//增加新用户 //判断用户是否已经存在 if(m_recordset.GetRecordCount()!=0) {m_recordset.Close(); MessageBox("该用户已经存在!"); return; } m_recordset.AddNew(); m_recordset.m_user=m_strUser; m_recordset.m_passwd=m_strPass; m_recordset.m_isadmin=m_bIsAdmin; m_recordset.Update(); MessageBox("用户添加成功!请记住用户名和密码!"); m_recordset.Close(); }根底设置模块的实现根据需求分析和总体设计,根底数据设置模块负责维护学校学生管理相关的根底数据,主要包括:系别设置和专业划分等数据。该模块的功能主要是对这些根底数据的浏览、添加、修改和删除。.1.系别设置子模块功能描述:系别设置信息表中读取信息并显示,同时实现对这些数据的添加、修改和删除功能。1.系别设置子模块流程设计输入:系别设置数据处理:1〕系别设置对话框启动。2〕从系别设置信息表中读取数据并显示到列表中供用户浏览。3〕根据用户选择,完成系别设置数据的添加、修改和删除。输出:更新的系别设置数据表。2.系别设置子模块的界面设计该子模块通过对话框提供用户操作界面。3.系别设置子模块的的实现根据系别设置子模块的流程图,通过定义CDepartmentDlg类来实现系别设置的数据管理功能。下面具体阐述这个类的设计与实现。1〕CDepartmentDlg类使用的记录集类CDepartmentSet。此类可以通过ClassWizard根据数据库表结构自动创立。2〕系别设置对话框的初始化。处理过程:首先根据界面设计创立数据列表,然后从系别设置数据表中提取数据并显示在数据列表中,最后设置各功能按钮的初始状态。具体代码添加如下所示:BOOLCDepartmentDlg::OnInitDialog()//对话框的一些初始化操作{CDialog::OnInitDialog();//设置数据列表m_ctrList.InsertColumn(0,"系别代码");m_ctrList.InsertColumn(1,"系名");m_ctrList.InsertColumn(2,"说明");m_ctrList.SetColumnWidth(0,60);m_ctrList.SetColumnWidth(1,160);m_ctrList.SetColumnWidth(2,240);m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//设置按钮状态m_bntSave.EnableWindow(FALSE);m_bntNew.EnableWindow(FALSE);m_bntDelete.EnableWindow(FALSE);m_bntModify.EnableWindow(FALSE);//显示数据RefreshData();returnTRUE;}3〕添加新系别信息。处理过程:清空编辑区域的编辑框等待用户输入,然后当用户选择保存按钮是检查用户输入的数据合法性,无误后将用户输入的数据添加到系别设置数据表中,最后更新数据列表中数据显示,以及恢复各按钮的状态。具体代码见代码五〔添加新系别信息〕。4〕系别设置信息。处理过程:将用户选择的需要修改记录信息显示到文本编辑框中,当用户修改完成后,检查数据的合法性,检查无误后,将修改后的数据更新到数据库中。具体代码见代码六〔修改系别设置信息〕。5〕系别信息的删除。处理过程:将用户选择的需要删除的记录信息显示到文本编辑框中,当用户确认后,从数据表中删除这条记录。具体代码见代码七〔系别信息的删除〕。.2.专业设置子模块功能描述:从专业设置信息表中读取数据并显示,同时实现对这些数据的添加、修改和删除功能。1.专业设置子模块的流程设计输入:专业设置数据处理:〔1〕专业设置对话框启动。〔2〕从专业设置信息表中读取数据并显示到列表中供用户浏览。〔3〕根据用户选择,完成专业设置数据的添加、修改和删除。输出:更新的专业设置数据表2.专业设置子模块的界面设计该子模块通过对话框提供用户操作界面。3.专业设置子模块的实现根据专业设置子模块的功能,通过定义CMajorDlg类来实现专业设置的数据管理功能。下面具体阐述这个类的设计与实现。1〕CMajorDlg类使用的记录集类CMajorSet。此类可以通过ClassWizard根据数据库表结构自动创立。2〕添加新专业信息。处理过程:清空编辑区域的编辑框等待用户输入,然后当用户选择保存按钮时检查用户输入的数据合法性,无误后将用户输入的数据添加到专业设置数据表中,最后更新数据列表中数据显示,以及恢复各按钮的状态。局部代码如下所示,具体代码见代码八。voidCMajorDlg::OnButtonSave()//保存数据时的操作{//TODO:Addyourcontrolnotificationhandlercodehere UpdateData();//检查数据的合法性 if(m_strName=="") {AfxMessageBox("请输入专业名称!"); return; } if(m_strCode=="") {AfxMessageBox("请输入专业代码!"); return; } if(m_strDepartment=="") {AfxMessageBox("请输入所属系别!"); return; }3〕修改专业设置信息。处理过程:将用户选择的需要修改记录信息显示到文本编辑框中,当用户修改完成后,检查数据的合法性,将修改后的数据更新到数据库中。具体代码见代码九〔修改专业设置信息〕。4〕专业信息的删除。处理过程:将用户选择的需要删除的记录信息显示到文本编辑框中,当用户确认后,从数据表中删除这条记录。具体代码见代码十〔专业信息的删除〕。学生管理模块的实现根据需求分析和总体设计,学生管理模块负责维护学校学生管理相关的学生数据,主要包括:班级、学号、姓名、系别、专业、家庭住址等。该模块的功能主要是对这些学生学籍信息的浏览、添加、修改和删除。1.学生管理模块流程设计输入:学生学籍相关信息处理:1〕学生管理对话框启动。2〕从学生管理信息表中读取数据并显示到列表中供用户浏览。3〕根据用户选择,完成学生学籍数据的添加、修改和删除。输出:更新到学生管理数据表。2.学生管理模块的界面设计该子模块通过对话框提供用户操作界面。3.学生管理模块的的实现根据学生管理模块的流程说明,通过定义CStudentDlg类来实现学生数据的管理功能。下面具体阐述这个类的设计与实现。1〕CStudentDlg类使用的记录集类CStudentSet。此类可以通过ClassWizard根据数据库表结构自动创立。2〕学生管理对话框的初始化。处理过程:首先根据界面设计创立数据列表,然后从学生管理数据表中提取数据并显示在数据列表中,最后设置各功能按钮的初始状态。具体代码添加见代码十一〔学生管理对话框初始化〕。3〕添加新学生信息。处理过程:清空编辑区域的编辑框等待用户输入,然后当用户选择保存按钮是检查用户输入的数据合法性,无误后将用户输入的数据添加到学生管理数据表中,最后更新数据列表中数据显示,以及恢复各按钮的状态。具体代码见代码十二〔添加新学生信息〕。4〕学生管理信息。处理过程:将用户选择的需要修改记录信息显示到文本编辑框中,当用户修改完成后,检查数据的合法性,检查无误后,将修改后的数据更新到数据库中。具体代码见代码十三〔修改学生信息〕。5〕学生信息的删除。处理过程:将用户选择的需要删除的记录信息显示到文本编辑框中,当用户确认后,从数据表中删除这条记录。具体代码见代码十四〔学生信息的删除〕。3.2.4根据需求分析和总体设计,成绩管理模块主要实现对学生成绩的管理功能具体包括学生成绩的录入、查询、考试相关设置等。成绩管理模块主要划分成三个子模块:学生成绩录入、学生成绩查询。下面按照子模块的划分来阐述本模块的设计与实现过程。.学生成绩录入子模块功能:以班级为单位,完成对指定班级在某次考试中所有学生的成绩录入功能;1.学生成绩录入子模块流程设计输入:班级、考试类型、考试时间段、科目、学生成绩处理:〔1〕学生成绩录入对话框启动;〔2〕根据用户指定的班级,从学生信息表中读取学生名单,并显示在列表中。〔3〕当用户指定录入某学生成绩时启动成绩录入对话框。〔4〕将用户输入的学生成绩、班级,保存到数据库的学生成绩信息表中。〔5〕更新成绩列表显示,等待录入下一个学生的成绩。输出:学生成绩信息表2.学生成绩录入子模块的界面设计该子模块通过学生成绩录入对话框提供用户操作界面。3.学生成绩录入子模块的实现根据学生成绩录入子模块的流程图,通过定义CScoreInputDlg类来实现某班级所有学生成绩录入的主体功能。下面具体阐述这个类的设计与实现。〔1〕CScoreInputDlg类使用的记录集CScoreSet。此类实现与学生成绩信息表得绑定,可以通过ClassWizard根据数据库表结构自动创立。〔2〕创立并显示学生成绩单。处理过程:根据用户输入班级编号,从学生信息表中读取该班级所有学生名单,并在学生成绩表中创立所有学生得成绩单记录,然后将成绩单显示到成绩列表中。局部代码如下所示,其主要代码见代码十五。voidCScoreInputDlg::OnButtonInput(){ UpdateData(); if(m_strClass.IsEmpty())//非空检查 {AfxMessageBox("请选择班级"); return; } if(m_strTime.IsEmpty()) {AfxMessageBox("请选择考试时间段"); return; } if(m_strType.IsEmpty()) {AfxMessageBox("请选择考试类型"); return; } if(m_strSubject.IsEmpty()) {AfxMessageBox("请选择考试科目"); return; }〔3〕录入学生成绩。处理过程:当用户双击成绩列表时,弹出成绩录入对话框,等待用户输入学生的成绩,在输入确认后,将学生成绩保存到学生成绩信息表中。其主要代码见代码十六〔录入学生成绩〕。.学生成绩查询子模块功能描述:提供按班级分类查询学生成绩和按学生姓名查询成绩功能。1.学生成绩查询子模块流程设计输入:班级编号、学生姓名处理:〔1〕学生成绩查询对话框启动;〔2〕根据用户选择的班级编号,从学生信息表中读取该班级所有学生名单。〔3〕在学生列表中显示该班级所有学生名单。〔4〕根据用户在学生列表中选择的学生编号,从成绩信息表中读取该学生的成绩。〔5〕将该学生所有科目成绩显示在成绩列表中。〔6〕根据用户名输入的学生姓名,从学生成绩信息表中读取学生的成绩。〔7〕将该学生所有科目成绩显示在成绩列表中。输出:学生成绩列表2.学生成绩查询子模块的界面设计该子模块通过学生成绩录入对话框提供用户操作界面。3.学生成绩查询子模块的实现根据学生成绩查询子模块的功能,通过定义CScoreQueryDlg类来实现学生成绩的查询功能。下面具体阐述这个类的设计与实现。〔1〕CScoreQueryDlg类使用的记录集CScoreSet。此类实现与学生成绩信息表得绑定,可以通过ClassWizard根据数据库表结构自动创立。〔2〕显示学生列表。处理过程:根据用户选择得班级编号,从学生信息表中读取该班级学生名单,然后显示到学生列表中。其主要代码见代码十七〔学生成绩查询〕。〔3〕显示学生成绩单。其主要代码见代码十八〔显示学生成绩单〕。〔4〕直接查询学生成绩。处理过程:根据用户输入学生姓名查询学生成绩信息表,读取符合条件的数据并显示到成绩单列表中。其主要代码十九〔直接查询学生成绩〕如下:voidCScoreQueryDlg::OnButtonSearch(){ UpdateData(TRUE);//检查是否输入学生姓名 if(m_strName.IsEmpty()) {AfxMessageBox("请输入学生姓名!"); return; } CStringstrSQL; strSQL.Format("select*fromscorewherenamelike'%s'",m_strName);//查询并显示学生成绩单 RefreshData(strSQL); }3.2功能:数据库管理模块负责对数据库进行简单的一些管理,包括数据库备份和数据库复原工作,通过这些工作来维护数据库的平安。1.数据库管理模块的流程设计〔1〕数据库备份输入:数据库表文件处理:1〕提醒用户是否完成数据库备份操作。2〕如果用户确认,将数据库表文件复制到备份目录中,并更改扩展名。3〕否那么取消备份操作。输出:数据库备份文件〔2〕数据库恢复输入:数据库备份文件处理:1〕提醒用户是否完成数据库恢复操作。2〕如果用户确认,用数据库备份文件覆盖数据库表文件。3〕否那么取消恢复操作。输出:数据库表文件2.数据库管理模块的实现〔1〕数据库备份数据库备份主要时通过在主框架类CMainFram中实现菜单点击事件处理来实现备份功能的。其主要代码见代码二十〔数据库备份的实现〕。〔2〕数据库恢复数据库恢复主要时通过在主框架类CMainFram中实现菜单点击事件处理来实现恢复功能的。其主要代码见代码二十一〔数据库恢复的实现〕。voidCMainFrame::OnDatabaseRecover(){if(AfxMessageBox("复原数据库将覆盖原来的数据库。您确定要复原吗?",MB_OKCANCEL)==IDCANCEL) {return;} if(CopyFile(".\\backup\\school.bak",".\\school.mdb",FALSE)) AfxMessageBox("数据库复原成功!"); else AfxMessageBox("数据库复原失败!"); }第4章软件测试软件测试是软件开发阶段中的一个重要的环节。在软件开发过程中,开发者的主观认识可能有与客观事实不相符的地方,在软件生产周期的每个阶段都有可能产生误解或过失。早期的误解或过失经过后期工作的不断进行往往会被放大。所以说软件测试是软件开发的一个重要环节,软件测试是保证软件质量的重要手段。4.1测试准备〔1〕软件环境:Windows2000/XP、VisualC++6.0、MicrosoftAccess2003硬件环境:奔腾4512兆内存+60G〔2〕根本要求:设计的管理系统通过系统管理员进行登录,结果可以良好运行,并且结构要合理,运行效率较高,符合软件工程开发标准。〔3〕测试模块:权限验证模块、用户管理模块、根底数据库管理模块、成绩管理模块和数据库管理模块。〔4〕测试时间:2009年5月〔5〕测试人员:侯勇4.2系统各子模块的测试系统管理模块1.权限验证模块的使用测试启动用户登录对话框,选择用户名为“管理员〞,输入密码“1”,按“登录〞按钮,即可进入主界面。如果输入的密码错误,那么弹出提示框“密码错误,请重新输入!〞。调试图如图4.2.用户管理模块的使用测试:1〕增加新用户的处理启动用户设置对话框,单击“新增〞按钮,输入用户资料中用户名为“学生1〞,密码为“1〞,确认为“11〞,然后按“保存〞按钮,弹出提示框“两次输入的密码不一致,请重新输入密码〞。图4.1用户登录界面启动用户设置对话框,单击“新增〞按钮,输入用户名为“学生1〞,密码为“1〞,确认为“1〞,然后按保存按钮,弹出提示框“用户添加成功!请记住用户名和密码〞。增加新用户操作界面如图4.2。图4.2增加新用户2〕修改用户口令和权限的处理启动用户设置对话框,单击用户列表中的用户名“11〞,修改用户资料中密码为“22〞,确认为“22〞,是否为管理员框打勾,然后按保存按钮,弹出提示框“用户修改成功!请记住用户名和密码〞。3〕删除指定用户的处理启动用户设置对话框,单击用户列表中的用户名“学生1〞,按“删除〞按钮,用户名“学生1〞从用户列表中删除成功。成绩管理模块1.学生成绩录入子模块的使用测试启动学生成绩录入对话框,选择班级为“05102〞,时间段“2023年度下学期〞,考试类型“期末考试〞,科目“大学英语〞,单击“开始录入〞按钮,那么序号为“29〞,学号“0510201〞的学生诸葛亮的成绩显示在列表中,双击这一行,弹出对话框,输入成绩“80〞,单击“确定〞按钮,那么列表中成绩更新为“80〞,录入成功。如图4.3学生成绩录入。图4.3学生成绩录入2.学生成绩查询子模块的使用测试启动学生成绩查询对话框,按班级查询,选择班级“05102〞,单击“显示学生列表〞,那么学号为“0510201〞的学生诸葛亮显示在学生列表中,双击这一行,在右边列表中显示该学生所有科目成绩;直接查询,输入姓名“诸葛亮〞,单击“直接查询〞按钮,下面列表中显示该学生所有科目成绩。查询操作成功。根底数据管理模块1.系别设置子模块的使用测试启动系别设置对话框,按“增加〞按钮,设置系别代码为“01〞,系名为“电气与信息工程学院〞,说明为空,然后按保存按钮,所输入的信息已经显示到列表中,增加操作成功。启动系别设置对话框,,单击列表中系别代码为“01〞,系名为“电气与信息工程学院〞这一行,按“修改〞按钮,把系别代码中换成“02〞,然后按“修改〞按钮,在列表中修改成功。启动系别设置对话框,单击列表中系别代码为“02〞,系名为“电气与信息工程学院〞这一行,按“删除〞按钮,在列表中显示删除成功。2.专业设置子模块的使用测试启动专业设置对话框,按“增加〞按钮,设置专业代码为“05102〞,专业名为“自动化〞,所属系别为“电气与信息工程学院〞,说明为“空〞,然后按“保存〞按钮,所输入的信息已经显示到列表中,增加操作成功。启动专业设置对话框,单击专业代码为“05102〞,专业名为“自动化〞这一行,把专业名称改为“自动化05〞,然后按“修改〞按钮,所输入的信息已经显示到列表中,修改操作成功。启动专业设置对话框,单击专业代码为“05102,专业名为“自动化05〞这一行,然后按“删除〞按钮,在列表中显示删除成功。如图4.4图4.4专业设置数据库管理模块1.单击菜单栏“数据库管理〞下的“数据库备份〞,弹出对话框“您确认要备份数据库吗?〞,单击“确定〞按钮,显示“数据库备份成功〞。2.单击菜单栏“数据库管理〞下的“数据库复原〞,弹出对话框“复原数据库将覆盖原来的数据库。您确定要复原吗?〞,单击“确定〞按钮,显示“数据库复原成功〞。如图4.5和图4.6所示:图4.5数据库管理图4.6数据库复原帮助模块单击系统主界面上的“帮助〞菜单下的“关于〞,弹出如下软件相关信息。如图4.7所示:图4.7帮助4.3测试结论经测试,本系统根本到达了需求分析中提出的功能要求。系统中每个模块都有其独立性,可根据需要进行扩充;系统界面清晰整洁、通俗易懂,操作简单,用户可以轻松的完成操作过程。结论本次设计的学生信息管理系统实现了以下功能1.系统主界面:2.用户管理:3.根底数据管理:4.成绩管理5.数据库管理。本系统提供了方便灵活的数据查询功能,满足多样的数据查询需求;对操作人员的技能要求比拟低,操作方便;能够实现方便的扩展,满足学校开展的需要;能够保障管理数据的平安,准确。本次设计是对大学四年来所学知识的综合运用,是对学习成果的检验。通过《学生信息管理系统》的设计制作,我对VisualC++语言有了一个全面、细致的认识,对可视化程序设计有了更深入的了解,为今后学习程序设计打下了一个良好的根底,同时对学生信息管理系统有了更深层的理解。由于时间有限,《学生信息管理系统》还有一些不完善的地方,今后,我将不断的深入研究VC语言,提高可视化程序设计技术,逐渐扩展本系统的功能,使其不断完善。参考文献[1]求是科技.数据库开发技术与工程实践[M].北京.人民邮电出版社,2004.1:20-280[2]KrugllnskiD.VC技术内幕[M].希望图书创作室译.北京:北京希望电子出版社,2004:12-15,210-212[3]揣锦华.面向对象技术与VisualC++[M].北京:清华大学出版社,2023:56[4]王正军.VisualC++6.0程序设计从入门到精通[M].北京:人民邮电出版社,2006:6-41,350-370[5]宋昆,李严.SQLServer数据库开发实例解析[M].北京:机械工业出版社,2006:3[6]李俊民,高春燕.Access数据库开发实例解析[M].北京:机械工业出版社,2006:5-25[7]辛希孟.信息技术与信息效劳国际研讨会论文集:A集[C].北京:中国社会科学出版社,2000[8]张海藩.软件工程导论[M].北京:清华大学出版社,2005:465[9]〔美〕BjarneStroustrup.TheDesignandEvolutionofC++[M].北京:机械工业出版社,2004:66-68[10]史济民,汤观全,张露.VisualFoxPro及其应用系统开发[M].北京:清华大学出版社,2006:1[11]辛长安,梅林.VC++编程技术与难点剖析[M].北京:清华大学出版社,2002:21-22[12]黄明,梁旭,周绍斌.VisualC++信息系统设计与开发实例[M].北京:机械工业出版社,2003:325-376[13]明日科技.VisualC++管理信息系统完整工程实例剖析[M].北京:人民邮电出版社,2005:187-234[14]王端,于速,张雨.VisualC++数据库系统开发完全手册[M].北京:人民邮电出版社,2006:6-100[15]KeithBugg.DebuggingVisualC++Windows[M].USA:MillerFreemanInc,2007:142-143致谢在本次毕业设计过程中,梅英老师对该论文从选题、构思、资料收集到定稿的各个环节给予细心指引与教导,使我对基于VC的学生信息管理系统有了深刻的认识,使我得以最终完成毕业设计,在此表示衷心感谢。梅老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度、积极进取的科研精神以及诲人不倦的师者风范是我终生学习的楷模。在四年的大学生涯里,还得到众多老师的关心支持和帮助,在此,谨向老师们致以衷心的感谢和崇高的敬意!同时还要感谢班上的凌刚同学,他在我的论文设计过程中给予了很大的帮助,感谢他的热心交流和真诚鼓励。在大学四年生活中,不断得到胡晓明等同学的关心与帮助,使我在学习和生活中不断得到友谊的温暖与关心,最重要的是一种精神上的鼓励,让我非常感动。在此我要表示衷心的感谢!特别要感谢的是我的家人,一直给予我各方面的关心和支持,让我茁壮成长。最后,我要向在百忙之中抽时间对本文进行审阅、评议和参加本人论文辩论的各位师长表示感谢!附录:程序清单代码一〔主控平台的实现〕voidCSchoolView::OnPaint(){ CPaintDC*pDC=newCPaintDC(this);//创立设备上下文 CBitmapbmp; RECT Rect; RECT RectView; POINT ptSize; CDC dcmem; BITMAP bm; intb=bmp.LoadBitmap(IDB_BITMAP2);//将位图取出; dcmem.CreateCompatibleDC(pDC);//创立兼容设备上下文。 dcmem.SelectObject(&bmp);//用设备上下文选择位图; dcmem.SetMapMode(pDC->GetMapMode());//设置映射方式; GetObject(bmp.m_hObject,sizeof(BITMAP),(LPSTR)&bm);//映射位图; GetClientRect(&Rect); ptSize.x=bm.bmWidth; ptSize.y=bm.bmHeight; pDC->DPtoLP((LPPOINT)&ptSize,1);//设备单元to逻辑单元; GetClientRect(&RectView); CRectRectBmp=RectView; if((RectView.right-RectView.left)>bm.bmWidth) { RectBmp.left=RectView.left+(RectView.right-RectView.left-bm.bmWidth)/2; RectBmp.right=bm.bmWidth; }//当位图宽度容纳不下的处理 else { RectBmp.left=RectView.left; RectBmp.right=RectView.right-RectBmp.left; } if((RectView.bottom-RectView.top)>bm.bmHeight) { RectBmp.top=RectView.top+(RectView.bottom-RectView.top-bm.bmHeight)/2; RectBmp.bottom=bm.bmHeight; }//当位图高度容纳不下的处理 else { RectBmp.top=RectView.top; RectBmp.bottom=RectView.bottom-RectBmp.top; }//加载视图到设备上下文中 pDC->StretchBlt(RectBmp.left,RectBmp.top,RectBmp.right,\ RectBmp.bottom,&dcmem,0,0,bm.bmWidth,bm.bmHeight,\ SRCCOPY);//删除设备上下文 dcmem.DeleteDC();}代码二〔权限验证模块的实现〕voidCUserDlg::OnOK(){ UpdateData(); if(m_ctrUser.IsWindowEnabled()) {//增加新用户 if(m_strUser=="") { MessageBox("请填写用户名!"); m_ctrUser.SetFocus(); return; } } else {//修改用户信息 if(m_strUser=="") { MessageBox("请选择一个用户!"); return;} } if(m_strPass=="") { MessageBox("密码不能为空,请输入密码!"); m_ctrPass.SetFocus(); return; } if(m_strPass!=m_strRePass) { MessageBox("两次输入地密码不一致,请重新输入密码!"); m_ctrPass.SetFocus(); m_strPass=""; m_strRePass=""; UpdateData(FALSE); return; } CStringstrSQL; strSQL.Format("select*fromuserwhereuser='%s'",m_strUser); if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) { MessageBox("翻开数据库失败!","数据库错误",MB_OK); return; } if(m_ctrUser.IsWindowEnabled()) {//判断用户是否已经存在 if(m_recordset.GetRecordCount()!=0) { m_recordset.Close(); MessageBox("该用户已经存在!"); return; } m_recordset.AddNew(); m_recordset.m_user=m_strUser; m_recordset.m_passwd=m_strPass; m_recordset.m_isadmin=m_bIsAdmin; m_recordset.Update(); MessageBox("用户添加成功!请记住用户名和密码!"); m_recordset.Close(); } else {//修改用户信息 if(m_recordset.GetRecordCount()==0) {//判断用户是否不存在 m_recordset.Close(); MessageBox("该用户不存在!请更新数据库"); return; } m_recordset.Edit(); m_recordset.m_user=m_strUser; m_recordset.m_passwd=m_strPass; m_recordset.m_isadmin=m_bIsAdmin; m_recordset.Update(); MessageBox("用户修改成功!请记住用户名和密码!"); m_recordset.Close(); } m_ctrUser.EnableWindow(FALSE); RefreshData();}代码三〔用户管理模块的实现〕voidCUserDlg::OnButtonNew(){//TODO:Addyourcontrolnotificationhandlercodehere m_strUser=""; m_strPass=""; m_strRePass=""; m_bIsAdmin=FALSE;//设置用户名编辑框为可用 m_ctrUser.EnableWindow(TRUE); m_ctrUser.SetFocus();//更新数据到界面 UpdateData(FALSE);}//保存添加或者修改用户信息voidCUserDlg::OnButtonDelete(){ UpdateData(TRUE); if(m_strUser=="") {MessageBox("请选择一个用户!"); return; }CStringstrSQL;strSQL.Format("select*fromuserwhereuser='%s'",m_strUser);if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)){ MessageBox("翻开数据库失败!","数据库错误",MB_OK); return;}//删除该用户m_recordset.Delete(); m_recordset.Close(); RefreshData();//刷新用户列表 m_strUser=""; m_strPass=""; m_strRePass=""; m_bIsAdmin=FALSE; UpdateData(FALSE);} CStringstrSQL; strSQL.Format("select*fromuserwhereuser='%s'",m_strUser); if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) {MessageBox("翻开数据库失败!","数据库错误",MB_OK); return; } if(m_ctrUser.IsWindowEnabled()) {//增加新用户 //判断用户是否已经存在 if(m_recordset.GetRecordCount()!=0) {m_recordset.Close(); MessageBox("该用户已经存在!"); return; } m_recordset.AddNew(); m_recordset.m_user=m_strUser; m_recordset.m_passwd=m_strPass; m_recordset.m_isadmin=m_bIsAdmin; m_recordset.Update(); MessageBox("用户添加成功!请记住用户名和密码!"); m_recordset.Close(); } else {//修改用户信息 if(m_recordset.GetRecordCount()==0) {//判断用户是否不存在 m_recordset.Close(); MessageBox("该用户不存在!请更新数据库"); return; } m_recordset.Edit(); m_recordset.m_user=m_strUser; m_recordset.m_passwd=m_strPass; m_recordset.m_isadmin=m_bIsAdmin; m_recordset.Update(); MessageBox("用户修改成功!请记住用户名和密码!"); m_recordset.Close(); } m_ctrUser.EnableWindow(FALSE); RefreshData();}代码四〔系别设置初始化的实现〕BOOLCDepartmentDlg::OnInitDialog()//对话框的一些初始化操作{CDialog::OnInitDialog();//设置数据列表m_ctrList.InsertColumn(0,"系别代码");m_ctrList.InsertColumn(1,"系名");m_ctrList.InsertColumn(2,"说明");m_ctrList.SetColumnWidth(0,60);m_ctrList.SetColumnWidth(1,160);m_ctrList.SetColumnWidth(2,240);m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//设置按钮状态m_bntSave.EnableWindow(FALSE);m_bntNew.EnableWindow(FALSE);m_bntDelete.EnableWindow(FALSE);m_bntModify.EnableWindow(FALSE);//显示数据RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}代码五〔添加新系别信息〕//添加按钮选择是的操作voidCDepartmentDlg::OnButtonNew(){//清空编辑框 m_strName =""; m_strCode =""; m_strInfo ="";//设置按钮状态 m_bntSave.EnableWindow(); m_bntNew.EnableWindow(FALSE); m_bntDelete.EnableWindow(FALSE); m_bntModify.EnableWindow(FALSE); UpdateData(FALSE); }voidCDepartmentDlg::OnButtonSave()//保存数据时的操作{ UpdateData();//检查数据的合法性 if(m_strName=="") {AfxMessageBox("请输入系名!"); return; } if(m_strCode=="") {AfxMessageBox("请输入系别代码!"); return; }//检查是否有重复记录 CStringstrSQL; strSQL.Format("select*fromdepartmentwherecode='%s'",m_strCode); if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)) {MessageBox("翻开数据库失败!","数据库错误",MB_OK); return; } if( m_recordset.GetRecordCount()!=0) {AfxMessageBox("当前编码已经存在!请重新输入!"); m_strCode=""; UpdateData(FALSE); m_recordset.Close(); return; }//添加数据到数据库中 m_recordset.AddNew(); m_recordset.m_name = m_strName ; m_recordset.m_code = m_strCode ; m_recordset.m_brief = m_strInfo ; m_recordset.Update(); m_recordset.Close();//更新界面显示 RefreshData(); 代码六〔修改系别设置信息〕//当用户选择列表中记录时的处理voidCDepartmentDlg::OnButtonModify()//将修改的数据保存到数据库中{UpdateData〔〕;//判断用户是否选择记录 inti=m_ctrList.GetSelectionMark(); if(0>i) {MessageBox("请选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论