资源描述
课程汇报说明书
课 程 名 称: 软件工程
系 统 名 称: 学生成绩管理系统
年级/专业/班: 12软件工程班
学 生 姓 名: 吕 鹏 飞
学 号: 40450104
指 导 教 师: 余 钢
课程考评成绩:
系统开发(代码质量、完成度、规范性)(30)
创新性(10)
说明书撰写(规范性、图表、汇报内容)(60)
总 分(100)
年 6 月 6 日
目 录
1 序言 1
1.1系统介绍 1
1.2设计目标 1
2 需求分析 2
2.1 功效模块划分 2
2.2 功效模块描述 3
2.3数据字典和数据流图 8
3 概要设计 14
3.1 软件功效结构 14
4 具体设计 15
4.1数据库设计 15
4.2界面设计要求 16
4.3学生成绩管理界面设计 19
4.4老师管理界面设计 24
4.5管理员界面设计 30
5 实现 35
5.1 实现环境 35
5.2 语言选择 35
6 测试分析 36
总 结 40
参考文件 41
1 序言
1.1系统介绍
本系统关键用于学校学生信息管理,总体任务是实现学生信息关系系统化、规范化和自动化,其关键任务是用计算机对学生信息进行日常管理,如查询、修改 、增加、删除,另外还考虑到用户登录权限,针对学生信息和权限登录学生成绩管理系统。
本系统关键包含注册管理、老师管理、学生信息查询、添加、修改、删除等部分。其功效关键有:
(1)学生信息添加,包含输入学生基础信息和成绩。
(2)学生信息查询,包含查询学生基础信息和成绩。
(3)学生信息修改,包含修改学生基础信息和成绩。
(4)学生信息删除,包含修改学生基础信息和成绩。
(5)登录用户密码修改,用户登录到系统可进行对应用户密码修改。
(6)管理员用户对用户名管理,包含添加新用户、删除用户。
学生成绩管理系统是经典信息管理系统,其开发关键包含后台数据库建立和维护和前端应用程序开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好库。而对于后者则要求应用程序功效完备,易使用等特点。
经过分析,我们使用Microsoft企业开发工具,利用其提供多种面向对象开发工具,尤其是数据窗口这一能方便而简练操纵数据库智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不停修正和改善,直到形成用户满意可行系统。
1.2设计目标
多年来,伴随学校办学规模越来越大,在校学生数也日益增多,随之而来是教务管理工作日趋复杂繁重,要花费大量人力、物力,已愈来愈成为学校日常管理工作一个瓶颈。学生成绩管理是教务、教学管理中一个关键组成部分,也是比较烦琐工作。在学生成绩管理事务中,通常有成绩输入:对各年级各班各学期学生各科成绩进行输入;成绩统计:需要对每个学生成绩进行处理,比如排名次,成绩汇总,成绩升降;成绩报表:将学生成绩以报表形式输出等等。每次考试全部需要大量人力、物力,为了减轻学生成绩管理工作量和实现现代化科学管理,特设计这个系统。并依据学校实际情况,制订以下数据和功效需求。
2 需求分析
2.1 功效模块划分
(1)
登录系统
请求用户名及密码
用户不存在或密码错误
登录密码及用户类型验证
用户存在且密码正确
是否系统管理员?
进入队员管理模块
否
是
是
进入后台管理模块
操作结束?
否
是
操作结束?
是
是
退出系统
图2.1:程序步骤图
图2.2:功效模块划分图
2.2 功效模块描述
功效需求:
学生成绩管理系统关键提供方便高效管理功效和网上信息查阅平台,学生能够经过该系统查阅相关信息,管理员能够管理全部信息。对于本系统,我们需要实现以下部分基础功效:
1 学生查询功效:为了方便学生查找成绩等信息,将全部信息根据需要进行分类。这么学生就能很方便找到自己需要信息。
2 添加功效:管理员能够经过填写表格形式输入学生成绩等相关信息。系统能够自动避免反复信息。
3 修改功效:管理员能够对数据库中信息进行修改。系统能够经过管理员给出条件查找出所要修改信息,对修改后信息进行保留,并自动查找是否是反复信息。
4 删除功效:管理员能够对数据进行删除操作。系统能够经过管理员给出条件查找出要删除信息,并提醒是否确定删除,假如确定删除,则把相关信息从数据库中删除掉。
5 管理员排序功效:管理员能够经过条件选择查询全部信息,并进行排序。
性能需求分析:
登录、用户界面需求:简练、易懂、易用、友好用户界面。
安全保密性需求:只有凭借用户名和密码登陆系统,才能进行信息管理等。
登录模块 :
是用户能够进行多种操作必需前提。
输入项目:用户名、密码。
输出项目:浏览区和基础资料区。
程序逻辑:
P1:检验用户名、密码和数据库是否吻合(完整性和一致性)。
P2:产生提醒用户名或密码错误消息窗口;
P3:用户确定后退出程序运行;
P4:进入主窗体;
P5:进入事件等候状态。
功效编号
A1
功效名称
登录功效
调查者
A
调查时间
B
审核人
C
功效描述
用户(学生、老师、管理员)能够依据自己所也有权限进行不一样登陆界面登录,是用户能够进行多种操作必需前提。
输入项
用户名、密码。
处理描述
依据不一样权限进行不一样登陆界面,不一样操作。程序逻辑:1:检验用户名、密码和数据库是否吻合(完整性和一致性)。2:产生提醒用户名或密码错误消息窗口;3:用户确定后退出程序运行;4:进入主窗体;5:进入事件等候状态。
输出项
浏览区和基础资料区。
界面要求
美观即可
表2.2.1登录模块表
成绩录入模块
关键功效用来对学生成绩进行搜集和修改。具体包含学生成绩录入、修改、增加、删除、查询、打印等功效,因为部分资料能够Word文档或Excel表格输入,故在此模块中增加了导入、导出数据功效。。修改要和成绩录入相对应。增加、删除是对基础表操作。查询条件设置应该齐全,能够年级查询,也能够姓名查询,学号查询等等。
查询模块
功效:完成查询功效。
性能:对应时间应尽可能快。
输入项目:要查询查询项。
输出项目:查询项。
程序逻辑:
P1:进入查询窗体;
P2:若用户取消,则返回;
P3:取得查询结果;
P4:查询结果显示在主窗体上,并等候用户确定;
P5:若查询结果项数等于零,返回。
功效编号
A1
功效名称
查询功效
调查者
A
调查时间
B
审核人
C
功效描述
完成各个用户需求查询功效,性能对应时间应尽可能快。
输入项
要查询查询项。
处理描述
优异入查询窗体,依据不一样查询需求进行匹配查询, 若用户取消,则返回;
输出项
所需要查询项。
界面要求
美观即可
表2.2.2查询模块表
查询
不符合条件
条件
满足条件
数据库
显示结果
退出
图2.2.1 查询模块步骤图
修改模块
功效:完成修改功效。
输入项目:多种修改。
输出项目:修改后基础资料
程序逻辑:
P1:点击要修改表;
P2:产生窗体;
P3:等候用户修改。
功效编号
A1
功效名称
修改功效
调查者
A
调查时间
B
审核人
C
功效描述
完成各个用户不一样需求修改功效,性能响应时间应尽可能快。
输入项
多种修改项。
处理描述
对表格内容进行修改,若权限足够,则能够对其进行权限内修改,不然不可产生修改项
输出项
修改后基础资料
界面要求
美观即可
表2.2.3修改模块功效表
登入成绩管理系统
维护
查找统计
查找成功
显示犯错信息
修改增加统计
继续?
继续?
退出
图2.2.2修改模块步骤图
功效编号
A5
功效名称
排序功效
调查者
A
调查时间
6月1日
审核人
包先跃
功效描述
完成学生成绩升序排列功效,性能响应时间应尽可能快。
输入项
全部学生成绩。
处理描述
对学生成绩进行排序,若权限足够,则能够对其进行成绩排序,不然不可产生排序项
输出项
修改后基础资料
界面要求
美观即可
表2.2.4 :排序功效模块
2.3数据字典和数据流图
2.3.1数据流图
图:2.3.1顶层数据流图
图2.4.6学生数据流图1
2.4.7学生数据流图2
2.3.2数据字典
数据元素
系统名:学生成绩管理系统 别名:the Student result management system
条目名1:学生成绩 条目名2:用户信息
属于数据流
学生成绩信息和用户信息
存放处
SQL Server 20R2数据库中学生成绩表和用户信息表
数据元素组成:
1.学生成绩=学号+姓名+课程名+分数
数据元素详述:
1)学号:唯一标识某一用户元素。
2)姓名:这一元素在一定情形下可唯一标识某一学生,但通常和学号一起来作为主键。
3)课程名:当要查询某一学生所学习课程时,先找到其学号然后就能够找到她(她)所学习课程名。
4)分数:这一元素单独存在时无实际意义,作为学生成绩时,必需知晓学生学号、姓名、课程名。
2.用户信息=用户名+密码+类别+科目
数据元素详述:
1)用户名:唯一标识某一用户元素。
2)密码:系统登录时通行证。
3)类别:由学生、老师、管理员三个类别组成,而这三个类别又有着其各自功效。
4)科目:学生作为一个一般用户,科目为空,因为她(她)只能查询自己成绩,是一个被动者,故不一样科目对于该用户本身无实际意义;老师拥有添加用户、成绩等功效,这多个功效就包含到科目,故在数据库添加老师用户时就要强调科目;管理员作为整个系统管理者,拥有最高权限,但她(她)只需要添加或删除用户来达成管理系统目标即可。
修改统计:
编写
陈立阳
日期
5月25日
审核
包先跃
日期
6月14日
表2.3.1数据元素
数据流
系统名:学生成绩管理系统 别名:the Student result management system
条目名1:查询个人成绩 条目名2:添加基础信息 条目名3:删除基础信息 条目名4:修改基础信息 条目名5:排序
起源:
成绩信息表和用户信息表
去处:
成绩信息表和用户信息表
数据结构:
查询个人成绩:为了方便学生查找成绩等信息,将全部信息根据需要进行分类。
添加基础信息:管理员经过该数据流添加用户,老师经过该数据流添加学生成绩。
删除基础信息:管理员经过该数据流删除用户。
修改基础信息:老师经过该数据流能够修改密码、成绩等监本信息。
排序:老师拥有管理成绩权限,所以能够对成绩进行排序。
修改统计:
编写
陈立阳
日期
5月25日
审核
包先跃
日期
6月14日
表2.3.2数据流
数据存放
系统名:学生成绩管理系统 别名:the Student result management system
条目名:成绩、用户
存放组织:每一个学生(按学号)拥有一条统计、每一用户(按用户名)拥有一条统计
统计数:大约10000
(尽可能大而且符合实际)
主关键字:学号、用户名
统计组成:
成绩:学号+姓名+课程名+分数
用户:用户名+密码+类别+科目
简明说明:该系统关键包含成绩信息表和用户信息表。
修改统计:
编写
陈立阳
日期
5月25日
审核
包先跃
日期
6月14日
表2.3.3:数据存放
加工
系统名:学生成绩管理系统 别名:the Student result management system
输入:
用户名、密码
输出:
用户基础信息窗口和功效窗口
输入:
要查找内容
输出:
所查到相关内容(一行或多行统计)
输入:
要修改内容
输出:
修改后内容(一次修改一条统计)
输入:
要添加或删除用户名
输出:
创建成功或成功删除
加工逻辑:
1)依据不一样权限进行不一样登陆界面,不一样操作。程序逻辑:1:检验用户名、密码和数据库是否吻合(完整性和一致性)。2:产生提醒用户名或密码错误消息窗口;3:用户确定后退出程序运行;4:进入主窗体;5:进入事件等候状态。
2)进入查询窗口选择查询方法,然后输入对应内容,经过点击查找按钮得到结果。
3)对表格内容进行修改,若权限足够,则能够对其进行权限内修改,不然不可产生修改项。
4)添加新用户时经过输入数据项然后和数据库连接将新用户加载到数据库中,删除用户经过从数据库中读取用户信息然后删除用户。
简明说明:数据加工是为了让用户对整个系统功效实现有一个愈加深入认识。
修改统计:
编写
陈立阳
日期
5月25日
审核
包先跃
日期
6月14日
表2.3.4数据加工
3 概要设计
3.1 软件功效结构
图3.1.1系统功效步骤图
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"; //数据库连接字符串,.表示本机服务器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();//从查询命令对象中取得一个读取数据库数据对象
while (reader.Read()) //循环读取下一行数据,假如下一行没有数据返回false
{
string id = reader["id"].ToString();//依据列名取得数据
string name = reader["name"].ToString();
string sex = reader["sex"].ToString();
MessageBox.Show(string.Format("id={0},name={1},sex={2}", id, name, sex));
}
}
4.2界面设计要求
用于输入用户名和密码登录,选择对应用户类型进入系统,若是用户类型选择错误则不能进入系统。输入用户名和密码后点击确定判定数据库中用户是否为正当用户。
图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 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 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 SqlConnection(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.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() + "'";
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)
{
string 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("输入有误,请重新输入!");
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();
}
private 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学生成绩管理界面设计
此部分关键针对学生信息管理,能够查询学生全部成绩信息,实现成绩添加、删除、修改、计算平均分等功效。还能够修改目前用户下密码。
图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 class 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 button3_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 , conn);
//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();
SqlDataAdapter da = new SqlDataAdapter("Select * from 学生成绩表 where 姓名='" + Login.sn.Trim ()+"'",conn);//————具体信息
DataSet ds = new DataSet();
da.Fill(ds, "usertable");
dataGridView1.DataSource = ds.Tables["usertable"].DefaultView;
conn.Close(); conn.Dispose();
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
}
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 密码
展开阅读全文