您的当前位置:首页正文

教学教务管理系统【范本模板】

2021-06-14 来源:客趣旅游网


教学教务管理系统window窗体

1. 总体设计 1.1.

编写目的

某学院教务处教学事务现由手工管理,效率低、易出错、耗费人力。教务处希望设计一个实用的教学事务管理系统,完成学生的学籍管理、报到注册、课程的选择、成绩登入、各种通知单的打印和报表的输出等

1.2.

可行性分析

可利用现有学校资源,结合常用的vs2012、sql 2008等软件即可。软件分成c/s模式。开发人员具有一定经验,可开发一些小软件。

1.3.

性能分析

管理,维护上万条学生记录信息。 能满足近百位学生同时对个人信息的查询. 具有较高的可靠性。安全和保密性高。 1.4.

系统分析

教务管理系统是一个面向学校教务人员,为其提供服务的综合信息管理系统.教务人员通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。学生的个人信息、所有的课程考试成绩以及每学期的开课情况都记录在教务系统里进行管理.

1.5.

需求分析

旨在开发一个统一的网上教务信息管理平台,利用信息化手段辅助教学管理,达到提升我校教学管理信息化水平的目的。学生的学籍管理:建立学生学籍档案,对新入学的学生进行登记,将他们的信息记入学籍档案,对毕业、休学、退学的学生进行除名、注销,对调整专业的学生必须做调整记载。对变动情况建立备忘录,对上述情况的变动原因、时间、去向等进行记载.学生学期开学的课程选择,对必修课、限选课直接录入,计算总成绩、平均成绩,并按班级排出名次。统计功能,统计各门课程的及格率,优秀率,各分数档人选。系统可查选学生的学籍情况和选课、学习情况,打印学籍表、个人成绩报告表、班级名词表、各门课程统计表等要求的表格。

2. 总体设计 2.1.

软件模块结构设计

根据系统分析的结果,按照结构化的系统设计方法,教学事务管理系统从功能由 模块名 信息管理 状态管理 成绩管理

2.2. 板块设计

- 1 -

功能简介 录入学生基本信息,如姓名,学号,籍贯,性别,家庭住址,出生年月等基本信息 对其毕业,休学,调整专业等进行备忘处理。 对选修课必修课成绩的录入,计算成绩,排名等功能 用户登录 验证登录 主界面 信息管理 状态管理 成绩管理 课程管理

2.2.1. 登录界面流程处理图

2.2.2. 学生信息管理结构图

- 2 -

开始 界面 用户 选择 输入 账号 判断 正确 主界面 信息管理 修改学生信息 查询学生信息 添加学生信息 登录账号权限 名字查询 学号查询

2.2.3. 状态信息管理结构图

2.2.4. 课程管理状态图

- 3 -

状态管理 休学处理 退学管理 转专业管理 课程管理 添加课程 修改课程 删除课程 查询课程

2.2.5. 成绩管理状态图

班级排名

- 4 -

成绩管理 添加学生成绩 查询学生信息 统计学生信息 单科成绩 及格率 班级科目 优秀率 成绩排名 各分段 总成绩 平均成绩

3. .接口设计 3.1.

用户接口

在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。其中针对教务管理人员的界面要做到操作简单,易于管理。在设计上采用逐级下拉式菜单方式.同时,运行出错时应以标准形式给出出错提示。

3.2.

外部接口

服务器端程序可DAO(数据访问对象)应用程序编程接口(API),对SQL SERVER数据库进行所有的访问。 服务器程序上可使用SQL SERVER 的对数据库的备分命令,以做到对数据的保存.

3.3.

内部接口

信息管理模块:对其他模块提供对学生信息查询的接口,包括按学号、姓名和班级三种查询方式。 4. 数据库需求分析

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

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

 课程选择,包括的数据项有:课程编号、课程名称.

 课程成绩,包括的数据项有:学生编号、学生姓名、课程编号、课程名称、课程成绩。  备忘录,包括的数据项有:学生编号、学生姓名、去向、原因、时间,系院、专业、年级、班级.

 学生的成绩情况,包括的数据项有:学生编号、学生姓名、总成绩、平均成绩、班级。  数据库概念结构设计

