学生考勤管理系统实训报告 组长:xx组员:xx、xx指导教师:xx实训时间:2011-6-2434目 录第一章 用户需求分析 31.1 学生用户需求描述 31.2 任课老师用户需求描述 41.3 院系领导用户需求描述 41.4 系统管理员用户需求描述 5第二章 数据库设计 72.1 E-R图 72-2数据字典 9第三章 系统设计与实现 113.1功能结构图 113.2系统设计与实现 123.2.1主窗体登录模块 123.2.2学生登录模块 123.2.3教师登录模块 133.2.4管理员登录模块 153.2.5其他登录模块 163.2.6管理员登录到界面的操作 173.2.7学生登录到界面的操作 233.2.8教师登录到界面的操作 253.2.9其他登录到界面的操作 29结束语 33参考文献 34第一章 用户需求分析1.1 学生用户需求描述 学生对本系统的主要需求是:请假以及查看在校期间所有的上课出勤信息请假需求:学生在请假的全过程当中,学生可以随时查看请假的详细进展情况查看出勤信息需求:学生可以查看在校期间所有学期上课出勤的详细信息,如“实用英语”这门课程在整学期请假、旷课、迟到、早退了多少次,以及具体的时间、任课老师名、第几节课等详细信息。
其他需求:查看本人的基本信息,如本人的所属院系、年级、专业、班级、学号、姓名、性别等图1-1 学生用例图1.2 任课老师用户需求描述 任课老师对系统的主要需求是:管理所教班级学生的上课出勤信息以及查看所教班级学生的上课出勤信息管理学生上课出勤需求:便于掌握学生的出勤情况,决定学生上课的最终结果查看学生出勤信息需求:查看所教班级学生整个学期上出勤统计信息及详细信息图1-2 教师用例图1.3 院系领导用户需求描述 院系领导对本系统的主要需求是:审批本班学生本学期的请假以及查看本班学生本学期所有课程的上课出勤信息审批学生请假需求:本班学生本学期请假申请后,自动提示院系领导有等待审批的请假信息,院系领导针对请假申请信息进行学生请假审批,以及对请假信息回复查看学生上课出勤信息需求:查看本班学生整个学期有关课程的上出勤统计信息及详细信息 图1-3院系领导用例图1.4 系统管理员用户需求描述 系统管理员有系统的最高权限,负责系统所需所有数据的动态同步更新以及维护,根据系统针对各用户的设计,基本功能需求如下:(1)、管理学校各院系、年级、专业、班级的添加、删除、修改等2)、管理每个学期每个班级的课程安排及指定院系领导 和任课老师。
3)、管理系统所有用户 (4)、管理全校课表安排5)、管理全校每学年开学的起止时间6)、管理系统的请假、考勤信息图1-4 系统管理员用例图第二章 数据库设计2.1 E-R图学生信息表(学号、姓名、院系、班级编号、专业、性别、入学时间、登录密码)学生上课出勤记录表(上课时间、学生学号、学生上课考勤状态)请假信息表(学生学号、请假原因、开始时间、结束时间、请假天数)任课老师表(编号、姓名、性别、所教班级、所教课程、院系、入学时间、登录密码)课程(上课时间、名称、课程ID)班级(班级编号、院系、名称)图2-1 学生考勤管理E-R图 2-2数据字典表1-1学生表stu_nointNot nullprimary key学号stu_namechar(10)Not null,姓名stu_sexchar(1)Not null,性别Cl_IDchar(13)Not null,FK班级IDstu_professionalchar(60)Not null专业stu_Facultieschar(40)Not null院系Stu_ruxuetimeVarchar(50)null入学时间Stu_mimaVarchar(50)Not null登录密码 表1-2任课老师表 tea_nointNot nullPrimary key编号tea_namechar(10)Not null姓名tea_sexchar(1)Not null性别Cl_IDintNot nullFK班级IDcurr_numberchar(60)Not nullFK课程编号tea_Facultieschar(40)Not null院系tea _mimaVarchar(50)Not null登录密码 表1-3 学生上课出勤记录表sk_timechar(40)Not null,上课时间stu_nointNot null,FK PK 学号Sk_statuschar(10)Not null,学生上课考勤状态表1-4 请假信息表stu_nointNot null,Fk PK学号qingjia_yuanyinVarchar(200)Not null,请假原因start_timechar(30)Not null开始时间end_timechar(30)Not null结束时间day_numberchar(13)Not null请假天数表1-5 班级表 cl-namechar(40)Not null,课程名Cl_IDchar(20)Not null,primary key班级IDcl-Facultieschar(40)Not null,院系表1-6 课程表 curr-namechar(40)Not null,班级名curr_numberchar(20)Not null,primary key课程编号curr- timechar(40)Not null,上课时间第三章 系统设计与实现3.1功能结构图 根据项目的开发要求,本系统分成五个主功能模块:录入学生信息模块、删除学生信息模块、查询信息模块、录入老师信息模块、删除老师信息模块。
系统功能结构图如下: 图3-1 系统功能结构3.2系统设计与实现3.2.1主窗体登录模块 图3-2 学生考勤系统登陆主界面3.2.2学生登录模块 点击“学生” 弹出学生登录窗口如图3-3所示 SQL代码 :学生登录 x = new 学生登录(); x.ShowDialog(); //弹出学生登录窗口实现登录,输入【学号】和【密码】后,点击【登录】切换的学生中心:kaoqinguanliDAL.Student ks = new kaoqinguanliDAL.Student(); DataTable dd = ks.studenglu(int.Parse (textBox1 .Text ),textBox2 .Text ); if (dd.Rows.Count >= 1) { MessageBox.Show("登入成功!"); this.Close(); 欢迎进入学生中心 con = new 欢迎进入学生中心(); con.ShowDialog(); } else { MessageBox.Show("您输入的密码错误,请检查后重新输入!"); this.Close(); } 图3-3 学生登录窗口3.2.3教师登录模块点击“教师” 弹出教师登录窗口如图3-4所示 SQL代码 :教师登录 j = new 教师登录(); j.ShowDialog(); 实现登录,输入【教师编号】和【密码】后,点击【登录】切换的教师中心kaoqinguanliDAL .Teacher kt=new kaoqinguanliDAL.Teacher (); DataTable dd = kt.denglu(int.Parse (textBox1 .Text),textBox2tea .Text ); if (dd.Rows .Count>=1) { MessageBox.Show("登入成功!"); this.Close(); 欢迎进入教师中心 js = new 欢迎进入教师中心(); js.Show(); } else { MessageBox.Show("您输入的密码错误,请检查后重新输入!"); this.Close(); } 图3-4教师登录窗口3.2.4管理员登录模块点击“管理员” 弹出管理员登录窗口如图3-5所示 SQL代码 :管理员登录gl = new 管理员登录(); gl.ShowDialog(); 实现登录,直接输入【密码】后,点击【登录】切换的管理中心:欢迎进入管理中心 h = new 欢迎进入管理中心(); if (this.textBox2tea .Text == "glz2011") { MessageBox.Show("登入成功!"); this.Close(); h.ShowDialog(); } else { MessageBox.Show("您输入的密码错误,请检查后重新输入!"); this.Close (); } 图3-5 管理员登录窗口3.2.5其他登录模块点击“其他” 弹出院系领导登录窗口如图3-6所示 SQL代码 :院系领导登录yx = new院系领导登录(); yx.ShowDialog(); 实现登录,直接输入【密码】后,点击【登录】切换的考勤中心:欢迎进入考勤中心 kq = new 欢迎进入考勤中心(); if (this.textBox2tea.Text == "yx2011") { MessageBox.Show("登入成功!"); this.Close(); kq.Show(); } else { MessageBox.Show("您输入的密码错误,请检查后重新输入!"); this.Close(); } 图3-6 院系领导登录窗口3.2.6管理员登录到界面的操作管理员登陆后,进入【管理中心界面】(如下图所见)并可以对学生信息、教师信息、考勤信息、请假信息、课程信息和教室信息进行添加、删除和修改行为. 图3-7 教室信息添加 图3-8 教室信息修改 图3-9 教室信息删除在多个选项卡中,由于有主、外键的设置,要添加教室信息,在代码中设置多种组合的判断修改代码,可随便修改以主键为不变的量。
删除从外键表开始,若表中数据未和其他表联系,则可直接删除现以教室信息为例选择【教室信息】选项卡,该选项卡中有三种check选择,在编写代码是用判断选择【添加】进行数据添加(如图2-7所见);选择【修改】进行数据修改(如图2-8所见),在代码中使用判断,并在C#中编写多种组合的修改;选择【删除】进行数据删除(如图2-9所见)具体教师信息操作的SQL代码:if (radioButton18.Checked == true) { kaoqinguanliDAL.Class kkc = new Class(); kkc.addclass(textBox21 .Text ,textBox22 .Text ,textBox23 .Text); MessageBox.Show("添加成功!"); } else if (radioButton16.Checked == true ) { kaoqinguanliDAL.Class kkc = new Class(); if (textBox21.Text != "") { if (textBox23.Text != "") { kkc.clpddate(textBox21.Text, textBox23.Text); MessageBox.Show("修改成功!"); } else { MessageBox.Show("请确认后,重新输入!"); } } else { MessageBox.Show("班级编号不能为空!"); } } else if(radioButton17 .Checked ==true ) { kaoqinguanliDAL.Class kc = new Class(); kc.cldelete(textBox21.Text); MessageBox.Show("删除成功!"); }其它选项卡中操作与教室选项卡相似,代码差不多,就不一一说明了。
SQL代码如下:学生if (radioButton1.Checked == true) { kaoqinguanliDAL.Student kss = new Student(); kss.addstudent(textBox2.Text, comboBox1.Text,int.Parse (textBox4 .Text) , textBox5.Text, textBox6.Text,textBox24 .Text,textBox29 .Text ); MessageBox.Show("添加成功!"); } else if (radioButton3.Checked == true ) { kaoqinguanliDAL.Student kss = new Student(); if(textBox1 .Text!=null ) { if(textBox4.Text !=null) { if(textBox5.Text !="") { if(textBox6.Text !="") { kss.stupddate4(int.Parse (textBox1.Text),int.Parse ( textBox4.Text), textBox5.Text, textBox6.Text); MessageBox.Show("修改成功!"); } else { kss.stupddate3(int.Parse(textBox1.Text),int.Parse ( textBox4.Text), textBox5.Text); MessageBox.Show("修改成功!"); } } else { if(textBox6.Text!="") { kss.stupddate1(int.Parse(textBox1.Text), int.Parse (textBox4.Text), textBox6.Text); MessageBox.Show("修改成功!"); } else { kss.stupddate2(int.Parse(textBox1.Text),int.Parse ( textBox4.Text)); MessageBox.Show("修改成功!"); } } } else { if(textBox5.Text!="") { if( textBox6.Text!="") { kss.stupddate6(int.Parse(textBox1.Text), textBox5.Text, textBox6.Text); MessageBox.Show("修改成功!"); } else { kss.stupddate(int.Parse(textBox1.Text), textBox5.Text); MessageBox.Show("修改成功!"); } } else { if(textBox6.Text!="") { kss.stupddate5(int.Parse(textBox1.Text), textBox6.Text); MessageBox.Show("修改成功!"); } else { MessageBox.Show("请确认后,重新输入!"); } } } } else{MessageBox.Show("学号不能为空!");} } else if (radioButton2.Checked == true) { kaoqinguanliDAL.Student kss = new Student(); kss.studlete(int.Parse(textBox1.Text)); MessageBox.Show("删除成功!"); }3.2.7学生登录到界面的操作根据用户需求不同,学生登录后进入【学生中心】(如下图所见),对学生信息、考勤信息和请假信息进行查询。
Check选择【学生信息】,按条件查询,在【学号】中添加数据,按【确定】输出所查询 图3-10 学生信息按条件查询 图3-11 学生信息全部查询 根据要求不同查询有按条件和全部查询学生信息查询SQL代码:kaoqinguanliDAL.Student stu = new Student(); if (textBox1stu_no.Text != "") { DataTable dt = stu.stugetall1(textBox1stu_no.Text); dataGridView1.DataSource = dt; } else { DataTable dt = stu.stugetall(); dataGridView1.DataSource = dt; } 3.2.8教师登录到界面的操作根据用户需求不同,教师登录后进入【教师中心】(如下图所见),对考勤信息进行修改,教师信息的查询,以及对考勤信息进行查询。
图3-12 教师信息全部查询图3-13 教师信息按条件查询SQL代码:kaoqinguanliDAL.Teacher kt = new Teacher(); if (textBox7.Text != "") { DataTable dt = kt.getall1(int.Parse (textBox7.Text )); dataGridView1.DataSource = dt; } else { DataTable dt = kt.getall(); dataGridView1.DataSource = dt; }图3-14 修改前(考勤信息查询)图3-15 考勤信息修改图3-16 修改后(查询) 考勤信息查询与修改SQL代码:kaoqinguanliDAL.Kaoqinrecord kk = new Kaoqinrecord(); if (comboBox3.Text != "") { kk.kqupddate(int.Parse(textBox29kq_ID.Text), comboBox3.Text); MessageBox.Show("修改成功!"); } else { MessageBox.Show("请确认后,重新输入!"); } MessageBox.Show("修改成功!");选中表中一行数据,再点击【考勤信息修改】,行中数据进入指定textBox中。
进行修改,再点击【修改】其中实现数据进入指定地点的主要代码:private void showkaoqin_cellclick(object sender, DataGridViewCellEventArgs e) { selehang = e.RowIndex; } private void showkaoqin_Resize(object sender, EventArgs e) { dataGridView2.Width = this.Width; int i = dataGridView2.ColumnCount; if (selehang > 0) { int len = dataGridView2.Width / i; for (int j = 0; j < i; j++) { dataGridView2.Columns[j].Width = len; } } } private void 欢迎进入教师中心_Load(object sender, EventArgs e) { kaoqinguanliDAL.Kaoqinrecord kk = new Kaoqinrecord(); dataGridView2.DataSource = kk.kqgetall(); }双击【考勤信息修改】后的代码: textBox29kq_ID.Text=dataGridView2.Rows[selehang].Cells[0].Value.ToString();comboBox3.Text=dataGridView2.Rows[selehang].Cells[3].Value.ToString();3.2.9其他登录到界面的操作根据用户需求不同,院系领导登录后进入【考勤中心】(如下图所见),对考勤信息进行条件和非条件查询,教师信息的条件和非条件查询,以及对考勤信息的条件和非条件查询。
图3-17 按条件查询学生信息 图3-18 按条件查询考勤信息 图3-19 条件查询教师信息 院系领导查询SQL代码:if (radioButton1.Checked == true ) { kaoqinguanliDAL.Student stu = new Student(); if (textBox1.Text != "") { DataTable dt = stu.stugetall1(textBox1.Text); dataGridView1.DataSource = dt; } else { DataTable dt = stu.stugetall(); dataGridView1.DataSource = dt; } } else if (radioButton2.Checked == true) { kaoqinguanliDAL.Teacher kt = new Teacher(); if (textBox2.Text != "") { DataTable dt = kt.getall1(textBox2.Text); dataGridView1.DataSource = dt; } else { DataTable dt = kt.getall(); dataGridView1.DataSource = dt; } } else if (radioButton3.Checked == true ) { kaoqinguanliDAL.Kaoqinrecord kk = new Kaoqinrecord(); if (textBox1.Text != "") { DataTable dt = kk.kqgetall1(textBox1.Text); dataGridView1.DataSource = dt; } else { DataTable dt = kk.kqgetall(); dataGridView1.DataSource = dt; } { DataTable dt = kk.kqgetall(); dataGridView1.DataSource = dt; }结束语学生考勤管理系统主要以学生考勤状态的相关信息为资源,对学生、老师和领导等对象开放进行考勤的查询,以及老师的考勤信息的修改。
它采用C#编程和数据库设计,基本符合设计要求在系统的设计及开发过程中,老师的指导让我们对系统开发与实际应用有了更深了理解和认识,为我以后的学习打下了一定的理论与实际操作相结合的基础同时,在开发过程中,我对数据库、C#等相关技术知识也有了更深层次的认识由于开发设计能力有限,开发经验不足,系统仍存在很多不足,与实际应用中还有很大差距在需求设计阶段,搜集的信息不充足,对实际需求了解不足因此,在开发过程中做出的需求分析不彻底,系统的功能及工作流程不能在设计之初完整地确定下来,系统的某些功能是随着设计的进行逐步和老师的指导下确定和修改的,在一些功能中仍存在不完善之处,页面需进一步美化,系统后台管理方面需给予进一步重视虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统参考文献[1] 《.SQL Server范例开发大全>>曾毅 编著[2] (百度文库和百度问题)[3] 《C#软件开发项目实践》 方小伟 赵永军 李其中 编著[4] 《数据库设计教程》何主洁 黄婷儿 译著 [5] 《数据库系统概论》 萨师煊 王删 编著[6] 高校学生考勤管理系统的设计研究 来源:中国一卡通网作者:代颖[7] (csdn论坛)。