1、课程汇报说明书课 程 名 称: 软件工程 系 统 名 称: 学生成绩管理系统 年级/专业/班: 12软件工程班 学 生 姓 名: 吕 鹏 飞 学 号: 40450104 指 导 教 师: 余 钢 课程考评成绩:系统开发(代码质量、完成度、规范性)(30)创新性(10)说明书撰写(规范性、图表、汇报内容)(60)总 分(100) 年 6 月 6 日目 录1 序言11.1系统介绍11.2设计目标12 需求分析22.1 功效模块划分22.2 功效模块描述32.3数据字典和数据流图83 概要设计143.1 软件功效结构144 具体设计154.1数据库设计154.2界面设计要求164.3学生成绩管理界面
2、设计194.4老师管理界面设计244.5管理员界面设计305 实现355.1 实现环境355.2 语言选择356 测试分析36总 结40参考文件41 1 序言1.1系统介绍 本系统关键用于学校学生信息管理,总体任务是实现学生信息关系系统化、规范化和自动化,其关键任务是用计算机对学生信息进行日常管理,如查询、修改 、增加、删除,另外还考虑到用户登录权限,针对学生信息和权限登录学生成绩管理系统。 本系统关键包含注册管理、老师管理、学生信息查询、添加、修改、删除等部分。其功效关键有:(1)学生信息添加,包含输入学生基础信息和成绩。(2)学生信息查询,包含查询学生基础信息和成绩。(3)学生信息修改,包
3、含修改学生基础信息和成绩。(4)学生信息删除,包含修改学生基础信息和成绩。(5)登录用户密码修改,用户登录到系统可进行对应用户密码修改。(6)管理员用户对用户名管理,包含添加新用户、删除用户。 学生成绩管理系统是经典信息管理系统,其开发关键包含后台数据库建立和维护和前端应用程序开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好库。而对于后者则要求应用程序功效完备,易使用等特点。 经过分析,我们使用Microsoft企业开发工具,利用其提供多种面向对象开发工具,尤其是数据窗口这一能方便而简练操纵数据库智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不
4、停修正和改善,直到形成用户满意可行系统。1.2设计目标 多年来,伴随学校办学规模越来越大,在校学生数也日益增多,随之而来是教务管理工作日趋复杂繁重,要花费大量人力、物力,已愈来愈成为学校日常管理工作一个瓶颈。学生成绩管理是教务、教学管理中一个关键组成部分,也是比较烦琐工作。在学生成绩管理事务中,通常有成绩输入:对各年级各班各学期学生各科成绩进行输入;成绩统计:需要对每个学生成绩进行处理,比如排名次,成绩汇总,成绩升降;成绩报表:将学生成绩以报表形式输出等等。每次考试全部需要大量人力、物力,为了减轻学生成绩管理工作量和实现现代化科学管理,特设计这个系统。并依据学校实际情况,制订以下数据和功效需求
5、。 2 需求分析2.1 功效模块划分(1) 登录系统请求用户名及密码用户不存在或密码错误登录密码及用户类型验证用户存在且密码正确是否系统管理员?进入队员管理模块否是是进入后台管理模块操作结束?否是操作结束?是是退出系统 图2.1:程序步骤图 图2.2:功效模块划分图2.2 功效模块描述 功效需求:学生成绩管理系统关键提供方便高效管理功效和网上信息查阅平台,学生能够经过该系统查阅相关信息,管理员能够管理全部信息。对于本系统,我们需要实现以下部分基础功效:1 学生查询功效:为了方便学生查找成绩等信息,将全部信息根据需要进行分类。这么学生就能很方便找到自己需要信息。2 添加功效:管理员能够经过填写表
6、格形式输入学生成绩等相关信息。系统能够自动避免反复信息。3 修改功效:管理员能够对数据库中信息进行修改。系统能够经过管理员给出条件查找出所要修改信息,对修改后信息进行保留,并自动查找是否是反复信息。4 删除功效:管理员能够对数据进行删除操作。系统能够经过管理员给出条件查找出要删除信息,并提醒是否确定删除,假如确定删除,则把相关信息从数据库中删除掉。 5 管理员排序功效:管理员能够经过条件选择查询全部信息,并进行排序。性能需求分析:登录、用户界面需求:简练、易懂、易用、友好用户界面。安全保密性需求:只有凭借用户名和密码登陆系统,才能进行信息管理等。 登录模块 : 是用户能够进行多种操作必需前提。
7、输入项目:用户名、密码。输出项目:浏览区和基础资料区。程序逻辑:P1:检验用户名、密码和数据库是否吻合(完整性和一致性)。P2:产生提醒用户名或密码错误消息窗口;P3:用户确定后退出程序运行;P4:进入主窗体;P5:进入事件等候状态。功效编号A1功效名称登录功效调查者 A调查时间 B审核人 C功效描述用户(学生、老师、管理员)能够依据自己所也有权限进行不一样登陆界面登录,是用户能够进行多种操作必需前提。输入项用户名、密码。处理描述依据不一样权限进行不一样登陆界面,不一样操作。程序逻辑:1:检验用户名、密码和数据库是否吻合(完整性和一致性)。2:产生提醒用户名或密码错误消息窗口;3:用户确定后退
8、出程序运行;4:进入主窗体;5:进入事件等候状态。输出项浏览区和基础资料区。界面要求美观即可 表2.2.1登录模块表 成绩录入模块 关键功效用来对学生成绩进行搜集和修改。具体包含学生成绩录入、修改、增加、删除、查询、打印等功效,因为部分资料能够Word文档或Excel表格输入,故在此模块中增加了导入、导出数据功效。修改要和成绩录入相对应。增加、删除是对基础表操作。查询条件设置应该齐全,能够年级查询,也能够姓名查询,学号查询等等。查询模块 功效:完成查询功效。性能:对应时间应尽可能快。输入项目:要查询查询项。输出项目:查询项。程序逻辑:P1:进入查询窗体;P2:若用户取消,则返回;P3:取得查询
9、结果;P4:查询结果显示在主窗体上,并等候用户确定;P5:若查询结果项数等于零,返回。功效编号A1功效名称查询功效调查者 A调查时间 B审核人 C功效描述完成各个用户需求查询功效,性能对应时间应尽可能快。输入项要查询查询项。处理描述优异入查询窗体,依据不一样查询需求进行匹配查询,若用户取消,则返回;输出项所需要查询项。界面要求美观即可 表2.2.2查询模块表查询 不符合条件条件 满足条件 数据库显示结果退出 图2.2.1 查询模块步骤图修改模块 功效:完成修改功效。输入项目:多种修改。输出项目:修改后基础资料程序逻辑:P1:点击要修改表;P2:产生窗体;P3:等候用户修改。功效编号A1功效名称
10、修改功效调查者 A调查时间 B审核人 C功效描述完成各个用户不一样需求修改功效,性能响应时间应尽可能快。输入项多种修改项。处理描述对表格内容进行修改,若权限足够,则能够对其进行权限内修改,不然不可产生修改项输出项修改后基础资料界面要求美观即可 表2.2.3修改模块功效表登入成绩管理系统维护查找统计查找成功显示犯错信息修改增加统计继续?继续?退出 图2.2.2修改模块步骤图功效编号A5功效名称排序功效调查者 A调查时间6月1日审核人包先跃功效描述完成学生成绩升序排列功效,性能响应时间应尽可能快。输入项全部学生成绩。处理描述对学生成绩进行排序,若权限足够,则能够对其进行成绩排序,不然不可产生排序项
11、输出项修改后基础资料界面要求美观即可 表2.2.4 :排序功效模块 2.3数据字典和数据流图2.3.1数据流图图:2.3.1顶层数据流图图2.4.6学生数据流图12.4.7学生数据流图22.3.2数据字典 数据元素系统名:学生成绩管理系统 别名:the Student result management system条目名1:学生成绩 条目名2:用户信息 属于数据流 学生成绩信息和用户信息 存放处 SQL Server 20R2数据库中学生成绩表和用户信息表数据元素组成: 1.学生成绩=学号+姓名+课程名+分数 数据元素详述:1)学号:唯一标识某一用户元素。2)姓名:这一元素在一定情形下可唯一
12、标识某一学生,但通常和学号一起来作为主键。 3)课程名:当要查询某一学生所学习课程时,先找到其学号然后就能够找到她(她)所学习课程名。4)分数:这一元素单独存在时无实际意义,作为学生成绩时,必需知晓学生学号、姓名、课程名。 2.用户信息=用户名+密码+类别+科目数据元素详述:1)用户名:唯一标识某一用户元素。2)密码:系统登录时通行证。3)类别:由学生、老师、管理员三个类别组成,而这三个类别又有着其各自功效。4)科目:学生作为一个一般用户,科目为空,因为她(她)只能查询自己成绩,是一个被动者,故不一样科目对于该用户本身无实际意义;老师拥有添加用户、成绩等功效,这多个功效就包含到科目,故在数据库
13、添加老师用户时就要强调科目;管理员作为整个系统管理者,拥有最高权限,但她(她)只需要添加或删除用户来达成管理系统目标即可。修改统计:编写陈立阳日期5月25日 审核 包先跃日期6月14日表2.3.1数据元素 数据流系统名:学生成绩管理系统 别名:the Student result management system 条目名1:查询个人成绩 条目名2:添加基础信息 条目名3:删除基础信息 条目名4:修改基础信息 条目名5:排序 起源: 成绩信息表和用户信息表去处: 成绩信息表和用户信息表数据结构: 查询个人成绩:为了方便学生查找成绩等信息,将全部信息根据需要进行分类。 添加基础信息:管理员经过该
14、数据流添加用户,老师经过该数据流添加学生成绩。 删除基础信息:管理员经过该数据流删除用户。 修改基础信息:老师经过该数据流能够修改密码、成绩等监本信息。 排序:老师拥有管理成绩权限,所以能够对成绩进行排序。修改统计:编写陈立阳日期5月25日 审核包先跃日期6月14日 表2.3.2数据流 数据存放系统名:学生成绩管理系统 别名:the Student result management system 条目名:成绩、用户 存放组织:每一个学生(按学号)拥有一条统计、每一用户(按用户名)拥有一条统计统计数:大约10000(尽可能大而且符合实际)主关键字:学号、用户名统计组成: 成绩:学号+姓名+课程
15、名+分数 用户:用户名+密码+类别+科目简明说明:该系统关键包含成绩信息表和用户信息表。修改统计:编写陈立阳日期5月25日 审核包先跃日期6月14日表2.3.3:数据存放 加工系统名:学生成绩管理系统 别名:the Student result management system 输入:用户名、密码输出:用户基础信息窗口和功效窗口输入:要查找内容输出:所查到相关内容(一行或多行统计)输入:要修改内容 输出:修改后内容(一次修改一条统计)输入:要添加或删除用户名输出:创建成功或成功删除加工逻辑:1)依据不一样权限进行不一样登陆界面,不一样操作。程序逻辑:1:检验用户名、密码和数据库是否吻合(完整
16、性和一致性)。2:产生提醒用户名或密码错误消息窗口;3:用户确定后退出程序运行;4:进入主窗体;5:进入事件等候状态。2)进入查询窗口选择查询方法,然后输入对应内容,经过点击查找按钮得到结果。3)对表格内容进行修改,若权限足够,则能够对其进行权限内修改,不然不可产生修改项。4)添加新用户时经过输入数据项然后和数据库连接将新用户加载到数据库中,删除用户经过从数据库中读取用户信息然后删除用户。简明说明:数据加工是为了让用户对整个系统功效实现有一个愈加深入认识。修改统计:编写陈立阳日期5月25日 审核包先跃日期6月14日 表2.3.4数据加工3 概要设计3.1 软件功效结构 图3.1.1系统功效步骤
17、图 4 具体设计4.1数据库设计本系统数据库是SQL server数据库,在SQL环境下创建数据库学生成绩管理系统.mdf文件。该数据库包含学生成绩表、用户登录表用于纪录学生基础信息数据库表结构以下所表示:4.0.1 各表物理结构表4.0.1 学生成绩表表4.0.2 用户登录表4.0.2数据库连接代码private void button1_Click(object sender, EventArgs e) string str = Data Source=(local);Initial Catalog=学生成绩管理系统;Integrated Security=True; /数据库连接字符串,
18、.表示本机服务器DataBase为表名,Integrated Security=True是采取windows身份验证方法登录 SqlConnection conn = new SqlConnection(connStr); /依据连接字符串,新建数据库连接 string sqlStr = select * from student1; /查询student1表查询语句 SqlCommand cmd = new SqlCommand(sqlStr, conn); /依据查询语句和数据库连接,等到查询命令对象 SqlDataReader reader = cmd.ExecuteReader();/
19、从查询命令对象中取得一个读取数据库数据对象 while (reader.Read() /循环读取下一行数据,假如下一行没有数据返回false string id = readerid.ToString();/依据列名取得数据 string name = readername.ToString(); string sex = readersex.ToString(); MessageBox.Show(string.Format(id=0,name=1,sex=2, id, name, sex); 4.2界面设计要求 用于输入用户名和密码登录,选择对应用户类型进入系统,若是用户类型选择错误则不能进
20、入系统。输入用户名和密码后点击确定判定数据库中用户是否为正当用户。图4.1.1登录界面设计代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace 学生成绩管理系统 public partial class Login : Form static public
21、 string sn,sub; public Login() InitializeComponent(); Form2 fr2 = new Form2(); Form3 fr3 = new Form3(); Form4 fr4 = new Form4();/创建新窗体 private void Login_Load(object sender, EventArgs e) timer1.Start(); / Timer控件 private void btnlogin_Click(object sender, EventArgs e) /Password=bxy;Persist Security
22、Info=True;User ID=bxy;Initial Catalog=学生成绩管理系统;Data Source=(local) string str = Data Source=(local);Initial Catalog=学生成绩管理系统;Integrated Security=True; / string str = Password=bxy;Persist Security Info=True;User ID=bxy;Initial Catalog=学生成绩管理系统;Data Source=PC-12051504; SqlConnection conn = new SqlConn
23、ection(str);/连接数据库 conn.Open(); if( txtname .Text=|txtpassword .Text=) MessageBox.Show (请不要遗漏信息!); if (rbtnmanager.Checked) string cstr=select * from 用户登录 where 类别=管理员and 用户名=+txtname.Text.Trim ()+and 密码=+txtpassword .Text.Trim ()+; SqlCommand comm=new SqlCommand (cstr,conn ); SqlDataReader dr=comm.
24、ExecuteReader (); if (dr.Read() sn = txtname.Text.Trim(); fr4.Show(); this.Visible = false; else MessageBox.Show(输入有误,请重新输入!); txtname.Text = ; txtpassword.Text = ; if (rbtnteacher.Checked) string cstr = select * from 用户登录 where 类别=老师and 用户名= + txtname.Text.Trim() + and 密码= + txtpassword.Text.Trim()
25、 + ; SqlCommand comm = new SqlCommand(cstr, conn); SqlDataReader dr = comm.ExecuteReader(); if (dr.Read() sn = txtname.Text.Trim(); sub = dr.GetValue(3).ToString (); fr3.Show(); this.Visible = false; else MessageBox.Show(输入有误,请重新输入!); txtname.Text = ; txtpassword.Text = ; if (rbtnstudent.Checked) st
26、ring cstr = select * from 用户登录 where 类别=学生and 用户名= + txtname.Text.Trim() + and 密码= + txtpassword.Text.Trim() + ; SqlCommand comm = new SqlCommand(cstr, conn); SqlDataReader dr = comm.ExecuteReader(); if (dr.Read() sn = txtname.Text.Trim();fr2.Show(); this.Visible=false ; else MessageBox.Show(输入有误,请重
27、新输入!); txtname.Text = ; txtpassword.Text = ; conn.Close(); conn.Dispose(); private void button2_Click(object sender, EventArgs e) Application.Exit(); private void timer1_Tick(object sender, EventArgs e) label1.Text = 目前时间为: +DateTime.Now .ToLongDateString() + +DateTime.Now.ToLongTimeString(); privat
28、e void txtname_TextChanged(object sender, EventArgs e) private void txtpassword_TextChanged(object sender, EventArgs e) private void rbtnmanager_CheckedChanged(object sender, EventArgs e) private void rbtnteacher_CheckedChanged(object sender, EventArgs e) 4.3学生成绩管理界面设计 此部分关键针对学生信息管理,能够查询学生全部成绩信息,实现成
29、绩添加、删除、修改、计算平均分等功效。还能够修改目前用户下密码。图4.1.2学生成绩管理界面按模块写出具体设计说明表、按程序窗口写出对象说明表设计代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace 学生成绩管理系统 public partial clas
30、s Form2 : Form public Form2() InitializeComponent(); private void Form2_Load(object sender, EventArgs e) label1.Text = Login.sn + 同学,欢迎您使用本成绩管理系统!;/用窗体掉用静态变量 timer1.Start(); groupBox1.Visible = false; groupBox2.Visible = false; private void button1_Click(object sender, EventArgs e) private void butt
31、on3_Click(object sender, EventArgs e) /string str = Password=bxy;Persist Security Info=True;User ID=bxy;Initial Catalog=学生成绩管理系统;Data Source=(local); /SqlConnection conn = new SqlConnection(str); /conn.Open(); /SqlDataAdapter da = new SqlDataAdapter(Select * from 学生成绩表 where 姓名=+textBox1 .Text , con
32、n); /DataSet ds = new DataSet(); /da.Fill(ds, usertable); /dataGridView1.DataSource = ; private void toolStripButton1_Click(object sender, EventArgs e) string str = Data Source=(local);Initial Catalog=学生成绩管理系统;Integrated Security=True; SqlConnection conn = new SqlConnection(str); conn.Open(); SqlDat
33、aAdapter da = new SqlDataAdapter(Select * from 学生成绩表 where 姓名= + Login.sn.Trim ()+,conn);/具体信息 DataSet ds = new DataSet(); da.Fill(ds, usertable); dataGridView1.DataSource = ds.Tablesusertable.DefaultView; conn.Close(); conn.Dispose(); private void toolStripButton2_Click(object sender, EventArgs e)
34、private void toolStripButton4_Click(object sender, EventArgs e) groupBox1.Visible = true; private void button1_Click_1(object sender, EventArgs e) string str = Data Source=(local);Initial Catalog=学生成绩管理系统;Integrated Security=True; SqlConnection conn = new SqlConnection(str); conn.Open(); if (txtnpd.Text != txtnpassword.Text) MessageBox.Show(请确定信密码正确性!); if (txtnpd.Text =& txtnpassword.Text = ) MessageBox.Show(密码不许可为空!); if (txtnpd.Text = txtnpassword.Text & txtnpd.Text!= ) SqlCommand com = new SqlCommand(update 用户登录 set 密码