根据上面设计规划出的实体,我们对各个实体具体的描述E-R图如下:

课程选择e-r

- 5 -

课程编号 课程 课程名称

学生信息e—r

课程成绩e—r

- 6 -

班级 年级 专业 学生 学院 状态 学生编号 姓名 性别 出生年月 家庭住址 籍贯 政治面貌 学生编号 课程成绩 学生姓名 课程成绩 课程名称 课程编号

备忘录

备忘录e-r

学生成绩情况e-r

4.1. 数据库逻辑结构设计

- 7 -

班级 年级 学生编号 学生姓名 专业 去向 系院 时间 原因 学生编号 班级 学生的成绩情况 学生平均成绩 总成绩

CS_INFO(课程成绩信息) 字段名 CS_STUD_ID CS_STUD_NAME CS_COU_ID CS_COU_NAME CS_GRADE

数据类型 nchar nvarchar nchar nvarchar int 长度 10 20 10 30 说明 不空,主键 不空 不空,主键 不空 不空 描述 学生编号 学生姓名 课程编号 课程名称 成绩 STUDENT_INFO(学生信息表) 字段名 ID NAME SEX BIRTHDAY JG ZZMM JTZZ RXDATE XY ZY NJ CLASS ZT

- 8 -

数据类型 nchar nvarchar nchar datetime nvarchar nvarchar nvarchar datetime nvarchar nvarchar nvarchar nvarchar nvarchar 长度 10 20 10 50 50 50 20 20 20 20 20 说明 不空,主键 不空 不空‘男’、‘女' 不空 不空 不空 不空 不空 不空 不空 不空 不空 不空 描述 学生编号 学生姓名 性别 出生年月 籍贯 政治面貌 家庭住址 入学日期 系院 专业 年纪 班级 状态

SC(课程信息表) 字段名 C_ID C_NAME

BWL_INFO(备忘录) 字段名 STU_ID STU_NAME BWL REASON TIME XY ZY NJ CLASS

RECORD(学生成绩情况信息) 字段名 RE_STUD_ID RE_STUD_NAME RE_ALL RE_AVG RE_BANJI

5.程序设计

- 9 -

长度 10 30 说明 不空,主键 不空 描述 课程编号

课程名称

数据类型 nchar nvarchar

长度 10 20 50 50 20 20 20 20 说明 不空,主键 不空 不空 不空 不空 不空 不空 不空 不空 描述 学生编号 学生姓名 去向 原因 时间

去的系院

去的专业 年级 班级

数据类型 nchar nvarchar nvarchar nvarchar datetime nvarchar nvarchar nvarchar nvarchar 数据类型 nchar nvarchar int int nvarchar 长度 10 20 20 说明 不空,外键 不空 不空 不空 不空 描述 学生编号 学生姓名 总成绩 平均成绩 班级

5。1登录界面

该界面为登录窗口,需要正确的账号及密码才能正确登录,如图一

图一 登录界面

主要代码设计如下:

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 where UserName=’”+txtUserName。Text.Trim()+”’and UserPwd='”+txtUserPwd。Text。Trim()+\"' \";

SqlCommand cmd=new SqlCommand(sql,conn); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read())

