当前位置:文档之家› 教学教务管理系统

教学教务管理系统

教学教务管理系统window窗体1.总体设计1.1.编写目的某学院教务处教学事务现由手工管理,效率低、易出错、耗费人力。

教务处希望设计一个实用的教学事务管理系统,完成学生的学籍管理、报到注册、课程的选择、成绩登入、各种通知单的打印和报表的输出等1.2.可行性分析可利用现有学校资源,结合常用的vs2012、sql 2008等软件即可。

软件分成c/s模式。

开发人员具有一定经验,可开发一些小软件。

1.3.性能分析管理,维护上万条学生记录信息。

能满足近百位学生同时对个人信息的查询。

具有较高的可靠性。

安全和性高。

1.4.系统分析教务管理系统是一个面向学校教务人员,为其提供服务的综合信息管理系统。

教务人员通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。

学生的个人信息、所有的课程考试成绩以及每学期的开课情况都记录在教务系统里进行管理。

1.5.需求分析旨在开发一个统一的网上教务信息管理平台,利用信息化手段辅助教学管理,达到提升我校教学管理信息化水平的目的。

学生的学籍管理:建立学生学籍档案,对新入学的学生进行登记,将他们的信息记入学籍档案,对毕业、休学、退学的学生进行除名、注销,对调整专业的学生必须做调整记载。

对变动情况建立备忘录,对上述情况的变动原因、时间、去向等进行记载。

学生学期开学的课程选择,对必修课、限选课直接录入,计算总成绩、平均成绩,并按班级排出名次。

统计功能,统计各门课程的及格率,优秀率,各分数档人选。

系统可查选学生的学籍情况和选课、学习情况,打印学籍表、个人成绩报告表、班级名词表、各门课程统计表等要求的表格。

2.总体设计2.1.软件模块结构设计根据系统分析的结果,按照结构化的系统设计方法,教学事务管理系统从功能由2.2.板块设计2.2.1.登录界面流程处理图2.2.2.学生信息管理结构图2.2.3. 状态信息管理结构图2.2.4. 课程管理状态图2.2.5.成绩管理状态图3..接口设计3.1.用户接口在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。

在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。

其中针对教务管理人员的界面要做到操作简单,易于管理。

在设计上采用逐级下拉式菜单方式。

同时,运行出错时应以标准形式给出出错提示。

3.2.外部接口服务器端程序可DAO(数据访问对象)应用程序编程接口(API),对SQL SERVER数据库进行所有的访问。

服务器程序上可使用SQL SERVER 的对数据库的备分命令,以做到对数据的保存。

3.3.部接口信息管理模块:对其他模块提供对学生信息查询的接口,包括按学号、和班级三种查询方式。

4. 数据库需求分析通过对学校管理工作过程的容和数据流图分析,设计如下面的数据项和数据结构。

● 学生档案,包括的数据项有:学生的学号、、性别、出生年月、籍贯、政治面貌、家庭住址、入学时间、学院、专业、年级、班级。

● 课程选择,包括的数据项有:课程编号、课程名称.● 课程成绩,包括的数据项有:学生编号、学生、课程编号、课程名称、课程成绩。

● 备忘录,包括的数据项有:学生编号、学生、去向、原因、时间,系院、专业、年级、班级。

● 学生的成绩情况,包括的数据项有:学生编号、学生、总成绩、平均成绩、班级。

