作
摘要:本系统论述了考勤系统的设计开发的全过程,包含系统整体设计,各个功能模块划分,系统功能模块的设计与具体实现等部分。该系统偏重于学生考勤信息查询和数据库的维护,通过已编制好的程序,完成对用户的登录、考勤信息的添加、查询、统计、学生请假等,本系统使用Visual C#与数据库SQL Server 2005编写完成,实现学生考勤信息的记录和管理,为教师的考勤工作提供信息。
关键词:考勤管理;Visual C#;SQL Server 2005
Student Attendance Management System Design Graduate
Thesis
Wei ChunYan
Computer college of computer science and
technologyGrade2008 Instructor: ShulanYing
Abstract:The system elaborated attendance system design and development process, including the system overall design, each function module, design of system function modules and concrete realization and so on. The system focuses on the student attendance information query and database maintenance, through the program, to complete the user login, attendance information to add, query, statistics, students leave, the system uses Visual C and SQL Server 2005database # completed, student attendance information recording and management, for the teacher work attendance information.
Key words: attendance management; Visual C #; SQL Server 2005
目录
1 引 言1 2 需求分析1
2.1 可行性分析1
2.1.1 技术可行性1 2.1.2 经济可行性1 2.2 功能分析1 2.3 系统需求分析2 3 系统设计3
3.1 功能模块3
3.2 系统功能模块设计3 3.3 系统流程4 4 数据库设计5
4.1 数据库逻辑结构设计5 5 详细设计8
5.1 主要界面及代码实现8
5.1.1 用户登陆界面8 5.1.2 系统主界面10
5.1.3 学生出勤信息管理界面12 5.1.4 学生查询界面13
5.1.5 学生基本资料管理界面14 5.1.6 修改密码界面14 5.1.7 检查成绩界面15 5.1.8 检查个人出勤信息15
6 测试与维护16
6.1 测试的目标16 6.2 测试方案16
6.2.1 模块测试16 6.2.2 集成测试17 6.2.3 验收测试17 6.3 设计测试方案17 6.4 系统维护17 结束语19 致 谢19 参考文献20
1 引 言
信息技术的迅猛发展,已经引起社会的深刻变动,信息时代的到来,迫切要求我们的学校管理进行变动。因此,信息化的考勤系统就在这种情况下变的越来越受欢迎,它给教师带来了更加高效处理考勤的方法,使得教学能够比较顺利的进行下去,不会再因为考勤等烦杂事务影响教学。
学生考勤管理系统是一个C/S系统,它的出现,改变了教师手工登记考勤信息的管理方式,管理员及教师使用计算机对学生信息进行管理,具有着手工无法比较的优点,例如:考勤统计查询方便快捷,数据存储量大,可靠性高等,便于教师掌握学生的出勤情况。学生考勤系统以方便、快捷等优点冲击着传统的考勤方式。也正是因为这些优点,使它更符合现代社会人们快节奏、高效率的生活方式。
2 需求分析
2.1 可行性分析
2.1.1 技术可行性
学生考勤管理系统在目前的学校中使用还不普遍,但也有许多类似的成功案例:如教务管理系统、排课系统等。本系统采取Visual C#高级语言及SQL Server 2005数据库技术综合开发。而这个系统尽管其在组织关系上存在着很大的复杂性,繁琐性,但是就整个系统的技术构成上来看,它还是属于一个数据库应用类的系统。其基本操纵还是对存在数据库进行添加、删除、查找、修改等。所以就单纯的数据库应用来看,暂不存在太大的技术问题。
2.1.2 经济可行性
本系统使用C/S架构设计,开发简单,使用度方便,不需要耗费大量的人力物力就能很快的开发出来,系统安排对软硬件要求不高,用户操纵简单,几乎不需要对用户进行专业培训就可使用本系统,而同时又减少了数据的流通环节,不需要花费那么多的时间,也就是说最重要的是就是提高了效率,而又包管了各项数据的准确性,适应了当前的发展形式。 2.2 功能分析
为了解决人工操纵在学生考勤中存在的缺乏,从学校管理人员能够更容易、更方便地使用计算机对学生进行管理,以实现无纸化操纵的方面进行分析。学生考勤管理系统能够提供学生考勤的情况记录,方便地对学生考勤进行评定。学生考勤管理系统应实现以下功能。
用户信息管理的基本功能是添加、修改、删除以及浏览用户信息。用户的具体属性包含用户帐号,用户密码。
添加学生基本信息,包含学生学号、姓名、性别、地址、所在班级等信息,修改学生基本信息,删除学生基本信息,检查学生基本信息。
添加教师基本信息,包含教师工号、姓名、性别、联系电话等信息,修改、删除、检查教师基本信息。
包含出勤管理,请假管理。它们可以实现对学生日常主要考勤情况的记录管理。教师能够把学生的考勤情况输入到相应的数据库,也可对其进行添加、修改、删除。
主要完成对学生的各种考勤资料的统计包含总请假次数,迟到次数等,在查询中可以按学号查询。
学生检查所学课程的平时成绩的记录管理。 2.3 系统需求分析
学生考勤管理系统是学校对考勤实行了信息化管理,考勤管理中主要涉及的管理任务有6个方面:学生基本信息管理、教师基本信息管理、考勤信息管理、请假信息管理、考勤查询浏览、检查成绩以及系统管理。管理员可以查询、添加、修改、删除学生及教师的基本信息;学生可以查询自己的出勤信息,根据所学课程查询自己的平时成绩;教师可以浏览、查询、添加、删除、修改学生考勤的基本信息等处理功能。各管理用计算机及管理软件用Windows环境下的平台,能灵活处理各种特殊情况,方便的修改各种基本信息,查询方便,管理平安,操纵简便,能具有一定的平安性、协调性和完整性。
3 系统设计
3.1 功能模块
1.学生查询模块:
主要完成对学生的各种考勤资料的统计包含总请假次数、迟到次数等,在查询中可以按学号查询。
2.学生信息管理模块:
主要完成对学生资料的管理,包含对学生的信息执行添加、修改和删除等基本操纵。
3.教师信息管理模块:
主要完成对教师资料的管理,包含对教师的信息执行添加、修改和删除等基本操纵。
4.学生考勤管理模块:
该模块包含出勤管理、请假管理。它们可以实现对学生日常主要考勤情况的记录管理。
5.检查成绩:
学生检查所学课程的平时成绩的记录管理。 6.系统管理模块:
进行用户信息管理(增加、删除、修改、查找用户)、密码修改、退出系统等操纵。 3.2 系统功能模块设计
经过调查分析,本系统功能模块如图3.1所示。
学生考勤管理系统 学生 管理员 检查出勤信息检查成绩退出系统修改密码学生信息管理系统管理教师信息管理 3.3 系统流程
本系统分为三个用户:学生、教师、管理员。
管理员:查询、添加、修改、删除学生及教师的基本信息。 学生:查询出勤信息、查询平时成绩。
教师:浏览、查询、添加、删除、修改学生考勤的基本信息等处理功能。
教师 学生查询教师服务学生考勤管理用户信息管理修改密码退出系统 学生出勤管理学生请假管理
用户以分歧的身份登录,则进入分歧的界面。用户登录进入主界面的流程图如图3.2所示。
开始 登 录 N 身份验证 Y 主界面 退 出
图3.2 用户登录流程图
4 数据库设计
4.1 数据库逻辑结构设计
数据库结构的设计在学生考勤管理系统中占有着很重要的地位。它的好坏将会直接影响到本系统的效率和实现的效果。根据系统的实际应用情况,本系统采取Mirosoft SQL Server 2005作为后台的数据库管理工具,以下是本系统数据库设计的具体情况。
表Classes主要用来保管学生所在班级的信息,主要包含班
级名称。
列名 ClassId ClassName 数据类型 varchar varchar 长度 10 50 允许空 否 否 备 注 班级编号,主键 班级名 2. 宿舍信息表Dorms
表Dorms主要用来保管学生所在宿舍的信息,主要包含宿舍名。
列名 DormId DormName 数据类型 varchar varchar 长度 10 50 允许空 否 否 备 注 宿舍编号,主键 宿舍名 3. 教室信息表ClassRooms
表ClassRooms用来保管教室信息。
列名 RoomId RoomName 数据类型 varchar varchar 长度 10 50 允许空 否 否 备 注 教室编号,主键 教室名 4. 课程信息表Courses
表Courses用来保管课程信息。
列名 CourseId CourseName 数据类型 varchar varchar 长度 10 50 允许空 否 否 备 注 课程编号,主键 课程名 5. 学生信息表Students
表Students用来保管学生的基本资料信息。
列名 StuId StuName StuPwd Sex Telephone DormId HomeAddress HomePhone ClassId 数据类型 varchar varchar char char varchar varchar varchar varchar varchar 长度 20 10 8 2 20 10 100 20 10 允许空 否 否 否 否 是 否 是 是 否 备 注 学号,主键 学生姓名 密码 性别 联系电话 宿舍编号,外键 家庭住址 家庭电话 班级编号,外键 6. 教师信息表Teachers
表Teachers用来保管教师基本资料的信息。
列名 TeacherId TeacherName TeacherPwd Sex Telephone 数据类型 varchar varchar char char varchar 长度 10 10 8 2 20 允许空 否 否 否 否 是 备 注 工号,主键 教师姓名 密码 性别 联系电话 7. 用户信息表Users
表Users用来保管系统管理员的基本信息。
列名 UserId UserName UserPwd 数据类型 char varchar char 长度 4 10 8 允许空 否 否 否 备 注 用户编号,主键 用户名 密码 8. 出勤状态表AttendanceStatus
表AttendanceStatus用来存储出勤的状态。
列名 StatusId StatusName 数据类型 char varchar 长度 2 10 允许空 否 否 备 注 出勤状态编号,主键 出勤状态名称 9. 学生出勤表StudentAttendances
表StudentAttendances用来保管学生的出勤情况的信息。
列名 AttendanceId StuId CourseId SchoolYear Semester Week Weekday 数据类型 int varchar varchar varchar varchar varchar varchar 长度 4 20 10 10 10 20 10 允许空 否 否 否 否 否 否 否 备 注 出勤编号,主键 学号,外键 课程编号,外键 学年 学期 周次 星期 SchoolTime StatusId Memo varchar char varchar 20 2 200 否 否 是 上课时间 出勤状态编号,外键 备注 10.学生成绩表StudentScore
表StudentScore用来存储学生平时成绩的信息。
列名 StuId StuName Score 数据类型 varchar varchar int 长度 20 10 4 允许空 否 否 否 备注 学号,外键 学生姓名 学生分数 11.StudentsHoliday学生请假信息表
表StudentsHoliday用来存储学生请假的信息。
列名 StuId HolidayTime StartTime EndTime HolidayType Reason 数据类型 varchar datetime datetime datetime varchar varchar 长度 20 8 8 8 20 200 允许空 否 否 否 否 否 否 备 注 学号,外键 请假时间 开始时间 结束时间 请假类型 请假原因 5 详细设计
5.1 主要界面及代码实现
5.1.1 用户登陆界面
用户登录界面,此界面主要用于用户进入主界面。此界面对用户设置了权限,当用户类型为学生,就进入学生主界面,当用户类型为教师,进入教师主界面,当用户类型为管理员,进入管理员主界面。其登录界面如图5.1所示。
根据用户类型,当用户输入登录帐号和登录密码,点击“登录“按钮,系统将进入分歧用户的主界面,其功能实现主要代码如下:
private void btnOK_Click(object sender, EventArgs e) { int result = -1; //查找结果
if (ValidateInput())//调用自定义ValidateInput()方法,如果用户输入验证通过,则验证账号和密码是否正确 { string selectSql = \"\";//根据选择的用户类型,分别设置查询用的sql语句
if (cboUserType.Text.Trim() == \"学生\")
{ selectSql = string.Format(\"select count(*) from Students where StuId = '{0}' and StuPwd = '{1}'xtLoginId.Text.Trim(), txtLoginPwd.Text.Trim());} else if (cboUserType.Text.Trim() == \"教师\") { selectSql = string.Format(\"select count(*) from
Teachers where TeacherId = '{0}' and TeacherPwd = '{1}'xtLoginId.Text.Trim(), txtLoginPwd.Text.Trim());} else if (cboUserType.Text.Trim() == \"系统管理员\")
{ selectSql = string.Format(\"select count(*) from Users where UserId = '{0}' and UserPwd = '{1}'xtLoginId.Text.Trim(), txtLoginPwd.Text.Trim());}
//调用了DBHelper类的executeScalar()方法
result =
Convert.ToInt32(DBHelper.executeScalar(selectSql)); if (result == 1) //账号和密码验证通过
{//调用了类CommonInfo类的userId、userType对象 CommonInfo.userId =txtLoginId.Text.Trim();//设
置当前登录用户的账号
CommonInfo.userType = cboUserType.Text.Trim();//设置当前登录用户的类型
this.Hide();
frmMain main = new frmMain(); main.Show();}
else { MessageBox.Show(\"您输入的登录账号、登录密
码或用户类型有误!\登录提示\MessageBoxIcon.Error); }}
}
5.1.2 系统主界面
当用户登录成功之后则跳到该系统主界面,在本界面中将IsMdiContainern的属性设置为True,使它成为多文档父窗体,则其它子窗体禁止超出本窗体
外围。主界面如图5.2所示。
学生主界面的主要功能:
“检查成绩”,打开本窗体,学生可检查所学课程对应的平时成绩。
2. 点击菜单中“学生服务”,展开面板,打开“检查个人出勤信息”窗体,学生可检查个人的出勤信息情况。
3.修改密码:学生可修改自己的密码。
4.退出系统:如果想终止该程序,点击该按钮即可。 管理员界面的主要功能:
1.学生信息管理:学生的信息执行添加、修改和删除等基本操纵。
2.教师信息管理:教师的信息执行添加、修改和删除等基本操纵。
3.系统管理:增加、删除、修改用户、密码修改、退出系统等操纵。
教师界面的主要功能:
1.教师服务:密码修改、退出系统。
2.学生考勤管理:包含学生出勤信息录入,学生出勤管理,学生请假管理。实现对学生日常主要考勤情况的记录管理。
3.学生查询:主要完成对学生的各种考勤资料的统计包含总请假次数,迟到次数等,在查询中可以按学号查询。 5.1.3 学生出勤信息管理界面
当用户为教师进入教师界面,在界面中单击菜单“学生考勤管理—学生出勤信息管理”教师对学生的出勤进行考核后,将数
据录入到学生出勤信息并写入到数据库。在“学生出勤信息管理”窗体中教师可以实现对学生日常主要考勤情况的记录管理。学生出勤信息录入如图5.3所示,学生出勤信息管理运行界面如图5.4所示。
学生出勤信息管理窗体主要功能:
“学生出勤信息管理”窗体,可以显示全部学生考勤信息。 2.教师可以对学生的考勤记录进行增加、删除、修改、检查以及查询等操纵, 5.1.4 学生查询界面
当用户为教师进入教师界面,在界面中单击窗体“学生查询”。其界面如图5.5所示。
学生查询主要功能:教师检覆按勤的全部记录,也可按学号查询学生的出勤记录。其“查询按钮”关键代码为:
private void btnQuery_Click(object sender, EventArgs e) { if (this.cboCondition.Text == \"\")
{ MessageBox.Show(\"请输入查询条件!\提示\MessageBoxButtons.OK, MessageBoxIcon.Information); this.cboCondition.Focus();return; }
//设置过滤条件,也即指定 DataView 对象的 RowFilter 属性。
try{//根据“查询条件组合框”中选择的项来决定按哪一列进行过滤
switch (this.cboCondition.Text) { case \"学年\":
{//根据“查询值文本框”的值进行模糊查询
dataView.RowFilter = String.Format(\"SchoolYear like '%{0}%'\ break; }
case \"学期\":
{ dataView.RowFilter = String.Format(\"Semester like '%{0}%'\ break; }
case \"课程名称\":
{ dataView.RowFilter = String.Format(\"CourseName like '%{0}%'\ break; }
case \"学号\":
{ dataView.RowFilter = String.Format(\"StuId like '%{0}%'\ break; } default:
{//如果没有输入任何过滤条件,返回 0 条记录。
dataView.RowFilter = String.Format(\"1 = 0\"); break; } }}
catch (Exception ex)
{ MessageBox.Show(ex.Message, \"提示\MessageBoxButtons.OK, MessageBoxIcon.Error);} }
5.1.5 学生基本资料管理界面
当用户为管理员进入管理员界面,在界面中单击“学生基本资料管理”,管理员对学生的信息执行添加、修改和删除等基本操纵。其界面如图5.6所示。
5.1.6 修改密码界面
当用户为管理员进入管理员界面,在界面中单击“密码修改”,管理员可以修改密码,当操纵正确,系统将会提示密码修改成功,否则将重新输入。此界面与教师、学生的修改密码的实现方法相同。其界面如图5.7所示。
5.1.7 检查成绩界面
当用户为学生进入学生界面,在界面中单击“检查成绩”,学生可检查所学课程对应的平时成绩,并在数据视图中显示学生的学号、姓名、成绩。其界面如图5.8所示。
5.1.8 检查个人出勤信息
当用户为学生进入学生界面,在界面中单击“检查个人出勤信息”,并在数据视图中显示该生对应的出勤信息(学年、学期、周次、星期、节次、课程名称、姓名、出勤状态、备注(学生出勤情况的统计))。其界面如图5.9所示。
6 测试与维护
6.1 测试的目标
1.测试的目的是为了发现程序中的错误而执行程序的过程。 2.成功的测试是发现了到今为止尚未发现的错误的测试。 6.2 测试方案
本系统开发过程进行的测试步调如下: 6.2.1 模块测试
也称单元测试,目的是包管每一个模块作为一个单元能正确运行,本测试所发现的往往是编码和详细设计的错误,主要评论模块的四个特点:
1.模块接中。 2.局部数据结构。 3.重要的执行路径。 4.出错处理通路。
6.2.2 集成测试
对软件结构中较上层使用自顶而下的测试方法,而对软件结构中较下层,使用的是自底向上方法,两者结合,这是对模块较多时测试的一种折衷方法。 6.2.3 验收测试
验收软件的有效性。目的是标明系统能够像预定的那样工作,验收测试一般使用黑盒测试法,验收测试有两种可能的结果。
1.功能和特性与设计的要求有差距。
2.功能和性能与设计要求一致,软件是可以接受的。 6.3 设计测试方案
本系统中应用了如下测试方案:语句覆盖、判断覆盖;条件覆盖,逻辑覆盖等。 用例名称:登录测试。
基本描述:用户通过登录拥有系统基本操纵权限。
测试方案:分别使用分歧的登录方法时行登录,检查系统是否相应的错误和成功提示。
1.用正确密码登录已存在帐号。 2.用错误密码登录已存在帐号。 3.用不存在帐号登录。 4.帐号或密码为空。
预期结果:
1.每一组测试登录成功,进入主界面。
“您输入的登录账号、登录密码或用户类型有误,请重新输入”。
“帐号不存在!”。
“登录账号或登录密码不克不及为空!”。
测试结果:和预期结果一样,通过测试状态,测试成功! 6.4 系统维护
本系统为适应维护的需要,采取如下措施: 1.软件配置程序源代码。 2.开发过程文档齐全。
3.源代码内部的文档有详细说明、注释均可提高可维护性。 4.尽量松散,高内聚。
结束语
这是我借鉴开发的第一个系统,开发此系统也是对以前几年的学习进行一个全方面的检验。开发此系统的过程中,在同学及老师的大力支持与帮忙下,发现自己还有诸多的缺乏之处。要编一个功能完善的系统,绝不是一件简单的事情,这需要长期的实践经验积累。因此,第一次开发这样的系统,千万不要把自己目标定的太高,根据自身的实力而定。
由于自身的知识肤浅,经验缺乏。因此,在该考勤管理系统
的设计与功能实现方面还有诸多缺乏,比方实现的主要功能未几,模块过少,有些界面的代码过于繁杂,界面整体效果不敷醒目等问题。但此次能认识到自己的缺乏,相信在今后的工作中,能根据工作的具体要求不竭的修改、完善,争取使该系统慢慢趋向全面。
致 谢
本次结业设计是在舒兰英老师的悉心指导和热心帮忙下完成的。她给我的设计和论文提出了很多贵重的意见,并给我作了仔细的修改。在她的鼓励与耐心的指导下,我的设计和论文才干快速、保质量完成。在和舒老师的接触中,她给我以毫不保存的指导,促进了我对专业知识的巩固和提高,让我受益匪浅。然后还要感谢大学四年来所有的老师,为我打下广博精深的专业知识的基础,同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励,此次结业设计才会顺利完成。
在此,衷心的谢谢您们!
参考文献
[1]孙晓非,冯冠.C#程序设计教程[M].北京:清华大学出版社,2008.212-245.
[2]王小科,吕双.C#程序设计尺度教程[M].北京:人民邮电出版社,2009.404-489.
[3]周忠荣.数据库原理与应用[M].北京:清华大学出版
社,2003.342-450.
[4]包锦阳.本科生结业论文(设计)写作指导[Z]. 浙江:浙江大学出版社,2004.12-59.
[5]李维杰,孙乾君.数据库原理与应用简明教程[M].北京:人民邮电出版社,2007.23-110.
[6]闫菲.软件工程[M].北京:清华大学出版社,2003.90-160.
因篇幅问题不能全部显示,请点此查看更多更全内容