{ Username = dr[”UserName\"].ToString();

- 10 -

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 添加学生信息

该界面提供录入学生信息到数据库当中,如图三

- 11 -

图三

主要代码设计:

private void button1_Click(object sender, EventArgs e)

{ if (txtID。Text。Trim().Length != 0&&txtName.Text!=\"”&&comboBox1。SelectedValue!=\"”)

{ string studentSex = \"”; if (optMale。Checked) {

studentSex = ”男”; }

if (optFemale。Checked) {

studentSex = \"女”; }

string sql = \"insert into studentinfo(StudentId,StudentName,StudentSex,StudentNativePlace,StudentBirthday,studentclass) Values(’\"

+ txtID.Text + ”',N'” + txtName.Text + ”’,N’” + studentSex + \"',N'” + cbNativePlace.SelectedItem + \"','\" + dateTimePicker1.Value + ”’,N’\"+comboBox1。SelectedValue+”')\";

- 12 -

try {

if (OperateDB。ExecuteNonQuery(sql) == 1) {

MessageBox。Show(”添加成功\"); } else {

MessageBox。Show(”添加失败\"); } } catch(Exception err) {

MessageBox.Show(\"数据库读取出错\"); } } else {

MessageBox。Show(\"填写完整信息\"); } } 5。3.2查询界面

该界面提供查询某学生学籍信息和个人成绩功能,如图四和图五

图四

- 13 -

图五

查询学生信息窗体主要代码如下:

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。Text.Trim()+\"%'\";

DataSet ds = OperateDB.ExecuteDataSet(sql);

dataGridView1。DataSource = ds.Tables[0]。DefaultView; } 查询个人成绩窗体主要代码如下:

private void button1_Click(object sender, EventArgs e)

{ if (textBox1.Text == ”\") {

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 on course_info。cou_name=grade_info。cou_name where stud_name=N’” + textBox1.Text + \"’ \";

DataSet ds = OperateDB。ExecuteDataSet(sql);

dataGridView1。DataSource = ds.Tables[0]。DefaultView; }

- 14 -

} 5。4课程管理 5.4.1添加课程

为每个班级添加本学期课程内容,如图六

图六

主要代码如下:

private void button1_Click(object sender, EventArgs e)

{ if (textBox1.Text != \"” && textBox2.Text != \"\" && textBox3.Text != \"\" && textBox4。Text != \"” && comboBox1。SelectedValue != ”\")

{ string sql = \"insert into course_info values('” + textBox1。Text + ”’,N'\" + textBox2.Text + ”',N’\" + textBox3.Text + ”’,'\" + textBox4。Text + \"’)”;

string sql2 = \"insert into class values(N’\" + comboBox1.SelectedValue + \"’,’” + textBox1。Text + ”',N’” + textBox2。Text + \"')”;

OperateDB.ExecuteNonQuery(sql2);

try {if (OperateDB。ExecuteNonQuery(sql) == 1) { MessageBox.Show(”添加成功\"); } else

{ MessageBox.Show(\"添加失败\"); }

- 15 -

}

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(\"^[\一—\龥]+$”); if (rx。IsMatch(textBox1。Text)) {

- 16 -

sql = ”select * from course_info where cou_name like N’%” + textBox1.Text + \"%' or teacher like N'%\"+textBox1.Text+”%’”;

}

else { sql = \"select * from course_info where cou_id like ’%”+textBox1.Text+”%’\";

}

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.Text+”' ”; DataSet ds = OperateDB.ExecuteDataSet(sql);

textBox2。Text=ds。Tables[0]。Rows[0][0]。ToString(); }

- 17 -

private void comboBox1_Leave(object sender, EventArgs e)

{ string sql = ”select cou_id from course_info where cou_name=N'” + comboBox1。SelectedText + \"' \";

DataSet ds = OperateDB.ExecuteDataSet(sql);

textBox4。Text = ds.Tables[0]。Rows[0][0]。ToString(); }

private void button1_Click(object sender, EventArgs e) {

if (textBox1。Text != \"\" && comboBox1.SelectedValue != ”\" ) {

if (textBox3。Text != \"\") {

string sql = \"insert into grade_info values(’\" + textBox2.Text + \"','” + textBox4。Text + \"',N'” + textBox1.Text + \"','” + textBox3。Text + \"',N'\" + comboBox1。SelectedValue + \"’)”;

try {

if (OperateDB.ExecuteNonQuery(sql) == 1) {

MessageBox。Show(”添加成功”); } else {

MessageBox.Show(\"添加失败\"); } }

catch (Exception err) {

MessageBox.Show(err。ToString()); } } else{

MessageBox.Show(”请输入成绩”); } } else

- 18 -

{

MessageBox.Show(\"请输入姓名或科目”); } } private void button2_Click(object sender, EventArgs e) { textBox1.Text = \"\"; textBox2.Text = ”\"; textBox3。Text = \"”;

textBox4。Text = \"\"; }

private void gradeAdd_Load_1(object sender, EventArgs e)

{ this.course_infoTableAdapter.Fill(this。studentDataSet6.course_info); } }

5。5。2统计班级信息

该界面可以统计某班级某分数段某学科成绩,并显示该分数段人数,同时显示该班级该科的及格率和优秀率,如图九

图九

- 19 -

主要代码如下:

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.Text + ”' ) and cou_name =N'\" + comboBox3.Text + ”'and grade>=’\" + a + \"’ and grade<='” + b + ”' ”;

DataSet ds = OperateDB.ExecuteDataSet(sql);

dataGridView1。DataSource = ds.Tables[0]。DefaultView; textBox1.Text = 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.Text + \"’ ) and cou_name =N'\" + comboBox3。Text + \"'”;

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。Text + ”' ) and cou_name =N'\" + comboBox3。Text + \"'and grade>=60 \";

- 20 -

DataSet ds2 = OperateDB。ExecuteDataSet(sql2);//统计该科几个认识

m =(float) ds2.Tables[0].Rows.Count / (float)ds4.Tables[0]。Rows.Count;//计算出及

格率

textBox2.Text = Convert.ToString(m);

string sql3 = \"select stud_id from grade_info where stud_id IN (select studentid from studentinfo where studentclass=N'” + comboBox1。Text + ”' ) and cou_name =N’” + comboBox3。Text + ”'and grade>=90 ”;

DataSet ds3 = OperateDB。ExecuteDataSet(sql3);//统计分数大于90的人数

n = (float)ds3.Tables[0]。Rows.Count / (float)ds4。Tables[0]。Rows。Count;//计

算出优秀率

textBox3.Text = Convert.ToString(n); } private void comboBox1_Leave(object sender, EventArgs e)

{ this.classTableAdapter。Fill(this。studentDataSet3。_class); }

5. 系统出错处理设计

5.1. 系统的出错信息以及处理方法

系统的出错信息以及处理方法一览表:

出错名称 用户名输入错误 前三次密码错误 系统输出信息 “用户名错!请重新输入!” “您的密码输入有误,请重新输入!” 密码错数次数超过三次 “密码错误!请半个小时后再进行登录操作!” 输入数据格式错误 “输入格式不正确,请检查后再输入!” 不允许为空的输入框输入空字符 “请输入!” 弹回原输入页面的输入处 进入默认登录页,并半小时内禁止该用户进行登录。 返回原输入页面 处理方法 进入登录页面 进入登录页面 - 21 -

选择打印成绩,但未找到可用打印机设备 系统故障 5.2. 补救措施

“未检测到可用打印设备,无法进行打印!\" “服务器维护中!暂停服务!” 停止打印操作 立即启用备用机,恢复故障 由于数据在数据库中已经有备份,故在系统出错后可以依靠数据库的恢复功能,并且依靠日志文件使系统再启动,就算系统崩溃用户数据也不会丢失或遭到破坏。但有可能占用更多的数据存储空间,权衡措施由用户来决定。 6. 项目设计总结

本次项目设计通过设计一个具体的程序的设计过程,了解到了真实的程序是怎样实现功能,与错误处理。通过对数据库的调用可以更好的学习到数据如何工作与分配的,也加深了对数据库的使用和维护.

也了解到了自己的诸多不足,比如流程图的设计,需要一个比较完善的设计,考虑到需求分析,尽量做到所有功能均能实现,同时完善细微但是却很有必要的功能。对于整个程序的设计要有一个大致方向,跟着流程图来编写程序的运行顺序。并且在有错误的地方要有人性化的提示语句,提示用户哪里错误了,这样程序运行起来才会很流畅,给人更好的使用体验。

在窗口程序设计阶段,最困难的是combobox DataSource的设置,最后使用绑定数据的方法解决,同时可以在数据源里面设置select语句来修改查询的内容 7. 参考文献

[1]唐政,房大伟.c#项目开发全程实录。清华大学出版社,2008.6.1

项目设计 评 语 项目设 指导教师 - 22 -

计 成 绩

(签字) 年 月 日 - 23 -

因篇幅问题不能全部显示,请点此查看更多更全内容