目录
1. 引言 3
2. 总体设计 4
3. 接口设计 8
4. 运行设计 9
5. 系统数据结构设计 10
6. 系统出错处理设计 11
7. 数据库设计说明书 12
8. 用户手册 14
9. 测试计划 15
1. 引言
1.1. 编写的说明
随着社会的发展,学校的学生人数越来越多,为了更好的管理学生,方便学生。本软件将使学生信息管理系统更清楚明朗,能使教师方便、安全、高效的对学生信息进行管理,也使学生能更简单的进行查分,选课等。 面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。
1.2. 前景
通过这样的系统可以做到信息的规范化管理、科学性痛经和快速查询、修改、增加、删除等,从而减少管理方面的工作量。
1.3. 定义
本系统主要应用于学校学生信息管理,总体任务是实现学生信息管线的系统化、规范化和自动化,起主要任务是计算学生各种信息进行日常管理,如查询、修改、增加、删除等,其次还针对学生选课,对于这些要求设计额学生信息管理系统。
1.4. 参考资料
2. 总体设计
2.1. 需求规定
2.1.1. 系统的功能
学籍管理、成绩管理、奖惩管理、综合评分管理、困贷管理其下的查询、编辑、插入、删除模块均实现其相应管理的具体功能。
2.1.2. 性能的规定
在对数据操作过程中不能出现系统反应不过来;在对系统所请允许的硬件中进行更换从不好到好时,要求系统正常运行; 在系统运行过程中不能无故出现错误(如:系统自动关闭,崩溃,造成数据丢失);在对系统从一台计算机移到另一台计算机时,不能出现运行不了。
数据精确度高,如果用户输入的数据不符合精度的要求,系统自动转成换系统要求的格式。
2.1.3. 输入输出的
输入的学号必须是十位数字、输入的学生姓名必须是字符型、输入的学生成绩必须是数字;输出查询到的数据进行显示、查询的数据进行打印、查询的数据可以导出。
2.1.4. 精度
满足学校使用的需求,发生某些变化时,系统对这些变化的适应能力。
2.1.5. 时间特性的要求
一边操作应该在1到2秒内,对硬件盘和打印机的操作也应在可节省的时间内完成。
2.1.6. 故障处理要求
正常使用时不应出错,若运行时遇到不可恢复系统出错,必须保证数据库完好无缺。调试中遇到的问题及解决的方案。系统举具备自动拼写错误检查等功能,允许用户出错并对出现的错误进行相应的处理。
2.1.7. 其他专门要求
安全性高,使用方便,容易读懂,可维护可移植,界面要达到视觉上的舒心和操作上的方便。
2.2. 运行坏境
2.2.1. 设备
Cpu:双核(四核最好)
内存:2G(大于2G最好)
编译系统:java,SQL Server 2000以上,Microsoft Access2003 以上。
操作系统:windows Xp,或windows 2000以上。
2.2.2. 支持软件
操作系统:windows Xp,或windows 2000以上。
编译系统:java,SQL Server 2000以上,Microsoft Access2003 以上。
2.2.3. 接口
本软件不需要特定的硬件或硬件接口进行支撑,要求与其他软件无冲突错误发生。运行于windows 2000及更高版本具有。Net的操作系统之上。
2.3. 基本设计概念
管理员进入信息管理系统对学生的信息进行录入、更新、修改、添加、等操作。也可以通过查询学生信息。而学生只可以查询信息也可以通过管理员下发命令对教师进行评教。相关工作员可以查询信息、导出相关信息、也可以通过管理员下发命令进行一些相关信息的录入。
2.4. 总体设计结构
3. 接口设计
3.1. 用户接口
提交:点击事件、进入系统提交命令、返回提醒是否以提交。
重设:点击事件、清空输入的数据。
取消:点击事件、返回当前界面。
3.2. 外部接口
键盘、鼠标、打印机。
3.3. 内部接口
学生登录窗口——>学生信息查询、成绩查询、选课系统、课表查询、修改密码、退出等。
管理员登录窗口——>修改新增信息、导入导出数据、系统管理、退出等。
教师登录窗口——>教师个人信息查询、学生成绩录入、学生信息查询、导出信息、退出等。
4. 运行设计
4.1. 运行模块组合
4.1.1. 信息查询模块
信息查询时通过用户界面与数据库进行链接,搜索与用户输入的名称想匹配的信息,并将结果显示给用户。
4.1.2. 信息更新模块
学生信息更新时,管理员通过界面接口与数据库进行链接进行对信息的更新,和相关数据的操作。
4.2. 运行控制
4.2.1. 信息查询模块
当用户输入正确的名称时,点击查询,系统转入数据库按照记录显示给用户。
4.2.2. 信息更新模块
当管理员对数据进行更新时,输入更新的内容,点击更新就能实现对学生信息的更新。
4.3. 运行的时间
本系统学生信息占用最多,其次是其他信息,最少的是教师信息。运行的时间能达到用户的需求。
5. 系统数据结构设计
根据系统需求把系统分为学生登录模块,教师用户模块和管理员模块。
6. 系统出错处理设计
6.1. 出错信息
登录信息出错——>系统提示错误登录信息(提示错误的类型)——>返回登录界面
输入错误数据——>系统提示数据错误信息——>提示从新输入数据
6.2. 补救措施
备份数据库,分析出错的严重性,在系统出错后严重的可以启用备份。不严重的可以进行修改或使用帮助文件。
7. 数据库设计说明书
7.1. 数据库概念模型
7.2. 逻辑结构设计
将概念结构转换为一般关系、网状、层次模型;将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;对数据模型进行优化。
8. 用户手册
登录:登录系统
重置:从新填写登录信息
查询信息:查询数据库中的信息、记录
删除信息:删除数据库中的信息
修改信息:修改数据库中的信息
增加信息:增加数据库中的信息
导入:导入数据库中的信息
导出:导出系统中的信息
9. 测试计划
9.1. 软件说明
软件所需实现的功能学籍管理、成绩管理、奖惩管理、综合评分管理、困贷管理其下的查询、编辑、插入、删除模块均实现其相应管理的具体功能。
9.2. 测试的内容
不同身份的用户的登录后的操作权限、及查询。
9.3. 进度安排
数据库表格设计后就设计相应测试用例,待相应模块的代码编写后完后随即测试
运行时间测试“对系统查询响应时间、数据的转换时间、数据的传送时间、数据的更新处理时间;系统设计好后随即进行测试。
第二篇:学生信息管理系统设计报告
学生信息管理系统设计报告
080370104 马中源
一、设计目的
作为C#课程结课设计,验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单数据库应用程序设计。希望通过项目实践,熟悉巩固所学知识,以使自身达到熟练掌握.NET基本结构以及C#语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,了解ADO.NET数据库开发基本知识,为今后的进一步深入学习,奠定基础。
二、需求分析
学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。本系统需要完成的功能有:班级管理、学生管理、科目管理、课程管理、成绩管理以及系统管理员才具有的教师管理和用户管理。
1.班级管理:可对班级进行添加、删除、修改、查找和报表输出等功能,班级属性有:名称、班主任(来自于系统中保存的教师)、当前学生人数、建班日期和备注等属性。
2.学生管理:可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:学号、姓名、性别、所属班级(来自于系统中保存的班级)、相片、出生日期和备注等属性。
3.科目管理:可对科目进行添加、删除、修改、查找和报表输出等功能,科目属性有:科目名称、学时数和备注等属性。
4.课程管理:可对每一个班级的上课科目进行添加、删除、修改、查找和报表输出等功能,课程属性有:所属班级(来自于系统中保存的班级)、授课老师(来自于系统中保存的教师)、开课日期、结课日期和备注等属性。
5.成绩管理:可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找和报表输出等功能,成绩属性有:学生姓名、所属班级(来自于系统中保存的班级)、课程名、成绩、备注等属性。
6. 系统管理:该模块的主要任务是维护系统的正常运行和安全性设置,包括添加用户、修改密码、重新登录等等。
三、系统模块的实现
在系统中包括以下功能:系统管理、学生信息管理、课程信息管
理、成绩信息管理、班级信息管理。
系统各模块关系如图所示:
本系统共分为三大部分:
1、 登录模块
为了系统的安全,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。
用户登录窗体中放置了两个文本框(Textbox),用来输入用户名和密码;两个按钮(Button)用来确定或者取消登录。
设置一个SSTab控件,供不同用户登录时选择用户权限,超级用户拥有一切权限(包括添加删除和修改以及对用户的管理),普通用户拥有受限制的权限(查询及修改密码),提高了数据库的安全性。
添加一个ToolTip组件,提示用户输入正确的用户名和密码形式,提示用户密码是佛正确。
登陆条件判断代码:
private void button1_Click(object sender, EventArgs e)
{
if (this.textBox1.Text == "" || this.textBox2.Text == "")
{
MessageBox.Show("用户名或密码不能为空!");
}
SqlConnection conn = new SqlConnection(connString);
string str = "select * from Users where UserName='" + this.textBox1.Text.Trim() + "'";
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(str, conn);
SqlDataReader read = cmd.ExecuteReader();
if (read.Read())
{
if (textBox2.Text.Trim() == read["UserPassWord"].ToString().Trim())
{
MessageBox.Show("用户正确,欢迎您使用本系统!");
this.Hide();
主界面 fm = new 主界面();
fm.Show();
}
else
{
MessageBox.Show("密码错误,请重新输入!");
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
2、 系统主界面模块
登陆成功后,即可进入,系统主界面模块。窗体名称为界面功能介绍。主界面为进入学生管理系统各模块的入口,用户可根据MenuStrip上面各个模块名称单击进入各个管理模块,从而进行对系统的管理操作。
主界面入口代码:
private void 学生增删ToolStripMenuItem_Click(object sender, EventArgs e)
{
学生管理 fm4 = new 学生管理();
fm4.Show();
}
private void 课程管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
课程管理 fm7 = new 课程管理();
fm7.Show();
}
private void 科目管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
科目管理 fm8 = new 科目管理();
fm8.Show();
}
private void 成绩管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
成绩管理 fm10 = new 成绩管理();
fm10.Show();
}
private void 用户管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
用户管理 fm12 = new 用户管理();
fm12.Show();
}
private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e)
{
更改密码 fm14 = new 更改密码();
fm14.Show();
}
private void 班级管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
班级管理 fm2 = new 班级管理();
fm2.Show();
}
3、 各功能模块
1. 用户管理:
可对用户进行添加、删除、修改、查找等功能,用户属性有:用户名、密码、用户类型、
用户权限、用户注册日期等信息。在用户管理界面,用户可根据自身权限查看用户信息,系统超级管理员可根据需求进行添加、删除用户等相关操作。
进入用户管理界面后,将会出现一个主窗体,选择系统管理模块下的添加用户,就可以进入添加用户窗体,可以通过该窗体增加新的用户。
在这个窗体中放置了三个文本框,用来输入用户名和密码;两个按钮用来确定是否添加用户;三个标签用来标示文本框的提示。用户添加界面,超级管理员可通过本界面对用户修改用户类型,用户权限设置。
1.4.2修改密码窗体的创建
在系统管理模块下,进入修改密码窗体,用户可根据需要修改自己的密码。在这个窗体中放置了两个文本框,用来输入密码和确认密码;两个按钮用来确定是否修改密码;两个标签用来标示文本框的内容。密码修改界面主要包括用户名、新设置密码、以及确认等功能。主要供普通用户进行密码修改、以及密码清除操作。
2. 班级管理:
班级信息管理界面
班级属性有:名称、班主任(来自于系统中保存的教师)、当前学生人数、建班日期和备注等属性。
班级管理模块主要分为班级信息管理和班级查询两个界面,班级基本信息管理界面中的Groupbox班级档案,显示班级编号、班级名称、学制、专业、班主任、开班日期、备注等基本信息情况。DataGridView显示数据库中班级详细信息以及伴随操作产生的数据变动情况。在本操作界面内,管理员可对班级信息进行添加、删除、修改等各种操作。
班级查询界面
班级查询界面,主要实现班级基本信息的查询,面向没有管理权限的普通用户访问系统信息,根据班级编号对班级信息进行查询操作,详细信息会在窗体上面DataGridView中显示,普通用户只能浏览信息,不能进行删除、修改等管理权限操作。
3. 课程管理:
课程管理模块主要分为课程管理界面和教师管理界面两部分实现。
课程管理界面中的DataGridView显示课程基本信息,包括科目编号、班级编号、开课学期、教师编号、开课日期、捷克日期等基本信息。管理员可对每一个班级的上课科目进行添加、删除、修改、查找等功能,也可对全部课程进行查看、修改、添加、删除等基本操作。
sql = "select * from ClassCourse";
da = new SqlDataAdapter(sql, connString);
ds = new DataSet();
da.Fill(ds, "ClassCourse");
binds = new BindingSource(ds, "ClassCourse");
dataGridView1.DataSource = binds;
教师管理模块主要包括教师基本档案,教师属性为编号、姓名、联系电话、教师姓名、任教年限、性别、专业、出生年月。在教师管理模块可进行相应的查询与信息修改。
4.课程管理模块
课程信息浏览功能:点击主窗体中课程管理模块下的科目信息浏览,可进入科目信息浏览窗体。为了用户的使用方便,我使用了SSTab控件,故在该窗体中同时包含了科目信息的添加和修改的功能。并且我还在窗体上设置了myflexgrid控件。添加和修改记录后,对于数据有何变化都可以在myflexgrid中显示出来,使用户对所做的操作一目了然。
课程设置功能:进入课程管理模块下的年级课程设置窗体,可以对每一个年级的课程进行设置。
SqlConnection conn = new SqlConnection(connString);
string sql = "Insert into ClassCourse values(" + "'" + textBox1.Text + "','" + textBox2.Text + "'," + textBox3.Text + ",'" + textBox4.Text + "','" + DateTime.Parse(dateTimePicker1.Text) + "','" + DateTime.Parse(dateTimePicker2.Text) + "')";
try
{
conn.Open();
MessageBox.Show("打开数据库连接成功");
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
MessageBox.Show("添加记录成功!");
}
catch (SqlException ex)
{
MessageBox.Show("数据库连接失败!" + "添加记录失败!" + ex.Message);
}
可对科目进行添加、删除、修改、查找等功能,
修改
SqlConnection conn = new SqlConnection(connString);
string sql = "Update ClassCourse set CourseNo='" + textBox1.Text + "'," + "ClassNo='" + textBox2.Text + "'," + "StartTerm=" + textBox3.Text + "," + "TeaNo='" + textBox4.Text + "'," + "StartData='" + DateTime.Parse(dateTimePicker1.Text) + "'," + "FinishData='" + DateTime.Parse(dateTimePicker2.Text) + "'" + "where CourseNo=" + temp;
try
{
conn.Open();
MessageBox.Show("打开数据库连接成功");
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
MessageBox.Show("修改记录成功!");
}
catch (SqlException ex)
{
MessageBox.Show("数据库连接失败!" + "修改记录失败!" + ex.Message);
}
科目管理模块科目属性主要包括科目名称、学时数和备注等属性。同时包括教师管理,教师管理包括教师姓名、电话、性别、科目、职称等一系列基本信息;可对教师进行添加、删除、查询等基本操作。
5.成绩管理模块
成绩添加代码实现
SqlConnection conn = new SqlConnection(connString);
string sql = "Insert into Scores values(" + "'" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')";
try
{
conn.Open();
MessageBox.Show("打开数据库连接成功");
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
MessageBox.Show("添加记录成功!");
成绩删除代码实现
SqlConnection conn = new SqlConnection(connString);
DialogResult ret = MessageBox.Show("确定要删除吗?", "删除", MessageBoxButtons.OKCancel);
if (ret == DialogResult.Cancel)
return;
string sql = "delete from Scores where StuNo=" + textBox1.Text;
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
int rows = cmd.ExecuteNonQuery();
if (rows == 1)
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
成绩查询代码实现
sql = "select * from Scores where StuNo='"+textBox1.Text+"'";
da = new SqlDataAdapter(sql, connString);
ds = new DataSet();
da.Fill(ds, "Scores");
binds = new BindingSource(ds, "Scores");
dataGridView1.DataSource = binds;
成绩管理模块主要包括成绩信息管理功能点击成绩管理模块下的成绩信息浏览,进入成绩信息浏览窗体,考虑到美观和实用性,界面设置如下图。用Frame控件在窗体中划定一个可浏览成绩信息地方,再在Frame中添加MSFlexGrid控件,运行时将在MSFlexGrid中显示所有学生的成绩信息。使用Toolbar来建立工具条。点击工具条中的修改、添加和查询按钮就可分别进入修改成绩信息窗体、添加成绩信息窗体和查询成绩信息窗体。这三个窗体的界面设置分别类似于学籍管理下修改学籍信息窗体、添加学籍信息窗体和查询学籍信息窗体。
成绩管理模块,管理员可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找和报表输出等功能,成绩属性有:学生姓名、所属班级(来自于系统中保存的班级)、课程名、成绩、备注等属性。
6.学生管理模块
添加学籍信息功能
SqlConnection conn = new SqlConnection(connString);
//MemoryStream ms;
//pictureBox1.Image.Save(ms);
//byte[] img = ms.ToArray();
string sql = "Insert into Student(StuNo,StuName,StuSex,ClassNo,StuBday,StuAdress,StuPostNo,StuPhone,StuData,StuRemarks) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + DateTime.Parse(dateTimePicker1.Text) + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + DateTime.Parse(dateTimePicker2.Text) + "','" + textBox8.Text + "')";
SqlCommand cmd = new SqlCommand(sql,conn);
try
{
conn.Open();
MessageBox.Show("数据库连接成功!");
cmd.ExecuteNonQuery();
MessageBox.Show("添加记录成功!");
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
选择主窗体中学生管理模块下的添加学籍信息,就可进入添加学籍信息的窗体,在该窗体中我们可以对学生的学号、姓名、性别、出生日期、班号等学生的信息进行添加。设计时我尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,当输入的信息满足这些边界条件时,将会弹出一个提示框提醒用户,以便用户能及时地做出修改。添加的信息将全部存储到数据库中。
在窗体上放置多个文本框和下拉式文本框,用来输入学籍信息;两个按钮用来确定是否输入学籍信息;一个按钮用来退出窗体;多个标签用来提示文本框中需要输入的内容。
在学生管理窗体下,可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:学号、姓名、性别、所属班级(来自于系统中保存的班级)、相片、出生日期和备注等属性。
修改删除学生信息
SqlConnection conn = new SqlConnection(connString);
DialogResult ret = MessageBox.Show("确定要删除吗?", "删除", MessageBoxButtons.OKCancel);
if (ret == DialogResult.Cancel)
return;
string sql = "delete from Student where StuNo=" + temp;
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
int rows = cmd.ExecuteNonQuery();
if (rows == 1)
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (SqlException ex)
{
MessageBox.Show("数据库连接失败!" + ex.Message);
}
点击学籍管理模块下的修改学籍信息,就进入修改学籍信息的窗体,在该窗体中我们可以对前面添加的学籍信息进行修改。由于用户的需求不同,有的是要对学生的信息做个别的改动,有的是需要删除该条记录,所以该窗体同时包括了修改记录的功能和删除记录的功能。又考虑到用户的误操作,为了方便,我在该窗体中增添了取消修改的功能,可一次性把输入文本框的内容全部置空。
查询学籍信息功能
//string conn = "Initial Catalog=Mazhongyuan;Data Source =localhost;Integrated Security=true";
SqlConnection connection = new SqlConnection(connString );
SqlDataAdapter adapter = new SqlDataAdapter("select * from Student ",connection);
DataTable table = new DataTable();
adapter.Fill(table);
dataGridView1.DataSource = table;
进入学籍管理模块下的查询学籍信息窗体,在该窗体中可以对学生的信息进行查询,有三种查询方式。我在设计时,一方面考虑到简洁的因素,用户可以只设置一种查询方式进行查询;另一方面又为了避免数据的重复,用户可以输入详细的信息,也就是同时设置多种查询方式进行查询。进入查询窗体时,myflexgrid中会显示出所有学生的学籍信息,如果不设置查询方式就进行查询,是无效查询,系统会给出提示。在设置好查询方式后,便开始查询,将在myflexgrid中显示出用户所需的学生的学籍信息。
四、系统测试
在开发这个软件系统的过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,在本次设计过程中,我采用循环测试法,力求在每个阶段结束之前通过严格技术审查,即每完成一个功能,就进行测试,尽可能早的发现并纠正差错,完成模块测试之后再进行系统测试。
在该设计中,我偏重考虑了当用户输入的信息出错时,系统就会出现提示,以便让用户知道出错的原因,并能及时做出修改,所以我站在用户的角度考虑,尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,以此来发现错误,纠正错误,取得了一定的效果。
当然,该学生信息管理系统也存在一些不足之处。在成绩管理界面,当3次改变成绩为不同的内容时,程序会出错。虽然尝试了很多方法,仍不能解决。再一点就是关于打印和年级课程信息设置都未能实现,这有待于以后的进一步提高。
一个应用系统性能的优劣,效率的高低始终应当由用户来做出判决,应用系统在运行过程中,用户会提出一些新的需求和建议,我就会根据用户需求的变化,对本系统做出一定的修改,使其进一步地得到完善和提高。
五、课程设计总结
通过本次课程设计,验证了本学期对C#的学习效果,同时利用所学的基本知识和技能,尝试进行简单数据库应用程序设计。通过本次项目实践,熟悉巩固了本学期所学软件设计知识,达到熟练掌握.NET基本结构以及C#语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,了解ADO.NET数据库开发基本知识,为今后的进一步深入学习,奠定了基础。
参考资料
C#程序设计
C#实用软件开发
数据库设计