• 1.57 MB
  • 2022-05-17 13:04:11 发布

课堂考勤管理系统开发——毕业论文

  • 41页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
计算机专业本科生毕业设计(论文)摘要本设计是以VisualStudio2010作为开发平台,C#作为开发语言,结合SQLserver2008数据库开发设计的课堂考勤管理系统。该系统的目标是统计学生的考勤与请假信息。系统功能特点是围绕管理员、教师、学生三类用户设计,主要实现的功能:查询功能,旷课、请假信息的录入功能,考勤信息的统计功能,通报报表的查询以及用户信息的添加、修改和删除的功能。本论文介绍了该系统的设计与实现原理、功能特点和设计方案,而且还对开发过程中使用的关键技术进行了分析和讨论。关键词:VisualStudio2010;SQLserver2008;课堂考勤 计算机专业本科生毕业设计(论文)ABSTRACTWeuseVisualStudio2010asdevelopmentplatform,C#asdevelopmentlanguage,SQLserver2008asdatabasetothedesignisaclassattendancemanagementsystem.Thesystemproposestatisticstheattendanceandleaveinformation.Systemfunctioncharacteristicsrelatedtothreekindsofusers—administrators,teachers,studentstodesign,mainlytheimplementationoffunctionsofattendance,inputtingtruancyandleave,countingattendance,inquiringcommunicatedstatements,andadding,modifyinganddeletingtheuserinformation.Thispaperintroducessystemdesignandrealization,functioncharacteristicsanddesignscheme.Thispaperanalyzedanddiscussedkeytechnologiestheprocessofdeveloning.Keyword:VisualStudio2010;SQLserver2008;Classattendance 计算机专业本科生毕业设计(论文)目录第一章前言11.1选题背景11.2设计目标1第二章相关理论基础22.1课堂考勤管理系统开发环境简介22.1.1中文VisualStudio2010简介22.1.2SQLserver2008简介22.2ADO技术链接数据库3第三章系统分析53.1系统可行性分析53.2模块需求分析及设计思想63.2.1总体架构思想63.2.2系统功能模块6第四章系统设计84.1系统功能设计84.1.1系统登录流程图84.1.2系统功能模块图84.2数据库设计94.2.1创建数据库104.2.2数据库逻辑结构设计104.3数据库概念结构设计10第五章系统实现125.1普通用户功能具体实现125.1.1普通用户登录界面125.2教师功能具体实现155.2.1教师用户功能界面155.2.2基本信息管理155.3管理员功能具体实现185.3.1管理员功能界面185.3.2基本信息管理19 计算机专业本科生毕业设计(论文)第六章系统测试246.1系统测试的目的及意义246.2系统测试的原则246.3测试的方法246.3.1登录测试246.3.2界面测试256.3.3功能测试256.3.4需求测试266.3.5性能测试266.4测试中其他要注意的地方266.5课堂考勤信息系统的测试26第七章总结277.1系统中需要改进的问题277.2展望27结束语28参考文献29致谢30附录31 计算机专业本科生毕业设计(论文)第一章前言1.1选题背景目前高校校园信息化逐步完善,能有效地借助网络才能提高办事效率。如今学生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现,对全校师生的学习、生活、管理、办公带来了便利。因此学生考勤管理系统能进一步加强高校学风建设,维护正常的教学秩序,给学生创造一个优良的学习环境。目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课情况,对于时间比较长的请假,需要通过递交请假申请让班主任、院系领导都批准方能生效。这种的模式在目前高校管理中暴露了不可避免的弊端:一、学生请假不方便;二、学生请假对任课老师不透明;三、学生对自己整个学期的上课出勤情况没有整体的统计信息;四、班主任对本班学生整个学期的上课出勤情况不易查看;五、院系领导、学校领导不容易把握学生上课的出勤情况。因此一个好的学生考勤管理系统在一定程度上可以解决这些弊端,本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统。1.2设计目标课堂考勤管理系统可主要实现下列目标:实现考勤信息和请假信息的输入管理;实现考勤信息的查询处理;系统操作简单方便、界面简洁美观;能够完成考勤的基本信息的操作和管理;能够很好的预防人为因素产生的错误操作;能够为用户提供多种条件的查询操作,为商品管理提供准确及时的数据;具有很好的安全性,以保证数据的正确性。-36- 计算机专业本科生毕业设计(论文)第二章相关理论基础本系统主要采用VisualStudio2010和SQLServer2008相结合的技术来进行开发,以VisualStudio2010为编程语言来进行的,而SQLServer2008是作为后台数据库而开发的一个数据库管理系统。用户界面的设计与数据库的连接则使用的相关功能来完成的。在系统需涉及的一些相关技术概述如下。2.1课堂考勤管理系统开发环境简介下面简要介绍一下中文VisualStudio2010和SQLServer2008。2.1.1中文VisualStudio2010简介VisualStudio2010是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。VisualStudio2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。VisualStudio2010同时带来了NETFramework4.0、MicrosoftVisualStudio2010CTP(CommunityTechnologyPreview--CTP),并且支持开发面向Windows7的应用程序。除了MicrosoftSQLServer,它还支持IBMDB2和Oracle数据库。2.1.2SQLserver2008简介SQLServer是一个关系数据库管理系统,它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了。Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本;Sybase则较专注于SQLServer在UNIX操作系统上的应用。在本书中介绍的是MicrosoftSQLServer以后简称为SQLServer或MSSQLServer。SQLServer2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQLServer版本。在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。-36- 计算机专业本科生毕业设计(论文)SQLServer2008的特性包括:uInternet集成。SQLServer2008数据库引擎提供完整的XML支持。它还具有构成最大的Web站点的数据存储组件所需的可伸缩性、可用性和安全功能。SQLServer2008程序设计模型与WindowsDNA构架集成,用以开发Web应用程序,并且SQLServer2008支持EnglishQuery和Microsoft搜索服务等功能,在Web应用程序中包含了用户友好的查询和强大的搜索功能。u可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行MicrosoftWindows98的便携式电脑,到运行MicrosoftWindows2000数据中心版的大型多处理器服务器。SQLServer2008企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大Web站点所需的性能级别。u企业级数据库功能。SQLServer2008关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。SQLServer2008分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是SQLServer2008数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器。u易于安装、部署和使用。SQLServer2008中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用SQLServer的过程。SQLServer2008还支持基于标准的、与WindowsDNA集成的程序设计模型,使SQLServer数据库和数据课堂考勤的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付SQLServer应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。2.2ADO技术链接数据库微软公司的ADO(ActiveXDataObjects)是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLEDB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。-36- 计算机专业本科生毕业设计(论文)ADO包含一些顶层的对象:连接,代表到数据库的连接;记录集,代表数据库记录的一个集合;命令,代表一个SQL命令;记录,代表数据的一个集合;流,代表数据的顺序集合;错误,代表数据库访问中产生的意外;字段,代表一个数据库字段;参数,代表一个SQL参数;属性,保存对象的信息。ADO向程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。ADO针对客户/服务器以及WEB应用程序作了优化。ADO是基于OLEDB的访问接口,它是面向对象的OLEDB技术,继承了OLEDB的优点。属于数据库访问的高层接口。开发人员在使用ADO时,其实就是在使用OLEDB,不过OLEDB更加接近底层。ADO向我们提供了一个熟悉的,高层的对OLEDB的Automation封装接口。-36- 计算机专业本科生毕业设计(论文)第三章系统分析3.1系统可行性分析可行性分析的任务,并不是所有问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模之内解决。如果问题没有可行的解,那么花费这项开发工程上的任何时间、资源、人力和经费都是无谓的浪费。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。必须记住,可行性研究的目的不是解决问题,而是确定问题是否值得去解。怎样达到这个目的呢?当然不能靠主观猜想,而只能靠客观分析。必须分析几种主要的可能解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度[1]。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。所以从以上的分析原则来看,我所设计的课堂考勤管理系统是一个规模不大的系统,但是目标明确,清晰的描述了对目标系统的一切限制和约束。本系统几乎能在所有的学校使用,当然它需要进一步的完善和更新。在使用过程中,要看它能不能带来效益,毕竟在现今社会效率是第一位的。从现实看,这还是有一定的实用价值的,从另一个角度看,现实社会发展飞速,尊重科技势在必行,因此这也是开发本系统的一个非常重要的原因。21世纪是计算机的时代,它必然取代一部分人的工作,高科技的监控系统进入社会生活的方方面面是发展的趋势。本设计从以下三个方面进行可行性研究:u技术可行性。“课堂考勤管理系统”是为课堂考勤管理人员开发的。本人采用VisualStudio2010和SQLServer2008技术开发课堂考勤管理系统,但是课堂考勤管理系统不是简单的数据处理与查询,还要实现运作流程、管理流程等。流程的实现有相当的难度,需要拟定系统的体系结构,确定所需要的信息技术和学生基本信息,分析并选择合适的开发方式,估算需要的开发时间长度,分析技术中潜在的风险,并提出解决的措施。在VisualStudio2010中可以实现旷课信息查询、请假查询、信息输入、请假输入、数据处理等。u经济可行性。成本方面:人力消耗免费,指导老师义务指导,所以开发本软件的成本是非常低的。-36- 计算机专业本科生毕业设计(论文)效益方面:为学校开发一个完整、合理的课堂考勤管理系统,可大大节余人力,减少手工劳动工作量,提高工作效率,以前需要多人干的工作,使用本系统只需一个人或几个人就能完成,且工作量和劳动强度大大降低。所以开发本软件可以为社会带来很好的经济效益。从以上分析看开发本软件在经济上是可行的。u操作可行性。本软件是为学校课堂考勤的管理者开发的,所有本软件的用户对象是学校课堂考勤的工作人员,由于本软件要设计成友好的界面,写出详细的使用说明,用户只需懂得简单的计算机操作知识,就能自由应用本软件。所以从以上几个方面的分析来看,开发本软件是完全可行的。3.2模块需求分析及设计思想软件需求分析是软件开发周期的第一个阶段,也是关系到软件开始成败的关键步骤。准确、完整和规范化的软件需求是软件开发成功的关键。3.2.1总体架构思想本课堂考勤管理系统是为数据提供了更安全的存取模式。响应速度快。程序开发具有很强的针对性,因此,操作界面漂亮,形式多样,可以充分满足用户自身的个性化要求。3.2.2系统功能模块系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。本课堂考勤管理系统需要完成功能主要有:●课堂考勤管理各种信息的输入,包括旷课、请假、用户信息的输入,删除和修改等。●课堂考勤管理各种信息的查询,包括学生个人信息,学生总体信息、请假等信息的查询。²管理员模块首先对用户进行管理,用户进入管理界面,界面将会显示登录该系统的用户的基本信息,并且显示所有用户的基本信息,系统管理员可以对用户信息进行添加、修改和删除,而普通管理员将受到权限的限制,不能进行任何的操作,只能看到用户的基本信息。所有的用户都不能独立的进行信息注册,需经管理员进行添加。-36- 计算机专业本科生毕业设计(论文)²学生信息查询模块学生信息查询模块是对学生基本信息的管理,学生本人可以对信息进行查询但是不能进行添加、删除和录入,我们可以给每一个学生进行编号,以学号的不同来确定所操作的信息是否正确,而不至于因名称相同而增加工作量,信息的删除也只需将所要删除的基本信息写入信息框,然后点击删除按钮即可。²教师管理模块教师管理模块可以查询所有学生的情况,以及旷课信息和请假信息的录入,以保证每个信息都是准确的,学生的姓名和学号都是统一的,可以减少数据库中的数据量。我们也可以对学生信息进行添加和删除。²信息录入模块教师将学生信息录入后,就应该在录入管理中将学生信息进行录入处理,我们规定每一节课都将会有一个录入信息,定义一个时间,这样就会方便学生信息的查询和操作,可以节省数据库的数据量,方便管理。²查询管理查询就是可以对课堂考勤中的信息以各种不同的条件查询学生的信息,查询条件分别可以从具体的时间、月份和周次进行,再选定表中以某一具体的查询条件进行课堂考勤信息的查询,查询的信息也会显示在对话框中。-36- 计算机专业本科生毕业设计(论文)第四章系统设计在进行了需求分析、确定了设计思想之后,就要进行系统的功能设计和数据库的设计。4.1系统功能设计4.1.1系统登录流程图图4.1系统登录流程图4.1.2系统功能模块图在系统功能分析的基础上,考虑到VisualStudio2010程序编制的特点在仔细分析了学校的数据图后,决定将整个系统分为两大模块,每个模块又有若干个子模块。整个系统功能模块如图4.2所示:-36- 计算机专业本科生毕业设计(论文)课堂考勤管理信息系统基本信息学生基本信息旷课信息请假信息考勤管理用户信息录入管理查询管理用户管理图4.2系统功能模块图4.2数据库设计大多数应用系统都需要后台数据库地支持。在Windows操作系统中,SQLServer是最常见的网络后台数据库。本系统是采用SQLServer2008数据库存储数据。u数据库系统体系结构数据库的体系结构主要包括外模式,模式,内模式三级体系结构。模式又称概念模式,它反映数据库组织的全局逻辑观点,并不涉及数据的物理存储。模式位于总体概念级,故称数据库管理员视图。内模式又称存储模式,它具体描述数据是如何被组织并存放在外部存储器上。内模式由系统设计员选择一定的文件结构进行组织,也是由他们编辑存储程序实现数据存取,故内模式又称系统程序员视图。外模式是面向用户,是呈现在用户眼中的数据库,故外模式又称用户视图。三个模式反映了三种不同的观点:模式表示了概念级数据库,体现对数据库的总体观;内模式表示物理数据库,体现对数据库的存储观;外模式表示用户数据库,体现了数据库的用户观。u数据库系统的组成-36- 计算机专业本科生毕业设计(论文)数据库系统是指实际可运行的按照数据库方式存储和维护并向应用程序提供数据或者信息支持的系统。一个完整的数据库系统由数据库,数据库管理系统,数据库应用程序,支持数据库运行的计算机软硬件环境以及数据库管理员等组成。u数据库设计理念数据库设计有两个最重要的目标:满足应用功能需求和良好的数据库性能。满足应用功能需求,主要是能把用户当前应用以及可预知的将来应用所需要的数据以及其联系全部准确的存放于数据库中,并能根据用户的需求对数据进行合理的修改操作。u数据库设计内容数据设计的内容主要有:数据库结构特性设计,数据库行为特性设计和数据库物理模式设计。数据库的结构特性设计是确定数据库的框架和数据结构。他是汇总各用户试图产生的全局逻辑结构。它反映了现实世界及其联系,能数据共享。在数据库系统中,数据库的行为和动作反映在数据库应用程序中,这些行为和动作主要包括数据库的记录的添加,删除,修改,数据库的查询和统计,事务处理和报表处理等。4.2.1创建数据库本系统采用SQL作为数据库管理系统。先启动SQLServer2008程序,然后创建名为“CourseSearch”的数据库。打开数据库中工具栏的查询分析器,编写SQL语句,创建数据库表。表名分别dbo_login、dbo_absent、dbo_leave。4.2.2数据库逻辑结构设计现在需要将在上面的数据库概念结构转化为SQLServer2008数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。通过对商品课堂考勤管理的内容和数据流程分析,设计数据项和数据结构如下:●管理员信息,包括的数据项有用户名称、用户密码、用户级别;●学生信息,包括的数据项有学号、姓名、年级、班级;●录入信息,包括的数据项有学生姓名、旷课名称、旷课时间、请假信息等;●查询信息,包括的数据项有旷课时间、课程名称、旷课周次等。4.3数据库概念结构设计得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体结构,以及他们之间的关系,为以后的逻辑结构设计打下基础。课堂考勤管理信息系统数据库中各个表格的设计结果如下面表格所示。每个表格所示在数据库中的一个表。-36- 计算机专业本科生毕业设计(论文)(1)用户基本信息表此表主要用来存储用户的基本信息,包括用户名、用户密码和级别等,可对学生信息进行录入、查询操作,用户可以跟据级别不同来对学生和其它信息进行不同的操作。表4.3.1用户信息列名数据类型允许空值账号varchar(30)否用户名varchar(30)否密码varchar(30)否权限varchar(30)否(2)学生基本信息表此表主要用来存储学生考勤的基本信息,包括学号、姓名、年级、班级、旷课时间、周次等,用于信息录入的操作。表4.3.2学生基本信息列名数据类型允许空值学号varchar(50)否姓名varchar(50)否班级varchar(50)否年级varchar(50)否专业varchar(50)否旷课课程varchar(50)否旷课时间varchar(50)否旷课周次varchar(50)否(3)录入信息表此表主要用来存储录入的基本信息,包括旷课时间、旷课周次、课程名,请假时间、请假周次、请假原因等,以实现信息的录入功能。表4.3.2录入信息列名数据类型允许空值学号varchar(50)否姓名varchar(50)否班级varchar(50)否请假原因varchar(5000)否请假时间varchar(50)否请假周次varchar(50)否-36- 计算机专业本科生毕业设计(论文)第五章系统实现本系统主要采用VisualStudio2010技术来进行开发,以VisualStudio2010为编程语言,SQLServer2008是作为后台数据库的考勤管理系统。主要实现三类用户的功能实现,包括普通用户、教师用户和管理员用户。普通用户主要实现基本的旷课信息和请假信息的查询,教师用户在普通用户的基础上实现考勤信息的录入功能和考勤信息的汇总,管理员用户则在教师用户的基础上实现考勤通报的审查以及用户信息的添加修改和删除的功能。本系统登录成功后会显示当前用户的姓名以及登录的具体时间。5.1普通用户功能具体实现本系统按用户类别及使用功能可以分为管理员登录、教师用户登录和普通用户登录。不同级别的用户具有不同的权限。所有用户的主操作界面不相同,每个用户登录只显示自己权限内能够使用的功能。普通用户登录只显示基本的查询功能。5.1.1普通用户登录界面设计思路与要点:用户运行程序后,输入用户名与密码,程序根据用户名到后台数据库查询用户名和密码是否正确,如果正确则登陆成功!系统登录界面如图5.1.1所示:图5.1.1登录界面-36- 计算机专业本科生毕业设计(论文)用户名或密码错误时,则会弹出对话框,如图5.1.2所示:图5.1.2提示对话框核心代码如下:stringstr="select*fromloginwhere账号=@zhanhaoand密码=@mima";SqlParameter[]paras={newSqlParameter("@zhanhao",zhanhao.Text),newSqlParameter("@mima",mima.Text),};ArrayListflag=DAL.DbHelperSQL.GetDataReader(str,"账号",paras);if(flag.Count>0){stringsql="select权限fromloginwhere账号="+"""+zhanhao.Text+""";objectquanxian=DAL.DbHelperSQL.GetSingle(sql);stringsql1="select用户名fromloginwhere账号="+"""+zhanhao.Text+""";objectname=DAL.DbHelperSQL.GetSingle(sql1);if(quanxian.ToString()=="学生"){login.ActiveForm.Hide();//将form窗体隐藏studentf1=newstudent();f1.Show();f1.DQYH1.Text=name.ToString();}Elseif(quanxian.ToString()=="老?师簗"){login.ActiveForm.Hide();//将form2窗体隐藏teacherf1=newteacher();f1.Show();f1.DQYH2.Text=name.ToString();}Elseif(quanxian.ToString()=="管理员"){login.ActiveForm.Hide();//将form2窗体隐藏managerf1=newmanager();f1.Show();f1.DQYH3.Text=name.ToString();}-36- 计算机专业本科生毕业设计(论文)}用户登录通过后,系统将显示下一界面,输入查询信息的具体范围以及索引后则会显示所要查询的旷课信息,如图5.1.3所示图5.1.3信息查询界面核心代码如下:SqlParameter[]pars={newSqlParameter("@data",data),newSqlParameter("@xuehao",textBox2.Text),};stringa="Select*fromabsentwhere学号=@xuehaoand旷课时间=@data";ArrayListal=DAL.DbHelperSQL.GetDataReader(a,"学号",pars);-36- 计算机专业本科生毕业设计(论文)5.2教师功能具体实现设计思路与要点:用户运行程序后,输入用户名与密码,程序根据用户名到后台数据库查询用户名和密码是否正确,如果正确则登陆成功!5.2.1教师用户功能界面用户登录通过后,系统将显示下一界面,如图5.2.1所示:图5.2.1系统界面5.2.2基本信息管理包括课堂考勤信息管理、请假信息管理等。课堂考勤信息管理完成课堂考勤情况的录入和查询;请假信息管理完成请假信息的添加和查询;教师可以实现查询和录入的功能等。在录入操作中用选择时间、课程、学号的形式来完成录入的操作;查询是通过根据查询条件以各种形式显示课堂考勤信息。²录入操作-36- 计算机专业本科生毕业设计(论文)录入操作即将需要添加的信息进行录入处理,这样可以大大减少因人为因素产生的错误。规范化课堂考勤的录入操作。要做录入操作首先确定所要输入的基本信息在用户的基本信息、课堂的基本信息中存在,若不在,则不能进行录入操作。旷课信息需输入学生基本信息和旷课课程和时间;请假信息需输入请假时间和原因,如图5.2.2所示:图5.2.2信息录入界面信息输入完成后点击提交按钮,提交成功后显示提示对话框,如图5.2.3所示:图5.2.3提示界面核心代码如下:stringtime1=year2.Text+"/"+yue2.Text+"/"+ri2.Text;stringsql="insertintoabsent(年级,专业,旷课课程,旷课时间,学号,姓名)values(@f1,@f2,@f3,@f4,@f5,@f6)";SqlParameter[]pars={newSqlParameter("@f1",nj1.Text),newSqlParameter("@f2",zy1.Text),newSqlParameter("@f3",kcbj1.Text),newSqlParameter("@f4",time1.),newSqlParameter("@f5",xh1.Text),newSqlParameter("@f6",xm1.Text),};DAL.DbHelperSQL.ExecuteSql(sql,pars);MessageBox.Show("信息添加成功!","信息提示");-36- 计算机专业本科生毕业设计(论文)²考勤结果统计操作结果统计操作即将需要考勤信息进行统计处理,这样可以大大减少因人为因素产生的错误。规范化课堂考勤的统计操作。要做统计操作首先确定所要输入的基本信息在用户的基本信息、课堂的基本信息中存在,若不在,则不能进行统计操作。输入统计的时间范围以及统计类别即可进行统计操作。输入具体的统计时间范围和统计分类,则会显示统计结果,如图5.2.4所示:图5.2.3结果统计界面核心代码如下:dataGridView3.Columns.Clear();stringdata=year31.Text+"%";stringnum1=GetNember(banji.Text,data)[0].ToString();stringnum2=GetNember(banji.Text,data)[1].ToString();//第一列DataGridViewTextBoxColumncol=newDataGridViewTextBoxColumn();col.Name="班级";col.DataPropertyName="banji";dataGridView3.Columns.Add(col);-36- 计算机专业本科生毕业设计(论文)//第二列DataGridViewTextBoxColumncol1=newDataGridViewTextBoxColumn();col1.Name="旷课人数";col1.DataPropertyName="kknumber";dataGridView3.Columns.Add(col1);;//第三列DataGridViewTextBoxColumncol2=newDataGridViewTextBoxColumn();col2.Name="请假人数";col2.DataPropertyName="qjnumber";dataGridView3.Columns.Add(col2);//数据源DataTabledt=newDataTable();dt.Columns.Add(newDataColumn("banji",typeof(string)));dt.Columns.Add(newDataColumn("kknumber",typeof(string)));dt.Columns.Add(newDataColumn("qjnumber",typeof(string)));dt.Rows.Add(newobject[]{banji.Text,num1,num2});dataGridView3.DataSource=dt;5.3管理员功能具体实现设计思路与要点:用户运行程序后,输入用户名与密码,程序根据用户名到后台数据库查询用户名和密码是否正确,如果正确则登陆成功!5.3.1管理员功能界面用户登录通过后,系统将显示下一界面,如图5.3.1所示:-36- 计算机专业本科生毕业设计(论文)图5.3.1系统界面5.3.2基本信息管理在实现教师用户功能的基础上,实现通报报表的查询和用户信息的管理,包括用户的添加、删除和修改。²通报报表查询通报报表统计操作即将需要考勤信息进行统计处理,这样可以大大减少因人为因素产生的错误。规范化课堂考勤的统计操作。要做通报报表统计操作首先要输入统计的时间范围以及通报报表类型(即旷课次数范围)即可进行统计操作。界面如图5.3.2所示:-36- 计算机专业本科生毕业设计(论文)图5.3.2通报报表操作界面核心代码如下:stringsql2="select姓名fromabsentwhere学号="+"""+test+""";stringsql3="select班级fromabsentwhere学号="+"""+test+""";stringsql4="select年级fromabsentwhere学号="+"""+test+""";stringname=DAL.DbHelperSQL.GetSingle(sql2).ToString();stringbanji=DAL.DbHelperSQL.GetSingle(sql3).ToString();stringgrade=DAL.DbHelperSQL.GetSingle(sql4).ToString();dt.Rows.Add(newobject[]{name,test,banji,grade});²用户管理模块点击用户信息将会弹出用户信息管理的对话框,如图5.3.3所示:-36- 计算机专业本科生毕业设计(论文)图5.3.3用户信息管理界面点击添加按钮将会弹出信息添加对话框,录入所需添加的信息,点击确定即可。界面如图5.3.4所示:图5.3.4添加用户信息界面-36- 计算机专业本科生毕业设计(论文)核心代码如下:uptatef1=newuptate();f1.zhanhao.Text=dataGridView5.Rows[dataGridView5.CurrentCell.RowIndex].Cells[dataGridView5.CurrentCell.ColumnIndex+2].FormattedValue.ToString();f1.name.Text=dataGridView5.Rows[dataGridView5.CurrentCell.RowIndex].Cells[dataGridView5.CurrentCell.ColumnIndex+3].FormattedValue.ToString();f1.mima1.Text=dataGridView5.Rows[dataGridView5.CurrentCell.RowIndex].Cells[dataGridView5.CurrentCell.ColumnIndex+4].FormattedValue.ToString();f1.mima2.Text=dataGridView5.Rows[dataGridView5.CurrentCell.RowIndex].Cells[dataGridView5.CurrentCell.ColumnIndex+4].FormattedValue.ToString();f1.quanxian.Text=dataGridView5.Rows[dataGridView5.CurrentCell.RowIndex].Cells[dataGridView5.CurrentCell.ColumnIndex+5].FormattedValue.ToString();f1.zhanhao.Enabled=false;如果需要修改用户信息,点中所要修改的用户信息的一行,点击修改信息按钮将会弹出对话框,管理员可以修改密码,首先要输入用户的原始密码,然后输入新的密码,为了避免输入的密码不正确,系统要求再次点击确定即可。如图5.3.5所示:图5.3.5修改信息界面核心代码如下:stringhd=dataGridView5.Rows[dataGridView5.CurrentCell.RowIndex].Cells[dataGridView5.CurrentCell.ColumnIndex+2].FormattedValue.ToString();SqlParameter[]pars={newSqlParameter("@zhanhao",hd),DAL.DbHelperSQL.ExecuteSql("deletefromloginwhere账号=@zhanhao",pars);dataGridView5.Rows.Remove(r);-36- 计算机专业本科生毕业设计(论文)如果需要删除用户,点中所要删除的用户信息的一行,点击信息删除,将会弹出提示对话框,再点击确认按钮即可。如图5.3.6所示:图5.3.6用户删除界面核心代码如下:stringhd=dataGridView5.Rows[dataGridView5.CurrentCell.RowIndex].Cells[dataGridView5.CurrentCell.ColumnIndex+2].FormattedValue.ToString();SqlParameter[]pars={newSqlParameter("@zhanhao",hd),DAL.DbHelperSQL.ExecuteSql("deletefromloginwhere账号=@zhanhao",pars);dataGridView5.Rows.Remove(r);-36- 计算机专业本科生毕业设计(论文)第六章系统测试一般情况下,我们所开发出的程序总会存在一些问题,这就需要进行测试,测试的质量直接影响软件的质量。对于此系统的测试从以下几方面进行入手。6.1系统测试的目的及意义系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。 测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些实例来运行程序,以便发现错误。信息系统测试应包括软件测试、硬件测试和网络测试。硬件测试、网络测试可以根据具体的性能指标来进行,此处所说的测试更多的是指软件测试。6.2系统测试的原则软件测试的原则应该是:  (1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。  (2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。  (3)程序员应避免检查自己的程序。(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。(5)充分注意测试中的群集现象。(6)严格执行测试计划,排除测试的随意性。(7)应当对每一个测试结果做全面检查。(8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。6.3测试的方法依据前面所说的测试对象,我们把测试划分为几个方面来进行测试。6.3.1登录测试登录测试是测试中直观的测试方法,输入登录时所需的信息就可以了,但是也会有以下几种会报错的地方,如果所输入的用户名和密码不匹配,则会出现提示窗口,请重新输入;若输入的用户名不存在,系统也会弹出提示对话框,提示所输入的用户名不存在,请重新输入用户名。-36- 计算机专业本科生毕业设计(论文)6.3.2界面测试界面测试是测试过程中比较简单直观的一种测试方法,只要细心地按界面要求核对就行了。可这块往往是程序开发人员容易忽视和遗漏的地方,也是常常出Bug的地方。下面是界面测试中经常出现的几种Bug:(1)错别字,即界面中的标题或者文本内容中出现了错别字。这种Bug如果测试人员不细心,很难找出来,可能会出现在提示信息或界面中。(2)出现了一些根本读不懂的内容,一般多出现在程序的提示信息和一些较长的文本中。这种情况基本上出现在拼起来显示的提示中,页面的简单陈述是通过变量拼组起来的,通过程序将字一个一个地输出来。通常是因为程序中的控制错误或是程序开发人员对程序没有进行认真的自测,导致出现这种Bug。(3)程序员自创的词语,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人员使用一些专业术语,并且混杂着自己的理解出现Bug,主要是由于开发过程中团队合作没有明确的分工,没有统一的规范用语。(4)页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况只出现在没有样式表定义的情况下,或是已经定义的样式表,开发人员在开发过程中没有调用。(5)标题相近的程序及模块,把标题弄混。这种情况多是因为业务方面的定义名称很相似或很类似,并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。6.3.3功能测试顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测试中需要注意的有:(1)查询功能中,基本上按单一查询条件进行查询的,要对没有查询出结果的异常情况进行处理;(2)录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。(3)测试删除功能中需要注意的是单击“删除”按钮后,若删除成功,则会弹出一个对话框,显示所删除的内容删除成功。另外,在删除多条记录的时候,要注意连续选中的几条记录是否真正都被删除了,即如果再按照这种查询方式查询,是否还能查询出来。有的时候需要在数据库中设一个标志位,而不是真正的物理删除。所以在下一次查询中,可能还会被查询出来,这主要是因为在查询条件中没有将标志位考虑在内。-36- 计算机专业本科生毕业设计(论文)(4)关于添加功能的测试,主要是看添加确认后是否所输入的数据在数据库表中是没有出现的。若添加的数据在数据库已经存储了,则添加失败。若成功,则弹出对话框,添加的数据成功。这是最基本的功能,需要注意的是看是否能把已经添加的数据也添加成功了。(5)信息录入的测试,主要是看录入时,所输入的时间、课程名和一些基本信息在信息管理表中是否存在,若不存在,则信息录入操作将失败,不能进行信息的录入。6.3.4需求测试针对需求测试,是测试中很重要的一个环节。因为需求是在软件设计,开发乃至软件测试中重要的依据。要针对需求测试,首先就要对项目的需求和业务有一定的了解。这些需求很多时候是在实现增,删,查,改这些基本功能之上,针对项目和相关业务所作的一些逻辑上的控制。这就要求程序员在设计和编码的时候要去充分理解考虑需求。6.3.5性能测试性能测试在软件的质量保证中起着重要的作用。通常我们把性能指标全部归结到硬件,操作系统和开发环境上,而忽略了代码本身性能上的考虑。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。6.4测试中其他要注意的地方时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。其主要原因是,模块相互调用时接口会引入许多新问题。这就要求在进行程序设计和编码的时候要尽可能地从整体考虑。错误本身出现在程序设计阶段,并非由于程序员编码造成的问题。这就要求我们无论是在开发还是测试阶段,对需求或程序设计存在疑问,应及时提出,及时解决。由于一些模块被修改了,对其他模块造成了影响而出现了新的Bug。发现这些Bug要求我们对程序整体的结构有基本的了解,清楚模块之间的一些联系。6.5课堂考勤信息系统的测试在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试:界面测试:反复点击界面上的按钮及菜单,使界面风格尽可能的统一;功能测试:对系统的几大功能模块逐一测试,尽最大可能发现其潜在的错误;性能测试:测试程序的运行速度,以及程序的安全性;需求测试:根据需求分析的内容,做出对部门进行管理的附加功能以及个性化的系统管理功能,给用户带来更大的方便;通过这几方面的测试,及时修正了系统中存在的问题,提高了系统的性能。-36- 计算机专业本科生毕业设计(论文)第七章总结整个课堂考勤管理考试系统主要包括上面所写的模块及功能,基本上能够覆盖了课堂考勤日常管理中的主要操作。由于时间、所学以及精力的关系,该系统还处于原型设计阶段,许多预想的模块还没有能够及时添加进去。系统的设计的部分也有些模块还可以更好的进行完善。7.1系统中需要改进的问题本课堂考勤管理系统的设计和分析到目前为止还只是一个初始阶段,在这段时间的设计过程中,许多的不足。l系统只提供了键盘和鼠标的输入,没有提供条码扫描的输入。l系统没有提供打印输出的功能,如果需要打印还需借助其他的软件。l系统没有提供用户的工作日志和操作记录。l系统中的一些模块的功能的基本信息中并不全面,还有很多涉及到信息管理的要素没有添加进去。l系统只是提供了一个简单的功能,与现代化的课堂考勤管理还有一定的差距。l系统中的某些功能并没有真正的达到系统功能的方便、快捷。l系统的一些模块的功能是理论化的,在实际中还有许多更复杂的情况并没有考虑进去。在以后实际作用过程中还有很多地方需改进。7.2展望对于一个学校的课堂考勤管理来说,该系统还只是一个雏形,没有完成的事情还很多。有了现有的系统原型,还要与学校进行沟通,根据录入的信息来对课堂考勤进行操作,有了请求才开始对课堂考勤进行操作,将他们实际操作中发现的问题考虑进去,在课堂考勤与课堂考勤之间需要进行调拨,逐步改进上面谈到的一些不足点,完善整个系统。另外,还需参照学校的其他系统,开发出与其他系统的接口。这样才能这正的令学校的管理系统达到完善,为学校提供更多的便利。-36- 计算机专业本科生毕业设计(论文)结束语-36- 计算机专业本科生毕业设计(论文)参考文献[1]张海藩、软件工程导论(第五版)、北京:清华大学出版社、2008;[2]王瑞、于速、张雨.VisualStudio2010数据库系统开发完全手册、人民邮电出版社、2006;[3]姜晓东、C#4.0权威指南、北京、机械工业出版社、2011年1月;[4]C#Web编程、北京、人民邮电出版社、2002年10月第一版;[5]ChrisH.PappasWilliamH.Murray著、C#Web编程、北京人民邮电出版社、2002年第一版;[6]王珊、数据库系统概论(第四版)、高等教育出版社、2006年5年第四版;[7]陈英学、ASP.NET深入编程、北京希望电子出版社、2001年;[8]刘杨等编著、突破C#编程实例五十讲、中国水利水电出版社、2002年;[9]闪四清、数据库系统原理与应用、清华大学出版社、2001年;[10]李真文、SQLServer2000Developer’sGuide开发人员指南、北京希望电子出版社、2001年.-36- 计算机专业本科生毕业设计(论文)致谢-36- 计算机专业本科生毕业设计(论文)附录namespace数学与计算科学学院课堂考勤系统{publicpartialclassmanager:Form{publicmanager(){InitializeComponent();}#region请假信息查询privatevoidtimer1_Tick(objectsender,EventArgse){toolStripStatusLabel1.Text=DateTime.Now.ToString();label17.Left-=1;if(label17.Left==-label17.Width)label17.Left=panel1.Width;}privatevoidForm1_Load(objectsender,EventArgse){timer1.Start();dadagrig5Bind();}privatevoiddadagrig5Bind(){stringa1="select*fromlogin";DataSetds=DAL.DbHelperSQL.Query(a1);dataGridView5.DataSource=ds.Tables[0];}privatevoidbutton1_Click(objectsender,EventArgse){if(KK.Checked==true){dataGridView1.Visible=true;dataGridView2.Visible=false;if(day.Checked==false&&week.Checked==false){MessageBox.Show("请选择查询时间范围!","信息提示");}-36- 计算机专业本科生毕业设计(论文)else{if(day.Checked==true){if(year.Text!=""&&yue.Text!=""&&ri.Text!=""){stringdata;data=year.Text+"/"+yue.Text+"/"+ri.Text;if(textBox2.Text!=""){SqlParameter[]pars={newSqlParameter("@data",data),newSqlParameter("@xuehao",textBox2.Text),};stringa="Select*fromabsentwhere学§号?=@xuehaoand旷课时间=@data";ArrayListal=DAL.DbHelperSQL.GetDataReader(a,"学§号?",pars);if(al.Count>0){DataSetds=DAL.DbHelperSQL.Query(a,pars);dataGridView1.DataSource=ds.Tables[0];}else{MessageBox.Show("您所查询学生没有旷课记录!","信息提示");}else{MessageBox.Show("您所查询学生学号不能为空!","信息提示");}else{MessageBox.Show("查询时间范围年月不能为空!","信息提示");}}}privatevoidbutton6_Click(objectsender,EventArgse){if(year3.Checked==true){if(year31.Text!=""){if(anb.Checked==true){if(banji.Text!="")-36- 计算机专业本科生毕业设计(论文){dataGridView3.Columns.Clear();stringdata=year31.Text+"%";stringnum1=GetNember(banji.Text,data)[0].ToString();stringnum2=GetNember(banji.Text,data)[1].ToString();//第一列DataGridViewTextBoxColumncol=newDataGridViewTextBoxColumn();col.Name="班级";col.DataPropertyName="banji";dataGridView3.Columns.Add(col);//第二列DataGridViewTextBoxColumncol1=newDataGridViewTextBoxColumn();col1.Name="旷课人数";col1.DataPropertyName="kknumber";dataGridView3.Columns.Add(col1);;//第三列DataGridViewTextBoxColumncol2=newDataGridViewTextBoxColumn();col2.Name="请假人数";col2.DataPropertyName="qjnumber";dataGridView3.Columns.Add(col2);//数据源DataTabledt=newDataTable();dt.Columns.Add(newDataColumn("banji",typeof(string)));dt.Columns.Add(newDataColumn("kknumber",typeof(string)));dt.Columns.Add(newDataColumn("qjnumber",typeof(string)));if(nianji.Text=="09级"){ataGridView3.Columns.Clear();stringdata=year31.Text+"%";stringnum1=GetNember("09数学一班,data)[0].ToString();stringnum2=GetNember("09数学二班,data)[0].ToString();dataGridView3.DataSource=dt;}}-36- 计算机专业本科生毕业设计(论文)else{MessageBox.Show("请选择查询具体【年级】!","信息提示");};#endregion}else{MessageBox.Show("请选择查询具体【班级】或【年级】!","信息提示");};else{MessageBox.Show("请选择查询具体时间【年】!","信息提示");}privateArrayListGetNember(stringbanji,stringdata){ArrayListal1=newArrayList();intAbsentNumber;stringsql="selectCOUNT(*)fromabsentwhere班?="+"""+banji+"""+"and旷课时间like"+"""+data+"%"+""";objectAbsentNumber1=DAL.DbHelperSQL.GetSingle(sql);AbsentNumber=Convert.ToInt16(AbsentNumber1);al1.Add(AbsentNumber);intLeaveNumber;stringsql1="selectCOUNT(*)fromleavewhere班级="+"""+banji+"""+"and请假开始时间like"+"""+data+"%"+""";objectLeaveNumber1=DAL.DbHelperSQL.GetSingle(sql);LeaveNumber=Convert.ToInt16(LeaveNumber1);al1.Add(LeaveNumber);returnal1;}privateArrayListGetNember4(stringxuehao,stringdata){ArrayListal1=newArrayList();intAbsentNumber;stringsql="selectCOUNT(*)fromabsentwhere学号="+"""+xuehao+"""+"and旷课时间like"+"""+data+"%"+""";objectAbsentNumber1=DAL.DbHelperSQL.GetSingle(sql);AbsentNumber=Convert.ToInt16(AbsentNumber1);al1.Add(AbsentNumber);returnal1;}-36- 计算机专业本科生毕业设计(论文)privateArrayListGetNum4(stringxuehao,stringyear,stringbegin,stringend){ArrayListal1=newArrayList();stringdata;intbegin1=Convert.ToInt16(begin);intend1=Convert.ToInt16(end);intnum1=0;for(inti=begin1;i<=end1;i++){data=year+"/"+i.ToString()+"/";num1=num1+Convert.ToInt16(GetNember4(xuehao,data)[0].ToString());}al1.Add(num1);returnal1;}privateArrayListZhouGetNum2(stringbanji,stringbegin,stringend){ArrayListal1=newArrayList();stringdata;Hashtableht=hashWeek();intbegin1=Convert.ToInt16(ht[begin].ToString());intend1=Convert.ToInt16(ht[end].ToString());intnum1=0;intnum2=0;for(inti=begin1;i<=end1;i++){data="第+i.ToString()+"周";num1=num1+Convert.ToInt16(ZhouGetNember(banji,data)[0].ToString());num2=num2+Convert.ToInt16(ZhouGetNember(banji,data)[1].ToString());}al1.Add(num1);al1.Add(num2);returnal1;}-36- 计算机专业本科生毕业设计(论文)privatevoidbutton11_Click(objectsender,EventArgse){if(zy1.Text!=null){if(nj1.Text!=null){if(bj1.Text!=null){dataGridView4.Columns.Clear();//第一列DataGridViewTextBoxColumncol=newDataGridViewTextBoxColumn();col.Name="姓名";col.DataPropertyName="name";dataGridView4.Columns.Add(col);//第二列DataGridViewTextBoxColumncol1=newDataGridViewTextBoxColumn();col1.Name="学号";col1.DataPropertyName="number";dataGridView4.Columns.Add(col1);;//数据源DataTabledt=newDataTable();dt.Columns.Add(newDataColumn("name",typeof(string)));dt.Columns.Add(newDataColumn("number",typeof(string)));stringsql="select*fromabsent";ArrayListal;ArrayListbl=newArrayList();al=DAL.DbHelperSQL.GetDataReader(sql,"学号");stringsql2="select姓名fromabsentwhere学号=""";stringsql3="select学号fromabsentwhere学号=""";stringname=DAL.DbHelperSQL.GetSingle(sql2).ToString();stringxuehao=DAL.DbHelperSQL.GetSingle(sql3).ToString();dt.Rows.Add(newobject[]{name,xuehao});dataGridView4.DataSource=dt;}}-36- 计算机专业本科生毕业设计(论文)}-36-