教学事务管理系统.doc_第1页
教学事务管理系统.doc_第2页
教学事务管理系统.doc_第3页
教学事务管理系统.doc_第4页
教学事务管理系统.doc_第5页
已阅读5页,还剩32页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.引言此系统名称为教学事务管理系统,是贯穿大学生活的CDIO任务,在这个系统中,我们小组主要实现了系统管理,专业信息管理,学生成绩信息管理,班级信息管理,教室管理,教材管理,课程信息管理,用户相关操作的设计实现,同时很好的确保了界面的友好性。 2系统分析2.1 系统需求分析 随着现代科技高速发展,设备和管理的现代化,在实际工作中如何提高效率成为一个很重要的问题。随着学校招生数量的不断扩大,学校教务不堪重负,所以需要一款自动化的教学事务管理系统对学生信息进行管理和维护,摒弃手工管理所带来的效率低、易出错、耗费人力等缺点,需要有一个很好的教学事务管理系统,以方便对学校师生进行有效的管理。2.2系统可行性分析2.2.1经济可行性采用教务管理信息系统可取代原系统的单据手工传递工作,减少人工开支,节省资金,并且可大大提高信息量的取得,缩短信息处理周期,规划教学资源,提高学生信息,及时反馈教学信息的利用率,使教学质量更上一个台阶。教学管理系统的开发成本:硬件、外部设备(高性能计算机一台、打印机一台):.万元左右,软件开发费用:元,系统维护:每年约元,该系统的开发费用及维护费用学校完全可以支付。而该系统可以给学校管理工作带来的便利以及管理人员费用的减少,远大于它的成本。所以,从经济上考虑,本系统完全有必要开发。2.1.2技术可行性本系统采用 XP操作系统作为操作平台,数据库选用SQL server 2005,该数据库管理系统在Win7上能运行,并提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作,降低出错率,提高数据的可用性。使数据的准确性与安全性得到了很大的提高,且在用户的并行操作与用户管理方面非常方便。就目前使用的开发技术来说规划系统的功能目标应该能够达到利用.NET编程语言和SQL数据库语言,在规定的期限内开发工作基本能够实现需求分析中系统所要求的功能。本系统应是一个统一的教学学习、信息发布、资源管理的系统平台。所有的教学及教学管理软件全部基于BS模式,具有实时性和交互性很强的特点。2.3社会可行性对于高校来说,各项原始资料保存完好、基础数据管理规范,其本身管理的科学性、规范性在很大程度上为系统实施创造了良好的环境,既保证了系统的基础数据、文件、报表的准确性和及时性,同时在一定程度上也提高了系统的信息输入质量,最终保证系统开发的成功。3 系统各功能模块详细设计3.1系统管理模块3.1.1添加用户 (1)添加用户:若有重名的用户则会拒绝并提示。 (2)重置方便输入。 (3)两次密码输入不一致则会拒绝并提示。 (4)取消就可以退出本窗体。 (5)实现了用户名称不能为空。3.1.2删除用户 (1)可以浏览使用软件的用户。 (2)将用户名和密码删除并提示删除的用户的用户名称。 (3)实现刷新功能,方便操作人员的操作,防止多删除数据。 (4)取消就可以退出本窗体。 3.1.3新建角色 (1)可以创建一个角色名称,并赋予相应的12中权限的任何几个,实现权限的控制。 (2)重置方便输入。 (3)取消就可以退出本窗体。 (4)实现了角色名称不能为空。3.1.4浏览、删除角色 (1)对创建的角色浏览,并且可以删除选定的角色。 (2)实现刷新功能,方便操作人员的操作,防止多删除数据。3.2专业管理模块3.2.1添加专业 (1)实现了专业信息需要填写完整。 (2)若已有相应的专业编号或者专业名称则会拒绝并提示。 (3)重置方便输入。3.2.2.浏览、修改、删除专业信息可以浏览所有的专业信息可以对选中的一个专业信息进入修改界面进行修改(1) 实现了专业信息需要填写完整。(2)不仅可以对全部的信息进行修改还可以只对部分的信息进行修改。(3)实现了对要修改的专业编号和专业名称判断,若有重名则拒绝修改,且判断的时候不会再考虑当前的要修改的专业的编号和专业信息。(4)若修改班级时,该专业有相关联的班级,则提示拒绝修改:请先修改班级的对应专业。3.2.3可以删除选定的专业(1)删除选定的专业的时候,会先对相应的专业进行判断:若有与该专业相关的班级,则会拒绝删除并提示。(2)删除选定专业会弹出删除的专业名称。(3)实现刷新功能,方便操作人员的操作,放置多删除数据。(4)取消就可以退出本窗体。3.3班级信息管理3.3.1添加班级(1)当加载班级界面的时候,会直接将全部的专业加载到对应的下拉菜单中,方便 选择。 (2)年制和入学时间分别使用numericUpDown 和dateTimePiker控件,方便输入。(3)实现了班级信息需要填写完整。(4)实现了对要添加的班级编号和名称的判断,若有重名则拒绝添加。(5)退出键可以退出当前窗体。3.3.2浏览、修改、删除班级信息浏览班级信息(1)当进入此介面时候,直接将全部的专业信息列到下拉菜单中。(2)选定要操作班级的专业,在文本框中输入该班级的入学年份,查询的结果将会列出。修改班级信息(1)选定班级修改时会进入修改界面,将选定的班级信息加载到了该界面上,年制和入学时间分别使用numericUpDown 和dateTimePiker控件,方便输入。 (2)实现了不仅可以对全部的信息进行修改还可以只对部分的信息进行修改。 (3)实现了对要修改的班级编号和班级名称判断,若有重名则拒绝修改, 且判断的时候不会再考虑当前的要修改的专业的编号和专业信息。 (4)实现了班级信息需要填写完整。 (5)退出键可以退出当前窗体。 (6)若没有选定相应的学生进行修改则会被拒绝。3.3.3删除班级信息(1)若没有选定相应的学生进行修改则会被拒绝。(2)若删除班级时,该班级有相关联的学生,则提示拒绝修改:请先修改班级的对应学生。若没有对应的学生则提示:删除成功。(3)退出键可以退出当前窗体。3.4学生成绩管理模块3.4.1添加学生信息(1)打开添加界面时候,专业信息会自动将加载到专业下拉菜单中,方便选择。(2)当选定相应专业后,班级信息会自动加载到班级下拉菜单中,方便选择。(3)当选定相应班级后,班级对应的学期信息会自动加载到学期下拉菜单中,方便选择。(4)当选定相应学期后,由于专业、班级、学期都已经定了,相应的学生名单就会在框中列出,同时选定的学期的对应全部课程也会在另一个文本框中显示出来。(5)选定的学期会自动加载到需要录入的成绩信息区域,选定相应的学生和课程后,课程、学生姓名、学号也会加载到成绩信息区域。(6)若没有向成绩录入区域填充完整信息,则会被拒绝添加。(7)若已经有该生的成绩,则会被拒绝添加。(8)取消键可以退出当前窗体。3.4.2学生成绩浏览、修改、删除学生成绩浏览(1)打开添加界面时候,专业信息会自动将加载到专业下拉菜单中,方便选择。(2)选定专业后,当输入入学年份后,输入的专业和入学年份对应的班级信息自动加载到在班级下拉菜单中,同时该班级对应的学生姓名和学号会加载到学生信息框中。(3)选定了专业、班级和制定入学年份后,相应的学生的姓名和学号会加载到学生信息显示框中,他们的所有学期会自动加载到学期的下拉菜单中。(4)选定要浏览的学期和学生后,成绩会自动加载到成绩显示区域。(5)若没有输入浏览学生的完整信息会提示:输入完整。(6)对输入的年份进行判断,若不是正确的4位合法年分则拒绝查询。(7)若没有录入成绩,成绩显示框中的状态是“等待录入”,若有成绩,则状态是“已录入”。(8)若重新输入专业则会对后面的入学年份、班级、学期项目清空,方便选择;同理,重新输入入学年份也会对班级、学期、学生名单清空。(9)退出键可以退出当前窗体。修改学生成绩 (1)选定相应的学生进入修改界面后,要修改的学生的学号和课程会自动加载到显示区域。 (2)若成绩是已经录入进去,则可进行修改,而如果是等待录入则拒绝修改并提示。 (3)输入要修改的成绩时候会判断是否是0-100的数字,否则拒绝输入。 (4)取消键可以退出当前窗体。3.4.3.删除学生成绩若已有学生的成绩,选中需要删除的学生后可删除如果学生的成绩信息是“等待录入”状态,则拒绝删除学生成绩查询(1)输入学生的学号和要查询的该学生的学期范围后,可进行查询。(2)实现了学号信息、学期信息需要填写完整。(3)实现了对输入的学期范围的判断,若前面的年份大于后面的则拒绝查询并提示, 若前面的年份等于后面的就再去判断前面的学期是否小于后面的,若大于则拒绝查询并提示。(4)对输入的年份进行判断,若不是正确的4位合法年分则拒绝查询并提示(5)若没有相应的成绩记录则会显示“暂无学生成绩”。(6)若有记录则在第一个框中将会显示选定学生在对应学期范围内的课程名称和相应的成绩,并对选出的课程进行编号。(7)在第二个框中显示的是各个学期内,该学生的平均成绩和总成绩以及对应学期内的课程的总共的数量。3.4.4班级成绩查询(1)实现了班级名称信息、学期信息需要填写完整,否则拒绝查询。(2)学期范围的年份需要是合理的4为数字,否则拒绝查询。(3)学期范围的前面的年份加上学期数需要小于后面的年份加上学期数,否则拒绝查询。4 系统各功能模块的关键程序实现4.1类封装的代码:public sealed class OperateDB / / 获取连接数据库的字符串 / public static string ConnString get using (StreamReader sr = File.OpenText(Conn2DB.txt) return sr.ReadLine(); / / 返回cmd对象,但没有相应的执行的sql语句 / public static SqlCommand cmd get SqlConnection conn = new SqlConnection(ConnString); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandType = CommandType.Text; return cmd; / / 获得dr对象 / public static SqlDataReader GetExecuteReader(string cmdText) SqlConnection conn = new SqlConnection(ConnString); SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, cmdText); SqlDataReader dr = cmd.ExecuteReader(); return dr; private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, string cmdText) if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandType = CommandType.Text; cmd.CommandText = cmdText; / / 执行数据读取操作 / / SQL语句 / 如果获取到值,返回true,否则是false public static bool ExecuteReader(string cmdText) using (SqlConnection conn = new SqlConnection(ConnString) SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, cmdText); SqlDataReader dr = cmd.ExecuteReader(); return dr.Read(); / / 执行数据增加、删除或修改等操作 / / SQL语句 / 返回操作影响的行数 public static int ExecuteNonQuery(string cmdText) using (SqlConnection conn = new SqlConnection(ConnString) SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, cmdText); return cmd.ExecuteNonQuery(); / / 执行数据操作,将结果的第一行第一列的结果返回。 / / / public static string ExecuteScalar(string cmdText) SqlConnection conn = new SqlConnection(ConnString); SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, cmdText); return Convert .ToString( cmd.ExecuteScalar(); / / 执行数据操作,将结果保存在数据集中。 / / SQL语句 / 数据集对象 public static DataSet ExecuteDataSet(string cmdText) SqlConnection conn = new SqlConnection(ConnString); SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, cmdText); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); return ds; public static DataSet ExecuteDataSet1(string cmdText) SqlConnection conn = new SqlConnection(ConnString); SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, cmdText); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds,1); return ds; / / 执行sql语句,返回第一行第一列的值,且转化为bool类型的值 / / sql语句 / true 或者false public static bool ExecuteScalar1(string cmdText) SqlConnection conn = new SqlConnection(ConnString); SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, cmdText); return Convert .ToBoolean (cmd.ExecuteScalar(); 4.2系统管理模块:4.2.1添加用户:private void btnAdd_Click(object sender, EventArgs e) if (txtUserName.Text.Trim() = | txtPwd.Text.Trim() = | txtNewPwd.Text.Trim() = | comboBox1.Text.Trim() = ) MessageBox.Show (请填写完整信息); else if (txtPwd.Text.Trim() != txtNewPwd.Text.Trim() MessageBox.Show (两次输入密码不一致); else string sql = select * from UserInfo where UserName= + txtUserName.Text.Trim() + ; if (!XJGL.OperateDB.ExecuteReader(sql) string sql1 = insert into UserInfo (UserName,UserPwd,RoleName) values ( + txtUserName.Text.Trim() + , + txtPwd.Text.Trim() + ,+comboBox1 .Text .Trim ()+); if (XJGL.OperateDB.ExecuteNonQuery(sql1) = 1) MessageBox.Show(新用户添加成功); else MessageBox.Show(新用户添加失败); else MessageBox.Show (对不起,已有 + txtUserName.Text.Trim() + 用户存在,请选择其他名称); 4.2.2删除用户:private void btnDelete_Click(object sender, EventArgs e) if (dataGrid1dataGrid1.CurrentCell != null) string sql = select UserName as 用户名,UserPwd as 用户密码,RoleName as 用户角色 from UserInfo; DataSet ds = XJGL.OperateDB.ExecuteDataSet(sql); string sql3 = delete from UserInfo where UserName= + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim() + ; if (XJGL.OperateDB.ExecuteNonQuery(sql3) = 1) MessageBox.Show(删除用户 + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim() + 成功, 提示); else MessageBox.Show(删除用户失败); 4.2.3新建角色:private void button1_Click(object sender, EventArgs e) if (textBox1.Text != ) string sql = select * from RoleInfo where RoleName= + textBox1.Text.Trim() + ; SqlCommand cmd=XJGL.OperateDB.cmd; cmd.CommandText = sql; if (null = cmd.ExecuteScalar() sql = insert into RoleInfo values ( + textBox1.Text.Trim() + , + checkBox1.Checked + , + checkBox2.Checked + , + checkBox3.Checked + , + checkBox4.Checked + , + checkBox5.Checked + , + checkBox6.Checked + , + checkBox7.Checked + , + checkBox8.Checked + , + checkBox9.Checked + ); cmd.CommandText = sql; cmd.ExecuteNonQuery(); MessageBox.Show(角色创建成功); else MessageBox.Show(已有重名角色存在, 提示); else MessageBox.Show(角色名称不能为空); 4.2.4浏览、删除角色:private void btnDelete_Click(object sender, EventArgs e) if (dataGrid1dataGrid1.CurrentCell != null) string sql = select RoleName as 角色名 from RoleInfo; DataSet ds = XJGL.OperateDB.ExecuteDataSet(sql); string sql3 = delete from RoleInfo where RoleName= + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim() + ; if (XJGL.OperateDB.ExecuteNonQuery(sql3) = 1) MessageBox.Show(删除角色 + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim() + 成功, 提示); else MessageBox.Show(删除角色失败); private void frmBrowseDeleteRole_Load(object sender, EventArgs e) string sql = select RoleName as 角色名 from RoleInfo; DataSet ds = XJGL.OperateDB.ExecuteDataSet(sql); dataGrid1.DataSource = ds.Tables0.DefaultView; 4.3专业管理模块:4.3.1添加专业private void btnAdd_Click(object sender, EventArgs e) if (txtSpecialtyID.Text.Trim() = | txtSpecialtyName.Text.Trim() = | txtRemark.Text.Trim() = ) MessageBox.Show(请填写完整信息); else string sql = select * from SpecialtyInfo where SpecialtyID= + txtSpecialtyID.Text.Trim() + ; if (!XJGL.OperateDB.ExecuteReader(sql) string sql2 = select * from SpecialtyInfo where SpecialtyName= + txtSpecialtyName.Text.Trim() + ; if (!XJGL.OperateDB.ExecuteReader(sql2) string sql3 = insert into SpecialtyInfo(SpecialtyID,SpecialtyName,Remark)values( + txtSpecialtyID.Text.Trim() + , + txtSpecialtyName.Text.Trim() + , + txtRemark+ ); if (XJGL.OperateDB.ExecuteNonQuery(sql3) = 1) MessageBox.Show(新专业添加成功); else MessageBox.Show(新专业添加失败); else MessageBox.Show(对不起,已有 + txtSpecialtyName.Text.Trim() + 的专业名称存在,请选择其他名称); else MessageBox.Show(对不起,已有 + txtSpecialtyID.Text.Trim() + 的专业号存在存在,请选择其他名称); 4.3.2浏览、修改、删除专业信息:private void btnModifySpecialty_Click(object sender, EventArgs e) string sql = select SpecialtyID as 编号,SpecialtyName as 专业名称,Remark as 专业描述 from SpecialtyInfo; DataSet ds = XJGL.OperateDB.ExecuteDataSet(sql); if (dataGrid1dataGrid1.CurrentCell != null) modifyspecialty = new JWGL.frmModifySpecialty(); modifyspecialty.txtSpecialtyID.Text = ds.Tables0.RowsdataGrid1.CurrentRowIndex0.ToString().Trim(); modifyspecialty.txtSpecialtyName.Text = ds.Tables0.RowsdataGrid1.CurrentRowIndex1.ToString().Trim(); modifyspecialty.txtSpecialtyRemark.Text = ds.Tables0.RowsdataGrid1.CurrentRowIndex2.ToString().Trim(); modifyspecialty.labOldSpecialtyID.Text = modifyspecialty.txtSpecialtyID.Text.Trim (); modifyspecialty.label5.Text = modifyspecialty.txtSpecialtyName.Text; modifyspecialty.ShowDialog(); private void frmBrowseSpeicalty_Load(object sender, EventArgs e) string sql = select SpecialtyID as 编号,SpecialtyName as 专业名称,Remark as 专业描述 from SpecialtyInfo; DataSet ds=XJGL.OperateDB .ExecuteDataSet(sql); dataGrid1.DataSource = ds.Tables0.DefaultView; private void btnDelete_Click(object sender, EventArgs e) if (dataGrid1dataGrid1.CurrentCell != null) string sql = select SpecialtyID as 编号,SpecialtyName as 专业名称,Remark as 专业描述 from SpecialtyInfo; DataSet ds = XJGL.OperateDB.ExecuteDataSet(sql); string sqll = select SpecialtyName from ClassInfo where SpecialtyName in( + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber1.ToString().Trim() + ); if (XJGL .OperateDB .ExecuteReader(sqll) MessageBox.Show(删除专业 + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber1.ToString().Trim() + 失败,请先删除与此专业相关的班级, 提示); else string sql3 = delete from SpecialtyInfo where SpecialtyId= + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber0.ToString().Trim() + ; if (XJGL.OperateDB.ExecuteNonQuery(sql3) = 1) MessageBox.Show(删除专业 + ds.Tables0.RowsdataGrid1.CurrentCell.RowNumber1.ToString().Trim() + 成功, 提示); else MessageBox.Show(删除专业失败); 4.4班级信息管理模块:4.4.1添加班级:private void button1_Click(object sender, EventArgs e) string sql1=select * from ClassInfo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论