● 数据库概念结构设计根据上面设计规划出的实体,我们对各个实体具体的描述E-R 图如下:课程选择e-r学生信息e —r课程成绩e-r备忘录e-r学生成绩情况e-r4.1. 数据库逻辑结构设计RE_BANJI nvarcha20 不空班级r5.程序设计5.1登录界面该界面为登录窗口,需要正确的账号及密码才能正确登录,如图一Array图一登录界面主要代码设计如下:private void button1_Click(object sender, EventArgs e){string connString="DataSource=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Student.mdf;Integrated Security=True;Connect Timeout=30";SqlConnection conn=new SqlConnection(connString);conn.Open();string sql="select * From UserInfo whereUserName='"+txtUserName.T ext.Trim()+"'and UserPwd='"+txtUserPwd.T ext.Trim()+"' ";SqlCommand cmd=new SqlCommand(sql,conn);SqlDataReader dr = cmd.ExecuteReader();if (dr.Read()){ Username = dr["UserName"].T oString();frmMain frm = new frmMain();frm.Show();this.Hide(); }else {MessageBox.Show("账号或密码错误!请重新输入!", "出错了",MessageBoxButtons.OK, MessageBoxIcon.Error); }dr.Close();conn.Close();}5.2程序主界面该界面为各种功能提供了集合的面板,所有程序功能均能在该界面找到相应入口,包括修改用户登录密码、管理学生信息、管理课程信息和管理学生成绩,如图二:图二5.3学生信息管理5.3.1 添加学生信息该界面提供录入学生信息到数据库当中,如图三图三主要代码设计:private void button1_Click(object sender, EventArgs e){ if (txtID.T ext.Trim().Length !=0&&txtName.T ext!=""&&comboBox1.SelectedValue!=""){ string studentSex = "";if (optMale.Checked){studentSex = "男";}if (optFemale.Checked){studentSex = "女";}string sql = "insert intostudentinfo(StudentId,StudentName,StudentSex,StudentNativePlace,StudentBirthday,studentcla ss) Values('"+ txtID.T ext + "',N'" + txtName.T ext + "',N'" + studentSex + "',N'" + cbNativePlace.SelectedItem + "','" + dateTimePicker1.Value +"',N'"+comboBox1.SelectedValue+"')";try{if (OperateDB.ExecuteNonQuery(sql) == 1){MessageBox.Show("添加成功"); }else{MessageBox.Show("添加失败"); } } catch(Exception err){MessageBox.Show("数据库读取出错"); }}else {MessageBox.Show("填写完整信息");} }5.3.2查询界面该界面提供查询某学生学籍信息和个人成绩功能,如图四和图五图四图五查询学生信息窗体主要代码如下:private void button1_Click(object sender, EventArgs e){ string sql = "select studentclass as 班级, StudentId as 学号,StudentName as 名字,StudentSex as 性别,StudentNativePlace as 籍贯from StudentInfo where StudentName like N'%"+txtName.T ext.Trim()+"%'";DataSet ds = OperateDB.ExecuteDataSet(sql);dataGridView1.DataSource = ds.Tables[0].DefaultView; } 查询个人成绩窗体主要代码如下:private void button1_Click(object sender, EventArgs e){ if (textBox1.T ext == ""){MessageBox.Show("请输入正确信息"); }else{ string sql = "select grade_info.Cou_name as 科目,grade_info.Grade as 成绩,course_info.count as 学分from course_info join grade_info oncourse_info.cou_name=grade_info.cou_name where stud_name=N'" + textBox1.T ext + "' ";DataSet ds = OperateDB.ExecuteDataSet(sql);dataGridView1.DataSource = ds.Tables[0].DefaultView;}}5.4课程管理5.4.1添加课程为每个班级添加本学期课程容,如图六图六主要代码如下:private void button1_Click(object sender, EventArgs e){ if (textBox1.Text != "" && textBox2.T ext != "" && textBox3.T ext != "" && textBox4.T ext != "" && comboBox1.SelectedValue != ""){ string sql = "insert into course_info values('" + textBox1.T ext + "',N'" + textBox2.T ext + "',N'" + textBox3.T ext + "','" + textBox4.T ext + "')";string sql2 = "insert into class values(N'" + comboBox1.SelectedValue + "','" + textBox1.T ext + "',N'" + textBox2.T ext + "')";OperateDB.ExecuteNonQuery(sql2);try {if (OperateDB.ExecuteNonQuery(sql) == 1){ MessageBox.Show("添加成功");}else{ MessageBox.Show("添加失败");}}catch (Exception err){MessageBox.Show("数据库读取失败");}}else{MessageBox.Show("填写完整信息");}}5.4..2查询及修改课程信息该窗体为查询课程的详细信息及修改某些课程属性,如图七图七主要代码如下:private void button1_Click(object sender, EventArgs e){string sql;Regex rx = new Regex("^[\u4E00-\u9FA5]+$");if (rx.IsMatch(textBox1.T ext)){sql = "select * from course_info where cou_name like N'%" + textBox1.T ext + "%' or teacher like N'%"+textBox1.T ext+"%'";}else { sql = "select * from course_info where cou_id like'%"+textBox1.T ext+"%'";}DataSet ds = OperateDB.ExecuteDataSet(sql);dataGridView1.DataSource = ds.Tables[0].DefaultView;}5.5成绩管理5.5.1添加学生成绩该界面可以录入学生本学期所有成绩,如图八图八主要代码设计如下:private void textBox1_Leave(object sender, EventArgs e){ string sql = "select Studentid from studentinfo where studentname=N'"+textBox1.T ext+"' ";DataSet ds = OperateDB.ExecuteDataSet(sql);textBox2.T ext=ds.Tables[0].Rows[0][0].T oString(); }private void comboBox1_Leave(object sender, EventArgs e){ string sql = "select cou_id from course_info where cou_name=N'" + comboBox1.SelectedT ext + "' ";DataSet ds = OperateDB.ExecuteDataSet(sql);textBox4.T ext = ds.Tables[0].Rows[0][0].T oString();}private void button1_Click(object sender, EventArgs e){if (textBox1.Text != "" && comboBox1.SelectedValue != "" ){if (textBox3.T ext != ""){string sql = "insert into grade_info values('" + textBox2.T ext + "','" + textBox4.T ext + "',N'" + textBox1.T ext + "','" + textBox3.T ext + "',N'" + comboBox1.SelectedValue + "')";try {if (OperateDB.ExecuteNonQuery(sql) == 1){MessageBox.Show("添加成功");}else {MessageBox.Show("添加失败");}}catch (Exception err) {MessageBox.Show(err.T oString());}}else{MessageBox.Show("请输入成绩"); } }else{MessageBox.Show("请输入或科目"); } }private void button2_Click(object sender, EventArgs e){ textBox1.T ext = "";textBox2.T ext = "";textBox3.T ext = "";textBox4.T ext = ""; }private void gradeAdd_Load_1(object sender, EventArgs e){ this.course_infoT ableAdapter.Fill(this.studentDataSet6.course_info); } }5.5.2统计班级信息该界面可以统计某班级某分数段某学科成绩,并显示该分数段人数,同时显示该班级该科的及格率和优秀率,如图九图九主要代码如下:private void frmtongj_Load(object sender, EventArgs e){ this.studentinfoTableAdapter.Fill(this.studentDataSet1.studentinfo); } private void button1_Click(object sender, EventArgs e){ int a=0, b=0;//设置查询数据区间if(comboBox2.SelectedItem=="及格"){ a = 60; b = 100; }else if(comboBox2.SelectedItem=="不及格"){ a = 0; b = 59; }else if (comboBox2.SelectedItem == "60~69"){ a = 60; b = 69; }else if (comboBox2.SelectedItem == "70~79"){ a = 70; b = 79; }else if (comboBox2.SelectedItem == "80~100"){ a = 80; b = 100; }else if (comboBox2.SelectedItem == "全部"){ a = 0; b = 100; }float m, n;//定义及格人数和优秀人数string sql = "select stud_id as 学号,stud_name as ,grade as 成绩from grade_info where stud_id IN (select studentid from studentinfo where studentclass=N'" + comboBox1.T ext + "' ) and cou_name =N'" + comboBox3.T ext + "'and grade>='" + a + "' and grade<='" + b + "' ";DataSet ds = OperateDB.ExecuteDataSet(sql);dataGridView1.DataSource = ds.Tables[0].DefaultView;textBox1.T ext = Convert.ToString( ds.Tables[0].Rows.Count);string sql4 = "select stud_id from grade_info where stud_id IN (select studentid from studentinfo where studentclass=N'" + comboBox1.T ext + "' ) and cou_name =N'" + comboBox3.T ext + "'";DataSet ds4 = OperateDB.ExecuteDataSet(sql4);//统计该班级总人数string sql2 = "select stud_id from grade_info where stud_id IN (select studentid from studentinfo where studentclass=N'" + comboBox1.T ext + "' ) and cou_name =N'" + comboBox3.T ext + "'and grade>=60 ";DataSet ds2 = OperateDB.ExecuteDataSet(sql2);//统计该科几个认识m =(float) ds2.T ables[0].Rows.Count / (float)ds4.T ables[0].Rows.Count;//计算出及格率textBox2.T ext = Convert.ToString(m);string sql3 = "select stud_id from grade_info where stud_id IN (select studentid from studentinfo where studentclass=N'" + comboBox1.T ext + "' ) and cou_name =N'" + comboBox3.T ext + "'and grade>=90 ";DataSet ds3 = OperateDB.ExecuteDataSet(sql3);//统计分数大于90的人数n = (float)ds3.T ables[0].Rows.Count / (float)ds4.T ables[0].Rows.Count;//计算出优秀率textBox3.T ext = Convert.ToString(n); }private void comboBox1_Leave(object sender, EventArgs e){ this.classTableAdapter.Fill(this.studentDataSet3._class); }5.系统出错处理设计5.1.系统的出错信息以及处理方法系统的出错信息以及处理方法一览表:5.2.补救措施由于数据在数据库中已经有备份,故在系统出错后可以依靠数据库的恢复功能,并且依靠日志文件使系统再启动,就算系统崩溃用户数据也不会丢失或遭到破坏。

相关主题