设计内容要求: (1)对不同用户限定不同权限。用不同的用户名登录,通过菜单体现不同的权限,如普通用户不能修改成绩(相应的菜单功能灰化); (2)对用户名和密码以及权限的管理; (3)系部信息的录入、修改和删除; (4)班级信息的录入、修改和删除; (5)教师信息的录入、修改和删除; (6)课程信息的录入、修改和删除; (7)学生基本信息的录入、修改和删除; (8)学生成绩信息的录入、修改和删除; (9)按系部编号、系部名称查询系部学生成绩信息; (10)按班级编号、班级名称查询班级学生成绩信息; (11)按课程编号、课程名称查询选修该课程的学生成绩信息; (12)按学号、学生姓名查询学生成绩信息。 本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。 目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。 本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。 关键词 学生成绩管理系统; 第一章 概述 .1 问题的提出 随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。 数据库始于20世纪60年代,经过40多年的发展,现在已经形成了理论体系,成为计算机软件的一个重要分支。数据库技术体现了当代先进的数据管理方法,使计算机的应用真正渗透到国民经济各个部门,在数据处理领域发挥着越来越大的作用。 而互联网技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进我们的生活与工作。互联网技术与数据库技术的结合为计算的在人类生活中的应用带来了巨大的影响。产业信息化,管理现代化,科学化已经成为行业发展的重要课题,这不仅是企业提高自身竞争力,甚至是国家提高综合国力,走向国民富强的重要手段。 在我国,教育是一个影响着国富民强的重要行业,随着改革开放和市场经济的发展根据中国特有的国情发展,教育得到了国家的大力扶持与社会各界的高度重视,从而使教育业向规范性与现代化的方向高速发展,但是同发达国家相比,我国的教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的教育机构还没有全部具备这种功能。因此可见,随着我国教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。 .2 现有系统存在问题的分析 在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的发展,但是有的很多学校,特别是在西部贫困地区,学校的种类管理都依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。随着社会的发展,信息化是社会进程的必然趋势,学校管理只有只有快、准、精、才能发挥其价值。 所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。 有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。 还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统对管理来说是没有任何保障的。 .3 系统开发目标与意义 .3.1 系统开发目标 本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标: 系统应具有实用性、可靠性和适用性,同时注意到先进性。 对各个数据库进行动态管理,防止混乱。 能够按照用户选择的不同的条件进行简单查询和复合查询。 能够对查询结果进行分类汇总,实现报表打印。 注意数据的安全性,具有数据备份和恢复的功能。 方便用户的操作,尽量减少用户的操作。 1.3.2 系统开发意义: 在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。 .4 可行性分析 .4.1 经济上可行性: 现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为学校的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面: 本系统的运行可以代替人工进行许多繁杂的劳动; 本系统的运行可以节省许多资源; 本系统的运行可以大大的提高学校的工作效率; 本系统可以使敏感文档更加安全,等等。 所以,本系统在经济上是可行的。 1.4.2 技术上可行性: 本系统的开发利用Microsoft SQL Server2000作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。 使用Visual 作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。 综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。 1.4.3 运行上可行性: 本系统为一个小型的学生信息管理系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。 第二章 系统分析与设计 .1 需求分析 世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。我所开发的这个系统所采用的是编程软VISUAL 2005作为实现语言,以数据库Microsoft SQL Server2000为系统的后台操作,其功能在系统内部有源代码直接完成。我们只需按系统要求输入即可操作。为将来学校上网做好准备。 学校具体需求分析如下: 学生:对各科成绩的查询及查看本班成绩排名等情况。 任课老师:输入并维护所教科目的学生成绩,计算本科的成绩排名、本科成绩在班上的排名。 输出本班科目的成绩及排名情况。 班主任:输入并维护本班的基本信息,对本班的各科成绩汇总,计算各科成绩的总分,排名,本班平均分等需求。 输出学生的基本信息,各科的成绩及各科成绩的部分,各科成绩的排名,总分的排名情况。 教务处: 学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师,班主任等输入的信息进行存库,对学生的信息进行必要的维护,可打印学生的所有信息。 .2 系统的设计思想 采用现有的资源,先进的管理系统开发方案,充分利用学校现有的资源,减少开发中的时间和财力、物力、提高系统开发的水平和应用效果。 系统就满足学校的需求,例如学生信息的录入、查询、更新等。学生录入与排名。 系统就具备数据库维护功能,及时根据用户需求进行数据添加、删除、修改等操作。 .3系统设计分析 本系统适用于大专学校,其功能主要分为两大类: 1.系统管理员登陆: 可以对整个系统进行查询,修改,添加,删除,维护。 2.普通用户登陆: 只能对系统作查询不能修改。 .4系统功能分析 权限功能:系统具有动态的权限分配功能,可按用户权限对用户进行分组。可分为一般用户和管理员。一般用户只是查询不能修改,管理员能修改删除所有信息。 录入功能:一般用提供相应的发入功能,管理员提供对所有信息的录入功能。 查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。 维护功能:为一般用户提供查询及相应的修改,删除功能,为管理员提供对所有信息的修改删除功能。 锁定功能:对系统锁定。 退出功能:结束并关闭系统。 .5系统各功能模块设计 学生成绩管理系统包括:信息管理、成绩管理、系统管理 .6 系统数据流程图 通过对学生成绩管理流程的分析和重组,可以绘制出学生成绩管理系统的数据流图 第三章 应用技术介绍 .1 Visual Studio 2005 是.NET平台下最为强大的开发工具,无论是软件服务商,还是企业应用程序的部署与发布,Visual 都可以提供近乎完美的解决方案。Visual 提供了包括设计、编码、编译调试、数据库联接操作等基本功能和基于开放架构的服务器组件开发平台、企业开发工具和应用程序重新发布工具以及性能评测报告等高级功能。 .2 Microsoft SQL Server (Structured Query Language),意思为结构化查询语言,是一种介于关系代数与关系演算之间的结构化查询语言。它的主要功能就是同各种数据库建立联系,进行沟通。ANSI(美国国家标准协会)规定SQL是关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据、从数据库中提取数据等。 语言之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,主要特点包括: 综合统一 非关系模型的数据语言一般都分为模式数据定义语言(模式DDL)、外模式数据定义语言(外模式DDL)、与数据存储有关的描述语言(DSDL)及数据操纵语言(DML),分别用于定义模式、外模式、内模式和进行数据的存取与处置。当拥护数据库投入运行后,如果需要修改模式,必须停止现有的数据库的运行,转储数据,修改模式并编译后再重装数据库,十分麻烦。 语言则集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、建立数据库、插入数据、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统的开发提供了良好的环境。用户在数据库系统投入运行后,还可根据需要随时地逐步地修改模式,切并不影响数据库的运行,从而使系统具有良好的可扩展性。 高度非过程化 非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求必须指定存取路径。而用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做” ,因此无须了解存取路径,存取路径的选择以及SQL语言句的操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。 面向集合的操作方式 非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。而SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。 以同一种语法结构提供两种使用方式语言既是自含式语言,又是嵌入式语言。作为自含式语言,他能够独立地用于联机交互的使用方式,用户何以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。 语言简捷,易学易用语言功能极强,但由于设计巧妙,语言十分简捷,完成核心功能只用了9个动词,SQL语言接近英语口语,因此容易学习,容易使用。 第四章 数据库设计与实现 数据库在一个管理信息系统中占有非常重要的地位,数据库结构的好坏将直接影响到应用系统的实现效果和数据操作效率以及能否保证数据的一致性、完成性和安全性。 .1数据库设计 根据学生成绩管理系统的功能要求,通过分析系统要涉及的相关实体以及要收集、存储和操纵的数据信息 .2创建数据库 第五章 系统模块详细设计 本系统有6个子模块组成:系统管理模块、信息管理模块、成绩管理模块、关于模块、锁定系统模块与退出系统模块。 .1 登录界面,主窗口的实现 重要代码:“确定“按钮的Clickde事件脚本如下: void pblogin_Click(object sender, EventArgs e) (txtID.Text == ) .Show(用户名不能为空); else (txtpwd.Text == ) .Show(密码不能为空); else conn =Db.createConnection (); .Open(); cmd = new SqlCommand(select count(*) from 院 where 帐号=' txtID.Text ' and 密码=' txtpwd .Text ', conn); int i = Convert.ToInt32(cmd.ExecuteScalar()); if (i > 0) .loginname = txtID.Text; Db.loginpwd = txtpwd.Text; frmMain main = new frmMain(); main.adminname = txtID.Text; .admintime = DateTime.Now.ToShortDateString(); main.Show(); this.Hide();
.2 系统管理模块的实现 本模块实现用户的密码修改、重新登入、用户维权。 重要代码:“修改“按钮的Clickde事件脚本如下: void btnupdate_Click(object sender, EventArgs e) (this.txtoldpwd.Text == ) .Show(请输入原密码!); if (this.txtnewpwd.Text == ) .Show(请输入新密码!); if (this.txtnewpwd2.Text == ) .Show(请输入确认新密码!); if (this.txtnewpwd2.Text != this.txtnewpwd.Text) .Show(两次密码不一致,请重新输入!); else con = Db.createConnection(); con.Open(); cmd = new SqlCommand(select count(*) from login where 帐号=' this.txtname.Text 'and 密码=' this.txtoldpwd.Text', con); int count = Convert.ToInt32(cmd.ExecuteScalar()); if (count > 0) cmd1 = new SqlCommand(update login set 密码=' this.txtnewpwd.Text ' where 帐号=' this.txtname.Text 'and 密码=' this.txtoldpwd.Text ', con); cmd1.ExecuteNonQuery(); .Show(密码修改成功!); . loginpwd=this.txtnewpwd.Text; (Convert.ToInt32(MessageBox.Show(是否重新登录?, 重新登录, MessageBoxButtons.OKCancel)) == 1) .Restart(); .Close(); else .Show(密码错误); .Close(); .3 信息管理模块的实现 本模块实现用于对系部、班级、教师、学生信息表进行查询、添加、删除、修改等操作。 .下面以设计“系部信息管理”窗口为例 重要代码:“添加”的Clickde事件脚本如下: (btnsave.Text == 添加) .Text = 确定; con = Db.createConnection(); con.Open(); cmd = new SqlCommand(select max(系部编号) from 系部表, con); this.txtxbcode.Text = Convert.ToString(Convert.ToInt32(cmd.ExecuteScalar()) ); con.Close(); .txtsjname.Text = ; this.txtsjtel.Text = ; this.txtxbname.Text = ; this.txtzrname.Text = ; this.txtzrtel.Text = ; = false; .txt_bool(txtbool); btnupdate.Enabled = false; .修改系部信息ToolStripMenuItem.Enabled = false; else con = Db.createConnection(); con.Open(); a = Convert.ToInt32(MessageBox.Show(真的要将该数据进行存储吗?, 存储操作, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)); if (a == 1) strsql = string.Format( insert into 系部表(系部编号,系部名称,主任,主任电话,书记,书记电话) values('0','1','2','3','4','5'), .txtxbcode.Text, this.txtxbname.Text, this.txtzrname.Text, this.txtzrtel.Text, this.txtsjname.Text, this.txtsjtel.Text); cmd = new SqlCommand(strsql, con); cmd.ExecuteNonQuery(); MessageBox.Show(存储成功!); .datagraidtodatabase(); btnenabled(); con.Close(); .Text = 添加; = true ; .txt_bool(txtbool); //调用,改变各控件的可用属性 .Enabled = true; .修改系部信息ToolStripMenuItem.Enabled = true; catch .Show(信息错误); “修改”的Clickde事件脚本如下: (btnupdate.Text == 修改) .Text = 确定; = false; .txt_bool(txtbool); //调用,改变各控件的可用属性 this.btnsave .Enabled = false; .添加系部信息ToolStripMenuItem.Enabled = false; else con = Db.createConnection(); con.Open(); a = Convert.ToInt32(MessageBox.Show(真的要将该数据进行修改吗?, 修改操作, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)); if (a == 1) ring strsql = string.Format( update 系部表 set 系部名称=' this.txtxbname.Text ',主任=' this.txtzrname.Text ',主任电话=' this.txtzrtel.Text',书记=' this.txtsjname.Text ',书记电话=' this.txtsjtel.Text ' where 系部编号='this.txtxbcode.Text'); cmd = new SqlCommand(strsql, con); cmd.ExecuteNonQuery(); MessageBox.Show(修改成功!); .datagraidtodatabase(); btnenabled(); con.Close(); .Text = 修改; this.btnsave.Enabled = true; = true ; .txt_bool(txtbool);//调用,改变各控件的可用属性par.添加系部信息ToolStripMenuItem.Enabled = true; catch .Show(信息错误); “下一条”的Clickde事件脚本如下: .dataGrid1.UnSelect(this.dataGrid1.CurrentRowIndex); .dataGrid1.CurrentRowIndex = this.dataGrid1.CurrentRowIndex; btnenabled(); “上一条”的Clickde事件脚本如下: .dataGrid1.UnSelect(this.dataGrid1.CurrentRowIndex); .dataGrid1.CurrentRowIndex = this.dataGrid1.CurrentRowIndex - 1; btnenabled(); “关闭”的Clickde事件脚本如下: this.Close(); .4 成绩管理模块的实现 本模块实现用于对学生成绩的录入,系部学生成绩查询,班级学生成绩查询,学科成绩查询,学生成绩查询操作。 .下面以设计“学生成绩查询”窗口为例 重要代码:学生成绩查询_Load事件脚本如下: con = Db.createConnection(); con.Open(); cmd = new SqlCommand(select 学号,姓名 from 学生表, con); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) .txtxscode.Items.Add(sdr.GetString(0)); this.txtxsname.Items.Add(sdr.GetString(1)); sdr.Close(); .Close(); “查询“按钮的Clickde事件脚本如下: sql = select 成绩表.* from 成绩表,学生表 where 成绩表.学号=学生表.学号 ; string sql1 = select count(distinct(成绩表.学号)) from 成绩表,学生表 where 成绩表.学号=学生表.学号 ; (this.radioButton1.Checked == true) = and 成绩表.学号 like'% this.txtxscode.Text %'; sql1 = and 成绩表.学号 like'% this.txtxscode.Text %'; else = and 学生表.姓名 like'% this.txtxsname.Text %'; sql1 = and 学生表.姓名 like'% this.txtxsname.Text %'; .ds1.成绩表.Clear(); parmandText = sql; sda.Fill(this.ds1.成绩表); con = Db.createConnection(); con.Open(); cmd = new SqlCommand(sql1, con); this.lbenum.Text = cmd.ExecuteScalar().ToString(); con.Close(); catch .Show(数据错误!); void txtcode_TextChanged(object sender, EventArgs e) try con = Db.createConnection(); con.Open(); dt = new DataTable(); da.Fill(dt); .txtname.Text = dt.Rows[0].ItemArray[1].ToString(); this.txtbjname.Text = dt.Rows[0].ItemArray[2].ToString(); this.txtmaxscore.Text = dt.Rows[0].ItemArray[3].ToString(); this.txtminscore.Text = dt.Rows[0].ItemArray[4].ToString(); this.txtscore.Text = dt.Rows[0].ItemArray[5].ToString(); dt1 = new DataTable(); da1 = new
信息发布:广州名易软件有限公司 http://www.myidp.net
|