软件工程实习报告
- 格式:doc
- 大小:1.50 MB
- 文档页数:36
淮阴工学院软件工程实习报告选题名称:学生成绩管理系统系(院):计算机工程学院专业:计算机科学与技术班级:计算机1101班、1102班姓名:顾燕卿、翟鹏、毛健、胡春东、施凯迪指导教师:龚乐君,陈剑洪学年学期:2012 ~ 2013 学年第 1 学期2012 年 1 月7 日设计任务书指导教师(签章):2012 年12 月29 日摘要:随着科学技术河经济的飞速发展,人们掌握的信息量急剧增加,更充分地开发和利用这些信息资源,就必须有一种新技术能对大量的信息进行识别,存储,处理与传播。
SQL server 2005是单一进程,多线程的关系型数据库,是一个全面的,集成的,端到端的数据解决方案,为企业的用户提供了一个安全的,可靠的河高效的平台,是用于企业数据管理和商业智能平台的构建。
SQL server 2005数据库是所涉及的对象以及数据的集合。
不仅反映数据本身的内容,而且反映对象以及数据之间的联系。
对于我们这些学习信息技术的同学来说,如何最大限度的利用所学的知识去设计系统如图书管理系统、学生成绩管理系统等。
把所花的大力气搜集来的数据变成对学校未来发展有价值的信息。
我想这是我们每个同学都应该有的想法。
这一星期的实训给我们提供了一个很好的实践机会。
现在很多全国的大学校园对学生的管理都采用了现代化的管理计算机统一管理。
这就需要一个适合管理学生信息的管理软件,我想这回给学校的管理带来很大的方便。
在这种情况下,用各种开发工具开发出来的学生考试登陆系统应运而生,并且蓬勃的发展起来,这为学校的学生信息的管理带来了很大的方便,最重要的是给学校节省了大量的人力、物力。
在这样的情况下我组设计了学生成绩管理系统,希望我们的设计没有白费。
关键词:学生考试;SQL数据库;C#目录1 需求分析 (5)1.1 引言 (5)1.2 项目背景 (5)1.3 数据结构 (5)1.4 用例图 (5)1.5 数据流图 (6)1.6 数据实体E-R图 (6)1.7 功能需求 (7)1.8 性能需求 (8)1.9 运行需求 (8)2 概要设计 (9)2.1软件的结构设计 (9)2.2 软件的数据库设计 (10)2.3 软件系统流程图 (11)3 详细设计 (13)3.1 软件功能的详细设计 (13)3.2 系统流程图 (15)3.3 系统功能模块图 (15)3.4 部分功能模块代码实现 (16)4 软件测试 (21)4.1 学生功能模块测试 (21)4.2 教师模块设计 (24)4.3 集成测试 (27)总结 (29)致谢 (30)参考文献 (31)1 需求分析1.1 引言需求分析是软件系统生存期中定义阶段的最后一个步骤。
是作为整个软件开发范围的指南,是软件开发人员开发出正确的符合用户要求的软件的重点。
该文档将最终交给软件具体开发人员进行具体的开发,其针对的对象是软件开发员。
1.2 项目背景本软件系统的名称为“学生成绩管理系统” ,本项目计算机工程学院提出,由学院我们小组进行开发,该软件系统涉及教师管理、学生管理。
1.3 数据结构学生基本信息=学号+姓名+性别+年龄+系院+密码教师基本信息=教师号+姓名+年龄+性别+地址+电话+密码课程信息=课程号+课程名+学分+教师名成绩信息=学号+课程号+成绩输出数据结构:成绩信息=课程号+课程名+成绩+教师名+课程平均分+课程最高分+课程最低分1.4 用例图图1-1 用例图1.5 数据流图图1-2 数据流图1.6 数据实体E-R图1.7 功能需求登陆界面:选择登陆用户类型,教师或者学生。
找回密码:点击进入密码修改界面,输入相关信息修改密码。
教师界面——录入成绩:录入学生的成绩。
查看成绩:点击查看每门课程的所有学生成绩信息。
删除成绩:点击删除学生成绩信息。
安全功能:修改个人密码。
学生界面——查看成绩:点击查看自己各个学科成绩最高分:点击显示各个课程最高分。
最低分:点击显示各个课程最低分。
平均分:点击显示各个课程平均分。
安全功能:修改个人密码。
1.8 性能需求1.数据精确度由于采用数据库技术并且用户的应用领域对数据精确度的要求不是太高,所以这点在系统中表现得比较少,但是用户数据的安全性与正确性是完全保证的,所以对用户的使用没有多大的障碍。
2.时间特性本系统的数据库较小,所以程序在响应时间,数据更新处理时间上性能是比较突出的。
而且也正由于数据量相对较少,故在数据传输时间和系统运行时间上表现的较让人满意。
3.适应性该软件是使用Visual Basic 6在windows xp系统下完成的所以只要是兼容windows的软件或是操作系统,该软件都可以正确地运行,有较好的适应能力与兼容性。
而且应用户的特殊需求软件在完成后的维护阶段可以保持一个与其他类软件接口,随时满足用户的使用要求。
1.9 运行需求1.用户界面系统运行时的主界面大致要求为windows的经典运行界面,主界面可以是SDI(单文档界面)即每个窗体之间是独立的,也可以是MDI(多文档界面):有一个主窗体,可以包含其他窗体。
建议本系统采用多文档界面,这样可以使程序更加美观,整齐有序。
2.硬件接口软件较小除硬盘外,基本没有与外界硬件的联系,不过考虑到数据库大量数据的备份等要求可以保持与磁带机和光盘刻录机的接口,这点较易实现。
3.软件接口在这里主要考虑软件与操作系统的接口,考虑到文档处理的需要有可能可以包括与较常用的办公软件的接口。
例如microsoft的office系列。
另外用户还有用户所需要的软件接口,这些应在用户需求定义时明了。
4.故障处理考虑到软件的范围不大,所以故障处理一般由操作系统完成,系统只要保持与操作系统的接口即可。
只要操作系统没有大的故障程序一般是比较稳定的。
考虑到用户对数据的安全性要求,程序可以有独立于操作系统之外的数据备份功能与过程,以及系统崩溃后的数据恢复功能,这点在数据库软件中已经达到了,只要稍微在其上再增加用户所需要的附加功能即可。
2 概要设计经过数据库需求分析阶段的工作,软件必须“做什么”已经清楚了,现在是决定“怎么做”的时候。
软件设计的基本目的就是回答“从总体上说,软件应该如何实现?”这个问题,因此,软件设计又称为概要设计或初步设计。
通过这个阶段的工作将划分出组成软件的物理元素程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后进行详细的设计。
总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定软件中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
2.1软件的结构设计在学生成绩管理系统中,系统的用户只有2个:教师和学生。
教师登录系统后可以记录学生的成绩,查看学生的成绩和打印学生的成绩。
学生登录系统后可以查看成绩。
2.1.1 学生登录登录信息:学生账号、学生登录密码基本要求:已经成功注册过的学生通过输入合法的学生账号和密码即可登录学生成绩查询系统;如果用户名非法系统将不允许用户访问。
2.1.2 教师登录登录信息:教师账号、教师登录密码基本要求:已经成功注册过的教师通过输入合法的教师账号和密码即可登录教师对于学生成绩的管理系统,如果用户名非法系统将不允许用户访问。
2.1.3 学生查看成绩基本要求:学生登录系统后可以查看成绩,也可以在本次登录过程中修改学生登录密码。
2.1.4 教师管理学生成绩基本要求:教师在成功登录系统后,可以记录学生的成绩,查看学生的成绩和打印学生的成绩。
在点击安全退出之后就可以退出系统界面。
2.2 软件的数据库设计本数据库包含5张表,具体如下表所示:表2-1 数据库表表2-2课程信息表(course)表2-3 学生信息属性表(student)表2-4教师信息属性表(teacher)表2-5学生成绩统计表(grade)2.3 软件系统流程图2.3.1 学生登录查询成绩学生在进入系统交互界面后,选择登录身份类型,再输入正确的账户名和个人密码,系统根据数据库中原有的信息对该信息进行判断,核对无误后再允许学生登录系统查询成绩,或者允许教师进入系统管理信息。
具体流程图见2-6。
图2-6学生登录查询成绩流程图2.3.2教师登录查询成绩教师在进入系统交互界面后,选择正确的登录身份类型,再输入正确的账户名和个人密码,系统根据数据库中原有的信息对该信息进行判断,核对无误后再允许教师进入系统管理信息。
具体流程图见2-7。
图2-7教师登录管理流程图2.3.3 学生查看成绩学生登录系统后可以查看成绩,也可以在本次登录过程中修改学生登录密码。
具体流程图见图2-8。
图2-8学生查看成绩流程图2.3.4教师管理学生成绩操作教师在成功登录系统后,可以记录学生的成绩,查看学生的成绩和打印学生的成绩。
在点击安全退出之后就可以退出系统界面。
具体流程图见2-9。
图2-9教师管理学生成绩流程图3 详细设计3.1 软件功能的详细设计3.1.1 输入项1)教师登记学生成绩时输入数据:学生姓名、学号、课程号、性别、所属院系,以及课程所的成绩。
学生姓名由汉字组成,10个字符以内,不能为空;学号由11位数字组成,不能为空;课程号由4位数字组成,不能为空;性别又汉字组成,不能为空;所属院系由汉字组成,10个字符以内,可以为空;成绩有数字组成,不能为空;2)教师查询输入关键字:课程号和学生学号课程号由4位数字组成,不能为空;学生学号由11位数字组成,不能为空;3)学生查询输入关键字:课程号,学生学号,姓名,所属院系课程号由4位数字组成,不能为空;学生学号由11位数字组成,不能为空;学生姓名由汉字组成,10个字符以内,不能为空;所属院系由汉字组成,10个字符以内,可以为空;3.1.2 输出项1)学生成绩查询显示数据4)根据关键字查询到相应的数据,学号、姓名、课程号、性别、所属院系,以及课程所得成绩,课程最高分,课程最低分以及平均分。
2)教师查询显示数据根据关键字查询到相应的数据,学号、姓名、课程号、性别、所属院系,以及所有课程所得成绩3.1.3 设计方法1)教师成绩输入S1: 输入学号,S2:满足约束条件,添加,转S4S3:不满足约束条件,转S16S4:输入姓名S5:满足约束条件,添加,转S7S6:不满足约束条件,转S16S7:输入性别S8:满足约束条件,添加,转s10S9:不满足约束条件,转S16S10:输入课程号S11:满足约束条件,添加,转S13S12:不满足约束条件,转S16S13:输入课程分数S14:满足约束条件,添加,转S17S15:不满足约束条件,转S16S16:您输入不正确,请重新输入,转S1,S4,S7,S10,S13S17:结束2)学生成绩查询S1: 输入学号,课程号(如果选择学生姓名和所属院系查询,转S4)S2:满足约束条件,查询,转S7S3:不满足约束条件,转S8S4:输入学生姓名和所属院系S5:满足约束条件,查询,转S7S6:不满足约束条件,转S8S7:显示查询的信息,转S9S8: 您输入不正确,请重新输入,转S1,S4S9:结束3)教师成绩查询S1: 输入教工号,课程号,(如果选择学生姓名和所属院系查询,转S4;)S2:满足约束条件,查询S3:不满足约束条件,转S7S4:输入学生姓名和所属院系查询S5:满足约束条件,查询S6:不满足约束条件,转S7S7:结束3.2 系统流程图图3-1 系统流程图3.3 系统功能模块图Array图3-2 系统功能模块图3.4 部分功能模块代码实现3.4.1 教师管理界面查看学生成绩:private void select(string cname){try{dataGridView_t.Visible = true;SqlConnection con = new SqlConnection();con.ConnectionString = ConToSql.MyComputer;con.Open();SqlCommand com = new SqlCommand();com.Connection = con;mandText = "selectstudent.sno,sname,sex,age,dept,o,cname,grade " +"from student,course,grade where student.sno=grade.sno and o=o and cname='" +cname + "'";SqlDataReader r = com.ExecuteReader();while (r.Read()){dataGridView_t.Rows.Add(r.GetString(0), r.GetString(1), r.GetString(2), r.GetString(3), r.GetString(4), r.GetString(5),r.GetString(6),r.GetDouble(7));}r.Close();con.Close();}catch (Exception q){MessageBox.Show(q.Message);}}修改学生成绩:SqlConnection con = new SqlConnection();con.ConnectionString = ConToSql.MyComputer;con.Open();SqlCommand com = new SqlCommand();com.Connection = con;mandText = "update grade set grade='" + textBox_grade.Text + "' where sno='" + textBox_id.Text + "' and cno='" + textBox_cno.Text + "'";com.ExecuteNonQuery();con.Close();dataGridView_t.Rows.Clear();textBox_age.Text = null;textBox_cname.Text = null;textBox_cno.Text = null;textBox_sex.Text = null;textBox_dept.Text = null;textBox_grade.Text = null;textBox_id.Text = null;textBox_name.Text = null;删除学生成绩:SqlConnection con = new SqlConnection();con.ConnectionString = ConToSql.MyComputer;con.Open();SqlCommand com = new SqlCommand();com.Connection = con;mandText = "delete from grade where sno='" + textBox_id.Text + "' and cno='" + textBox_cno.Text + "'";com.ExecuteNonQuery();con.Close();dataGridView_t.Rows.Clear();textBox_age.Text = null;textBox_cname.Text = null;textBox_cno.Text = null;textBox_sex.Text = null;textBox_dept.Text = null;textBox_grade.Text = null;textBox_id.Text = null;textBox_name.Text = null;修改密码:private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e) {dataGridView_t.Visible = false;button_queding.Visible = false;textBox_sex.Visible = false;label1.Visible = true;label2.Visible = true;textBox_newPwd.Visible = true;textBox_surePwd.Visible = true;button_sure.Visible = true;button_cancle.Visible = true;textBox_age.Visible = false;textBox_cname.Visible = false;textBox_cno.Visible = false;textBox_dept.Visible = false;textBox_grade.Visible = false;textBox_id.Visible = false;textBox_name.Visible = false;安全退出:private void 安全退出ToolStripMenuItem_Click(object sender, EventArgs e) {this.Close();}3.4.2 学生查询成绩界面查看学生成绩:private void 显示ToolStripMenuItem_Click(object sender, EventArgs e){dataGridView1.Rows.Clear();try{SqlConnection con = new SqlConnection();con.ConnectionString = ConToSql.MyComputer;con.Open();SqlCommand com = new SqlCommand();com.Connection = con;mandText = "select o,cname,grade,tname fromgrade,course " +"where o=o and grade.sno='" + erid + " ' ";SqlDataReader read = com.ExecuteReader();while (read.Read()){dataGridView1.Rows.Add(read.GetString(0), read.GetString(1), read.GetDouble(2), read.GetString(3));}read.Close();con.Close();}catch (Exception a){MessageBox.Show(a.Message);}}查看个人最高分:private void 最高分ToolStripMenuItem_Click(object sender, EventArgs e){for(int i=0;i<dataGridView1.Rows.Count-1;i++){try{SqlConnection con = new SqlConnection();con.ConnectionString = ConToSql.MyComputer;con.Open();SqlCommand com = new SqlCommand();com.Connection = con;mandText = "select max(grade) from grade where cno='" + dataGridView1.Rows[i].Cells[0].V alue + "'";string k = Convert.ToString(com.ExecuteScalar());dataGridView1.Rows[i].Cells[5].V alue = k;con.Close();}catch (Exception a){MessageBox.Show(a.Message);}}}查询个人成绩平均分:private void 平均分ToolStripMenuItem_Click(object sender, EventArgs e){for (int i = 0; i < dataGridView1.Rows.Count - 1; i++){try{SqlConnection con = new SqlConnection();con.ConnectionString = ConToSql.MyComputer;con.Open();SqlCommand com = new SqlCommand();com.Connection = con;mandText = "select avg(grade) from grade where cno='" + dataGridView1.Rows[i].Cells[0].V alue + "'";string k = Convert.ToString(com.ExecuteScalar());dataGridView1.Rows[i].Cells[4].V alue = k;con.Close();}catch (Exception a){MessageBox.Show(a.Message);}}}修改密码:private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e){label1.Visible = true;label2.Visible = true;textBox_newPwd.V isible = true;textBox_surePwd.V isible = true;button_queren.Visible = true;button_cancel.Visible = true;dataGridView1.Visible = false;}安全退出:private void 安全退出ToolStripMenuItem_Click(object sender, EventArgs e){this.Close();}4 软件测试4.1 学生功能模块测试4.1.1 登录模块的测试1) 测试的数据类型:教师账户:1011 密码:1011类型:学生账户:1101301102 密码:11013011022) 测试的结果(包括发现的的问题)没有任何问题。