学生管理系统毕业设计(25页).doc
-学生管理系统毕业设计-第 17 页毕 业 论 文论文题目 学生管理信息系统设计 院 别 计算机学院专 业 计算机科学与技术 年 级 2008级 学 号 200824131130 学生姓名 陈宏靖指导教师 赵玉明完成时间 2012年 4 月肇庆学院教务处制目 录1 绪论11.1 引言11.2 开发背景21.3 开发工具的选择22 系统设计原理32.1 需求分析32.2 系统设计42.2.1系统功能结构图42.2.2系统业务流程图42.3 可行性分析72.3.1 技术上的可行性分析72.3.2 经济上的可行性分析72.3.3 用例图72.3.4 简要总结83 数据库设计原理93.1 数据库需求分析93.2 数据库表实体93.3各表的物理结构123.4 文件夹组织结构144 系统实施154.1 Microsoft Office Access数据库的选择154.2 C#开发语言的选择154.3系统的详细设计的实现154.3.1系统登录设计154.3.2系统主界面设计154.3.3用户管理184.3.4用户功能194.4部分代码的实现225 系统测试265.1软件测试基础理论265.2软件测试目的265.3软件测试方法265.4系统测试275.4.1 测试用例设计要求275.4.2 系统各个模块测试用例285.5测试报告28结束语.29参考文献.29致 谢.30学生管理信息系统设计摘要:学生管理信息系统设计是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本文介绍了学生管理信息系统的开发整个过程,阐述了系统分析、系统设计、数据库设计和系统实施的全过程。在开发方法上本系统利用了软件工程化的思想和方法,总体上采用结构化生命周期开发方法,具体模块实施采用了原型法和面向对象系统开发方法。并采用 VisualS 2008 作为开发工具,Microsoft Office Access 作为后台数据库。本系统具有系统维护、外观设置、学生信息管理,学生成绩管理,教师信息管理,选课管理,数据维护等模块,可分别完成日常学生信息,选课信息,教师信息,学生成绩信息的添加、修改、删除、查询等功能。在此次设计中主要对系统维护、外观设置、学生信息管理,学生成绩管理,教师信息管理,选课管理,数据维护等模块进行了具体设计。关键词: 学生管理信息系统;C/S;ACCESS数据库;C#1 绪论1.1 引言该项目开发的软件为学生管理信息系统软件,是鉴于目前学校学生人数剧增,各种信息呈爆炸性增长的前提下,学校对信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有教育单位(包括学校,学院等等)的信息的管理。 目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学生管理系统也是有了很大的发展,商业化的学生信息管理软件也不少。但本系统完全独立开发,力求使系统功能简洁明了,且易于操作。1.2 开发背景学生管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的学生管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。1.3 开发工具的选择 现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:Microsoft公司的Visual S, Microsoft公司的Visual C, Borland公司的Delphi和 Powersoft公司的PowerBulider以及Java等。在这些程序开发工具中,有的强调程序语言的弹性与执行效率;有的则偏重于可视化程序开发工具所带来的便利性与效率的提高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必定要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点成为了一纸空谈;相反地,如果只强调语言的弹性,却没有便利的工具作配合,会使得一些即使非常简单的界面处理动作,变得复杂和麻烦起来,这样也会浪费程序设计师们的宝贵时间。作为数据库系统的开发,Visual S 2008是一个非常理想选择,它有效地避免了以上所谈到的诸缺点。数据库技术是MIS设计中的重要支持技术,在MIS开发过程中,如何选择数据库管理也是一个重要的问题,目前,数据库产品可谓琳琅满目,每种产品都具有各自的特点和适用范围,因此,在选择数据库前,我慎重考虑了一下,应数据库应用的特点及适用范围,本系统选用了数据库Microsoft Office Access,开发工具当然是非Visual S 2008莫属了。Visual S 2008是一种可视化的、面向对象和调用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C+编程基础。在Visual S 2008环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。2 系统设计原理2.1 需求分析 针对其他学生管理软件的不足,去掉多余的操作,要求制作和系统可以方便、快捷地对学生和教师信息、学生成绩等进行添加、删除、修改的操作,并且可以批量地录入学生和教师信息以及学生成绩,也可以让学生对自己需要的选修课进行选择,还可以对数据进行备份保存和恢复,以及学生对学校最新公告的获取和各类型用户的注册。(1)、信息管理功能添加信息:以学生或教师为单位,进行学生或教师的入库。其中分为单个添加和批量添加。单个添加学生供一个学生或教师信息入库;批量添加可以大量的信息同时录入到数据库中。删除信息:当学生毕业或更换教师后,信息不再需要,系统的基本数据库中需要删除信息。该功能主要进行信息的删除。修改信息:当某个学生或教师信息输入不正确时,可以对单个的学生信息进行修改。 (2)、学生成绩管理功能成绩录入:以学生为单位,录入各科目的考试成绩。成绩查询:可以对学生的考试成绩进行“定位型”的查询。成绩管理:可以对考试成绩的修改、删除、筛选等操作。(3)、选课功能选课管理:提供本学期各年级各专业限选与任选所开课程名称的提交、退选、审批。(4)、公告功能。校内的各大公告,让学生获取校内最新的信息,其中包括公告的编辑与查询等。(5)、用户的注册功能。针对不同的用户类型,登录后的权限不同设置,注册后的用户登录后的功能各不相同。2.2 系统设计2.2.1 系统功能结构图学生管理系统功能结构图如图2-1所示:2.2.2 系统业务流程图学生管理系统业务流程图如图2-2所示:图2-1 系统功能结构图图2-2 系统业务流程图2.3 可行性分析2.3.1 技术上的可行性分析技术方面的可行性就是根据现有的技术条件,能否实现系统的各项要求。(1)设备:该系统对所需的硬件设备,如pc机配件的性能要求一般,现有设备的性能完全能够满足系统功能的要求。(2)软件上,本系统属于数据库应用程序,本系统需要一个数据库服务器及其运行的操作系统平台,根据客户的数据量并不是十分巨大,我们选择目前市场上价格比较低廉的数据库服务器产品:Microsoft Office Access及配套的平台Windows XP。而前台开发工具采用Microsoft Visual Studio 2008 ,利用其可视化的开发环境、丰富的控件资源,能快速开发出应用程序。2.3.2 经济上的可行性分析(1)费用:本系统属于小型的学生管理系统,软硬件费用要求不高,一般的学生行业都能支付的了费用。(2)效用:实施该系统也能给学校带来长期效益,它可帮助领导实现管理方法的现代化、科学化,极大地提高学生管理的工作质量与工作效率,减少管理支出的费用,从而保证学校管理的可持续的良好发展。因此经济上具有了系统开发的可行性。2.3.3 用例图用例图是从用户角度描述系统功能,并指出各功能的操作者。它描述出了用例、角色以及它们之间的关系。本系统中的主要用户有学生、教师以和超级管理员。其中超级管理员是可以对学生和教师的信息进行管理、学生选课管理和数据库的操作。而学生是能够管理自己的信息和查询个人成绩以及查看公告,教师也能查看公告和管理自己的信息,还可以管理学生的成绩。整体体现在用例图如图2-3所示:图2-3 用例图2.3.4 简要总结经过细致地初步调查和严密地可行性分析,我们认为在现有条件下,为学生管理信息系统是完全可行的。3 数据库设计原理学生管理系统采用了Microsoft推出的Microsoft Office Access作为后台数据库。3.1 数据库需求分析在设计数据库结构时,以及可能地满足用户所提出的各项要求,同时又避免同时又要避免冗余数据产生。由于在学生管理系统中,需要采集大量的信息,包括学生信息,教师信息,选课信息,成绩信息等,如果不能够合理有效地组织数据表的结构,以及合理设置每张表所包含的字段,那么后期进行的数据的整理以及汇总时,就会增加编程人员的开发难度,并造成成绩效益的大幅度下降。根据学生基本信息以及其他相关信息的特点,归纳出以下规律:(1)一种角色对应一个和多个用户;(2)每一个学生都有不同的学号;(3)每一个教师都执教一个或者2个科目;(4)每门选课都记录多个学生;(5)个人成绩对应一个学生;(6)学生成绩对应多个学生;3.2 数据库表实体学生管理系统的数据库主要用于储存学生管理中的数据,需建立一个用户登录信息表,用于存储所有用户登录信息。用户登录实体E-R图如图3-1所示:由于学生和教师信息的内容很多,因此要建立一个学生信息表来存储学生信息的内容,便于学生或管理员查询,同样地,也要建立一个教师信息表。学生信息实体E-R图和教师信息实体E-R图如图3-2和3-3所示:图3-1 用户登录实体E-R图图3-2 学生信息实体E-R图图3-3 教师信息实体E-R图由于学生选课时候的信息各不相同,为了方便学生选课,需有一个详细的选课表供学生参考。选课实体E-R图如图3-4所示:图3-4 选课实体E-R图学生在查看学生个人成绩时,需有一个学生自己全部成绩的成绩表,教师在查看和修改学生成绩时,也需要一个自己班内学生的成绩表便于管理。个人成绩实体E-R图和学生成绩实体E-R图如图3-5和3-6所示:图3-5 个人成绩实体E-R图图3-6 学生成绩实体E-R图3.3 各表的物理结构表3-1 yonghu表 列名数据类型长度允许空ID文本20否password文本20否type文本20否证件号文本50否表3-2 学生信息表列名数据类型长度允许空学号文本20否姓名文本30否民族文本20是出生日期文本20是性别文本10是家庭地址文本50是班级文本20是专业文本30是表3-3 教师信息表列名数据类型长度允许空教师号文本20否姓名文本30否民族文本20是出生日期文本20是性别文本10是家庭地址文本50是执教的科目1文本20是执教的科目2文本20是联系电话文本20是院系文本20是表3-4 选课表列名数据类型长度允许空课程名称文本 20否任课教师文本10否课程类型文本10否学分文本10否审批情况文本10否考试形式文本10否教材费用文本10否总课时文本10否表3-5 个人成绩表列名数据类型长度允许空学期文本10否学年文本10否分数文本20是学分绩点文本10是课程名称文本10是学号文本20否应得学分文本10是课程类型文本20是表3-6 学生成绩表列名数据类型长度允许空学号文本20否姓名文本20否总评文本20是科目文本30是期末成绩文本20是平时成绩文本20是专业文本20是班级文本10是3.4 文件夹组织结构在进行系统开发前,需要规划系统的架构。通过建立多个文件夹,可以对各个功能模块进行划分,从而实现统一管理。建立合理的文件夹组织结构的好处在于:易于开发、易于管理、易于维护。学生管理系统的文件夹组织结构如图3.7所示图3-7 文件夹组织结构图4 系统实施4.1 Microsoft Office Access数据库的选择Access能够存取 Access/Jet、Microsoft SQL Server、Oracle,或者任何 ODBC兼容数据库内的资料。它的使用方便程度和强大的设计工具为初级程序员提供许多功能。通过使用Access Basic可以增加应用程序的执行速度,减少编码量,同时也减少在为Microsoft Windows应用程序接口编程时、在开发应用程序中遇到的问题的技术。谨慎地使用变量和它所占用的存储空间能有效地减少一个应用程序所消耗的资源,同时也全面提高了它的性能。4.2 C#开发语言的选择C#(发音为C Sharp)是由微软公司所开发的一种面向对象,且运行于.NET Framework之上的高级程序设计语言。并且成为ECMA与ISO标准规范。C#看似基于C+写成,但又融入其它语言如Delphi、Java、VB等。这点是我选中它的主要原因。4.3 系统的详细设计的实现 4.3.1 系统登录设计首先,用户登录界面比较简单,需在登陆系统中输入用户名和密码,若与数据库中的记录一致则可以进入该系统,否则无法进入。为防止用户的错误操作,应设置错误处理界面。用户登录界面及用户登录操作错误界面设计效果如图4-1和4-2所示。4.3.2 系统主界面设计用户名和用户的密码验证通过以后,进入该系统首页。系统学生、教师和超级管理员登陆界面设计如图4-3、4-4和4-5所示:图4-1 用户登录界面图4-2 用户登录操作错误界面图4-3 学生登陆界面图4-4 教师登陆界面图4-5 超级管理员登陆界面4.3.3 用户管理 用户管理包括密码重置、用户注册的管理。其管理界面如图4-6、4-7所示:图4-6 密码重置管理界面图4-7 用户注册的管理界面4.3.4 用户功能用户功能包括学生个人信息管理、学生个人成绩管理、学生选课情况管理、选课、查看公告、教师管理学生成绩和超级管理员选课审批以及数据库的恢复和备份。其功能界面分别如图4-8、4-9、4-10和4-11、4-12、4-13、4-14、4-15、4-16所示:图4-8 学生个人信息管理界面图4-9 学生个人成绩管理界面图4-10 学生选课情况管理界面 图4-11 选课界面图4-12 查看公告界面图4-13 教师管理学生成绩界面图4-14 超级管理员选课审批界面图4-15 数据库备份界面图4-16 数据库恢复界面4.4 部分代码的实现 /登录界面的“确定”按钮private void button1_Click(object sender, EventArgs e) /连接数据库 string sjk; sjk = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.AppDomain.CurrentDomain.BaseDirectory + "db1.mdb" string sjb = "select * from yonghu" User = zhanghao.Text.Trim().ToString(); try /定义数据连接的所需的变量 OleDbConnection myconn = new OleDbConnection(sjk); myconn.ConnectionString = sjk; myconn.Open(); OleDbCommand MyCom1 = new OleDbCommand(); MyCom1.Connection = myconn; MyCom1.CommandType = CommandType.Text; MyCom1.CommandText = sjb; OleDbDataAdapter mydataAdapter1 = new OleDbDataAdapter(); mydataAdapter1.SelectCommand = MyCom1; DataSet myds = new DataSet(); mydataAdapter1.Fill(myds, "yonghu"); bool flag = false; /以yonghu表内的行数循环严重帐号密码是否正确! for (int i = 0; i < myds.Tables"yonghu".Rows.Count; i+) /账号密码不能为空 if (zhanghao.Text = "" | mima.Text = "") MessageBox.Show("用户名密码不能为空", "警告"); zhanghao.Text = "" mima.Text = "" zhanghao.Focus(); flag = true; break; /用户类型不能为空 if (leixing.Text = "") MessageBox.Show("用户类型不能为空", "警告"); leixing.Text = "" leixing.Focus(); flag = true; break; /当账号和密码、用户类型与数据库中的数据相符合即验证成功时,打开教师管理窗口并关闭此登录窗口 else if (zhanghao.Text = myds.Tables"yonghu".Rowsi0.ToString().Trim() && mima.Text = myds.Tables"yonghu".Rowsi1.ToString().Trim() && leixing.Text = "教师" && leixing.Text = myds.Tables"yonghu".Rowsi2.ToString().Trim() main dakai = new main(); this.Hide(); flag = true; dakai.ShowDialog(); this.Close(); break; /当账号和密码、用户类型与数据库中的数据相符合即验证成功时,打开超级管理员管理窗口并关闭此登录窗口 else if (zhanghao.Text = myds.Tables"yonghu".Rowsi0.ToString().Trim() && mima.Text = myds.Tables"yonghu".Rowsi1.ToString().Trim() && leixing.Text = "超级管理员" && leixing.Text = myds.Tables"yonghu".Rowsi2.ToString().Trim() main2 dakai2 = new main2(); this.Hide(); flag = true; dakai2.ShowDialog(); this.Close(); break; /当账号和密码、用户类型与数据库中的数据相符合即验证成功时,打开学生管理窗口并关闭此登录窗口 else if (zhanghao.Text = myds.Tables"yonghu".Rowsi0.ToString().Trim() && mima.Text = myds.Tables"yonghu".Rowsi1.ToString().Trim() && leixing.Text = "学生" && leixing.Text = myds.Tables"yonghu".Rowsi2.ToString().Trim() main3 dakai3 = new main3(); this.Hide(); flag = true; dakai3.ShowDialog(); this.Close(); break; /当账号密码严重不成功时返回 flag = false; else if (zhanghao.Text != myds.Tables"yonghu".Rowsi0.ToString().Trim() | mima.Text != myds.Tables"yonghu".Rowsi1.ToString().Trim() | leixing.Text != myds.Tables"yonghu".Rowsi2.ToString().Trim() flag = false; /如果 flag = false;则弹出提示警告 if (flag = false) MessageBox.Show("输入有误!请重新输入!", "警告"); zhanghao.Text = "" mima.Text = "" zhanghao.Focus(); myconn.Close(); /如果数据库连接错误则返回提示框 catch (OleDbException OleDbe) MessageBox.Show(OleDbe.Message, "连接失败");/超级管理员登录的数据库操作菜单的“数据库备份”按钮private void 数据库备份ToolStripMenuItem_Click(object sender, EventArgs e) OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "."/注意这里写路径时要用.表示默认文件路径 openFileDialog1.Filter = "mdb files(*.mdb)|*.mdb|All files(*.*)|*.*" openFileDialog1.RestoreDirectory = true; openFileDialog1.FilterIndex = 1; saveFileDialog1.InitialDirectory = "." saveFileDialog1.Filter = "mdb files(*.mdb)|*.mdb|All files(*.*)|*.*" saveFileDialog1.RestoreDirectory = true; saveFileDialog1.FilterIndex = 1; if (openFileDialog1.ShowDialog() = DialogResult.OK) if (saveFileDialog1.ShowDialog() = DialogResult.OK) Backup(openFileDialog1.FileName, saveFileDialog1.FileName);/超级管理员登录界面的“学生信息管理”按钮 private void 学生信息管理ToolStripMenuItem_Click(object sender, EventArgs e) /如果如果学生信息管理子窗体已经打开则返回提示窗口 if (Application.OpenForms"xinxi" != null) MessageBox.Show("该窗体已经被创建,不能重复创建"); return; /如果如果学生信息管理子窗体没有打开则打开相应的窗口 else this.IsMdiContainer =true; xinxi xx = new xinxi(); xx.MdiParent = this;/将该窗体设置成父窗体 xx.Show();5 系统测试5.1 软件测试基础理论软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查,它是软件质量保证的关键步骤。5.2 软件测试目的测试是程序的执行过程,目的在于发现错误;不能证明程序的正确性,除非仅处理有限种情况。检查系统是否满足需求也是测试的期望目标。一个好的测试用例在于发现了还未曾发现的错误;一次成功的测试则是发现了错误的测试。5.3 软件测试方法本系统各部分模块,采用黑白盒测试。(1)、黑盒测试按照软件测试用例的设计方法而论,软件测试可以分为白盒测试法和黑盒测试法。若测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为黑盒测试(Black-box Testing)方法。 黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。黑盒测试主要根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。(2)、黑盒测试的特点黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。(3)、白盒测试白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。通常的程序结构覆盖有:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,路径覆盖。5.4 系统测试5.4.1 测试用例设计要求一个好的测试用例,应该包含以下信息: (1)、软件或项目的名称(2)、软件或项目的版本(内部版本号)(3)、功能模块名(4)、测试用例的简单描述,即该用例执行的目的或方法(5)、测试用例的参考信息(便于跟踪和参考)(6)、本测试用例与其他测试用例间的依赖关系(7)、本用例的前置条件,即执行本用例必须要满足的条件,如对数据库的访问权限(8)、用例的编号(ID),如可以是:软件名称简写-功能块简写-NO.(9)、步骤号、操作步骤描述、测试数据描述(10)、预期结果(这是最重要的)和实际结果(如果有BUG管理工具,这条可以省略)(11)、开发人员(必须有)和测试人员(可有可无)(12)、测试执行日期5.4.2 系统各个模块测试用例本系统的用户名密码对应有3种用户类型。如在登陆过程中输入错误的用户名或密码。则出现报错界面如图5-1所示:图5-1 登录用户报错界面5.5 测试报告本系统经过测试,各部分的功能基本正常,达到了预期的目的。通过对系统的全面测试,我学到了许多测试方面的知识,了解到测试方法、测试经验。通过本次设计,使我了解到测试的重要性。通过测试,可以使软件更适合用户的需求,更加稳定、可靠地运行,并能适应市场竞争,应用前景广泛。结束语在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。通过开发这个系统,我掌握了的项目基本开发过程,用到的知识巩固了我对Visual C#的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。参考文献:1 王小科,徐薇.C#从入门到精通.北京:清华大学出版社,2010:30.2 丁宝康 董健全 数