软件工程项目学生管理系统

软件工程项目

学生管理系统

专业: 姓名: 年级: 学号 :

目录
1 设计任务与目的 3
1.1 项目计划 3
2 需求分析 3
2.1用例图 5
2.1.1 学生用例图 5
2.1.2 教师用例图 6
2.1.3 管理员用例图 6
2.2类图 7
2.3 顺序图 7
2.31 管理员修改课程信息顺序图 7
2.32 学生用户退选课的顺序图 8
2.33 教师提交成绩顺序图 8
2.4 协作图 9
2.41 学生用户选课协作图 9
2.42 教师提交成绩协作图 10
2.43 学生查询成绩协作图 10
2.5运行环境规定 10
2.51设备 10
3 系统设计 11
3.1 设计子系统 11
3.11总体设计图 11
3.12各模块功能 11
3.2数据库表结构 12
3.21学生表Student的详细数据字段 12
3.22教师表Teacher的详细数据字段 12
3.23课程表Course的详细数据字段 12
3.24选课表Elect的详细数据字段 13
3.25系统管理员表Users的详细数据字段 13
3.26系院表Depart的详细数据字段 13
3.3 设计人机交互子系统 13
3.31用户分类 13
3.32用户描述 13
3.33设计命令层次 14
4详细设计 14
4.1系统用户登录流程图 15
4.2 用户密码修改流程图 15
4.3教师提交成绩流程图 16
4.4管理员添加课程流程图 16
4.5学生选修课程流程图 17
4.6查询成绩流程图 17
5系统实现 17
5.1 登录界面 18
5.2 教师提交成绩界面 18
5.3 学生查询成绩和选课界面 18
5.4 管理员登录界面 19
6系统测试 19
7 总结 20
8 附录(主要程序代码) 20

1 设计任务与目的
《软件工程》课程是本专业中实践性非常强的一门课程。本课程的目的是培养软件工程应用能力。软件工程实践是《软件工程》课程的后继教学环节,是一个重要的、不可或缺的实践环节。其目的是使学生能够针对具体软件工程项目,全面掌握软件工程管理、软件需求分析、软件设计、软件测试等阶段的方法和技术,通过该实践课程使学生进一步理解和掌握软件开发模型、软件生命周期、软件过程等理论在软件项目开发过程中的意义和作用,培养学生按照软件工程的原理、方法、技术、标准和规范,进行软件开发的能力,培养学生的合作意识和团队精神,培养学生对技术文档的编写能力,从而使学生提高软件工程的综合能力,提高软件项目的管理能力。
1.1 项目计划

2 需求分析
学生管理系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户,也即是三类用户角色。
(1)学生用户是主要的需求者,主要需求功能是查询成绩、查看自己选课情况及进行选课、退课操作等;
(2)教师用户主要需求功能是提交成绩、查询学生成绩、查看自己所教授的课程、课程有哪些学生选修;
(3)管理员用户的功能需求较为复杂,包括对学生信息、教师信息、课程信息进行管理。在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。在教师管理子模块中,实现对教师信息的添加、修改、删除、查询等操作。在课程管理子模块中,实现对课程信息的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除、查看某个课程的详细信息等。
本系统将管理员用户、教师用户、学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加学生,添加课程,修改课程信息等;让教师拥有查看自己开设的课程的信息,以及提交所开设课程成绩的权限;让学生拥有查询成绩、选课和退选的权限;而修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。

表2-1 查询成绩用例的事件流图
用例名称 查询成绩
参与者 教师、学生
描述 学习可查看自己所有课程成绩,教师可查询自己所教的课程的所有学生成绩
启动 学生登录点击“成绩管理”链接,教师点击“查询成绩”
前置条件 用户登录成功
主流事件
用户 系统
•学生进入成绩管理界面,显示自己的所有选课成绩。
教师进入成绩管理界面,查看所授课程的学生成绩
2、系统显示查询成绩结果

表2-2 修改密码用例的正常事件流图和异常事件流图
用例名称 修改密码
参与者 管理员、教师、学生
描述 管理员、教师、学生用户进行密码修改
启动 单击“修改密码”链接
前置条件 用户成功登录
主事件流
用户 系统
1.进入用户修改密码界面,输入旧密码一次,新密码两次(起到验证作用)
2.系统检查密码格式是否相符
3.系统检查旧密码是否正确
4.如果正确,进行密码修改,转入密码修改成功界面
异常流
异常流 密码检查未通过
系统 返回密码修改界面,提示旧密码不正确,新密码格式不符,两次不同等密码
异常 用户旧密码错误

表2-3 提交成绩用例的正常事件流图和异常事件流图
用例名称 提交成绩用例
参与者 教师用户
描述 提交选自己开设课程的学生的成绩
启动 进入提交成绩界面
前置条件 用户成功登录
后置条件 尚未提交过成绩
主事件流
用户 系统
1.单击提交成绩
2.系统提交成绩页面
3.填写学生成绩,单击提交成绩
5.更新学生成绩,提示提交成功
异常流
异常流 用户已经提交过该门课程成绩
系统 提示该课程成绩已提交,不能再次提交
2.1用例图
2.1.1 学生用例图

2.1.2 教师用例图

2.1.3 管理员用例图

2.2类图

2.3 顺序图

2.31 管理员修改课程信息顺序图

图2-3 管理员修改课程信息顺序图

2.32 学生用户退选课的顺序图

图2-4 学生用户退选课的顺序图

2.33 教师提交成绩顺序图

图2-5 教师提交成绩顺序图
2.4 协作图

2.41 学生用户选课协作图

2-6 学生用户选课协作图

2.42 教师提交成绩协作图

2.43 学生查询成绩协作图

2.5运行环境规定
2.51设备
处理器: AMD4800+以上 数据库系统: SQL Server2000
内存: 256M以上 开发工具: Visual Studio 2005
Web服务器: IIS+ASP.NET 2.0平台
3 系统设计
3.1 设计子系统
学生管理系统是实现学生成绩查询、选课退课、教师提交成绩以及学校教务管理员维护信息的一个平台,整个学生选课系统有前台和后台两部分,共分为4个模块:管理员模块,教师模块,学生模块和公有模块,分别用于完成各自的功能。以下为学生选课系统总体设计图和各功能模块说明:
3.11总体设计图

3.12各模块功能
表3-1 学生选课系统功能模块表
功能模块 包含子功能模块 功能
管理员模块 学生管理子模块 对学生信息的添加、修改,删除操作
教师管理子模块 对教师的添加,修改,删除,查询操作
课程管理子模块 对课程的添加,添加时为其分配任课教师,上课时间和地点,实现对课程的修改,删除,查看某个课程的详细信息等
教师模块 实现查看自己所教授的课程,课程有哪些学生选修、各学生的成绩以及利用本系统提交学生的成绩
学生模块 实现学生选课,查询成绩,查看所选课程,修改自己的选课信息
公有模块 实现用户的身份验证,密码修改,退出系统等功能
3.2数据库表结构
3.21学生表Student的详细数据字段
表3-3 Student学生用户表
序号 字段名 字段类型 说明 备注
1 stuID nvarchar(20)not null 学生学号 主键
2 stuPwd nvarchar(20)not nul 学生密码
3 stuName nvarchar(20)not nul 学生姓名
4 stuDepart Int 学生系院号
5 stuGrade int 学生年级
6 stuClass int 学生班级

3.22教师表Teacher的详细数据字段
表3-4 Teacher教师用户表
序号 字段名 字段类型 说明 备注
1 teaID nvarchar(20)not null 教师编号 关键字
2 teaPwd nvarchar(20)not null 教师密码
3 teaName nvarchar(100)not null 教师姓名
4 teaDepart Int(4) 教师系院号
3.23课程表Course的详细数据字段
表3-5 Cource课程信息表
序号 字段名 字段类型 说明 备注
1 courseID nvarchar(20)not null 课程编号 关键字
2 teaID nvarchar(20)not null 教师编号 关键字
3 courseName nvarchar(100) not null 课程名称
4 courseTime nvarchar(20) 上课时间
5 courseAddress nvarchar(50) 上课地点
6 courseInfo Text 课程简介
3.24选课表Elect的详细数据字段
表3-6 Elect选课信息表
序号 字段名 字段类型 说明 备注
1 stuID nvarchar(20)not null 学生学号 关键字
2 courseID nvarchar(20)not null 课程编号 关键字
3 teaID nvarchar(20)not null 教师编号 关键字
4 Score int 课程成绩
3.25系统管理员表Users的详细数据字段
表3-7 Users管理员表
序号 字段名 字段类型 说明 备注
1 adminName nvarchar(20)not null 系统管理员用户名 关键字
2 adminPwd nvarchar(20) 系统管理员密码
3.26系院表Depart的详细数据字段
表3-8 Depart系院表
序号 字段名 字段类型 说明 备注
1 departID Int not null 系院号 关键字
2 departName nvarchar(100) 系院名称
3.3 设计人机交互子系统
3.31用户分类
本系统的用户可分为三类:
(1) 管理员用户;
(2) 教师用户;
(3) 学生用户。
3.32用户描述
(1)管理员用户的描述:
管理员用户在整个选课系统中起到管理和维护的作用,对学生和教师的信息进行管理和维护以及开设课设等职责。
(2) 教师用户的描述:
教师用户在本系统中具有管理选修了自己开设的课程的学生的权限,查看选修了自己开设课程的学生信息、成绩以及提交学生成绩。
(3)学生用户的描述:
选课系统主要是针对管理学生的,学生在本系统中具有修改自己的信息,查看自己的成绩以及选课和退选的功能。
3.33设计命令层次
①系统的人机交互子系统的内容和准则:
本学生选课系统的人机交互子系统在根据不同的用户身份登陆到不同的页面,然后按照不同的用户只能进行用户权限内的操作,其结构图如下:

②通过采用树形结构,细化命令的组织方式,如下:

4详细设计
学生选课系统是实现学生网上查询成绩、选课,教师查询成绩、提交成绩以及学校教务管理员维护信息的一个平台,整个学生选课系统共分为4个大模块:管理员模块,教师模块,学生模块和公有模块,其中复杂的方法和模块的详细设计流程图如下。
4.1系统用户登录流程图

4.2 用户密码修改流程图

4.3教师提交成绩流程图

4.4管理员添加课程流程图

4.5学生选修课程流程图

4.6查询成绩流程图

5系统实现
本系统采用了三层架构来实现,即分为用户界面层(UI)、业务逻辑层(BLL)和数据访问层(DAL),用户界面层是展示给用户的界面,方便用户与系统进行交互;业务逻辑层是对系统业务实体的封装,完成系统业务功能;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操作。
5.1 登录界面

图5-1系统登录页面
5.2 教师提交成绩界面

5.3 学生查询成绩和选课界面

5.4 管理员登录界面

6系统测试
在系统测试中,我们首先对各个子模块进行单元测试,即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。然后在完成所有模块后,我们将各子模块集成起来,再对它进行系统测试,找出系统设计或编码上的错误,以及验证系统是否实现了指定的功能。最后找几个其他的同学再对系统进行黑盒子测试,验证系统是否满足用户的功能需求。
在测试的过程,特别是在集成测试之后,发现了许多问题及功能缺陷,最后经过修改调试后都解决了。比如,有一个问题是,在删除教师用户之后,系统里还剩有许多与该教师有关的冗余记录,造成系统混乱。在进行了分析之后,发现是因为在删除教师用户时,没有对与他所关联的记录进行删除造成的,在添加了对其关联记录的级联删除之后,问题得到了解决。
7 总结
•通过这次软件工程课程设计的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
•学习和实践了分析和设计软件系统的各种知识,包括面向对象的系统分析与设计,编码和测试方面的知识。
•加深掌握了.Net平台的三层架构模式设计。
•进一步加强和提高软件工程文档的编写能力。
•增强了协作能力和团队精神。
•本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如界面不太美观,操作性不太友好等。
8 附录(主要程序代码)
参考文献:《软件工程》、《.net开发实例》、《SQL server实用教程》
Database类主要是与数据库连接,提供数据库操作功能代码
namespace MyElectCourse.DAL
{
public class Database
{
protected string connectionString;
protected SqlConnection connection = null;
public Database()
{
connectionString = ConfigurationManager.ConnectionStrings[“ConnectionString”].ConnectionString.ToString();
}
~Database()
{
if (connection != null)
{
connection = null;
}
}
protected void Open()
{
if (connection == null)
{
connection = new SqlConnection(connectionString);
}
if (connection.State.Equals(ConnectionState.Closed))
{
connection.Open();
}
}
protected void Close()
{
if (connection != null)
{
connection.Close();
}
}
public int ExecuteSQL(string sqlstr)
{
int count = -1;
this.Open();
SqlCommand cmd = new SqlCommand(sqlstr, connection);
count = cmd.ExecuteNonQuery();
this.Close();
return count;
}
public DataSet GetDataSet(string sqlstr)
{
this.Open();
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(sqlstr,connection);
adapter.Fill(ds);
this.Close();
return ds;
}
public DataTable GetDataTable(string sqlstr)
{
DataSet ds = this.GetDataSet(sqlstr);
DataTable dt = new DataTable();
if (ds.Tables.Count > 0)
{
dt = ds.Tables[0];
}
return dt;
}
public SqlDataReader GetDataReader(string sqlstr)
{
this.Open();
SqlCommand cmd = new SqlCommand(sqlstr, connection);
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//this.Close();
return sdr;
}
}
}
UserBase类是所有系统角色用户的基类,完成用户登录验证与修改密码的功能代码
namespace MyElectCourse.BLL
{
public class UserBase
{
private string userID;
public string UserID
{
get { return userID; }
set { userID = value; }
}
private string userPSW;
public string UserPSW
{
get { return userPSW; }
set { userPSW = value; }
}
public string loginCheck(string uid, string upwd, string urole)
{
String selectStr = String.Empty;
switch (urole)
{
case “0”: //身份为教师时
selectStr = “Select * from Teacher where teaID = '” + uid + “’”;
break;
case “1”: //身份为学生时
selectStr = “Select * from Student where stuID = '” + uid + “’”;
break;
case “2”: //身份为管理员时
selectStr = “Select * from Users where adminName = '” + uid + “’”;
break;
default:
return null;
}
Database db = new Database();
DataTable dt = db.GetDataTable(selectStr);
if (dt.Rows.Count > 0) //如果该用户存在
{
if (dt.Rows[0][1].ToString().Equals(upwd)) //密码正确
{
switch (urole)
{
case “0”: //身份为教师时
return “0”;
case “1”: //身份为学生时
return “1”;
case “2”: //身份为管理员时
return “2”;
default:
return null;
}
}
else //密码错误,给出提示信息!
{
return “-1”;
}
}
else //用户不存在或用户名输入错误
{
return “-2”;
}
}
public string modifyPWD(String urole, String uid, String oldPwd, String newPwd)
{
String updateStr = String.Empty;
switch (urole)
{
case “0”: //身份为教师时
updateStr = “update Teacher set teaPwd=’” + newPwd + “’ where teaID=’” + uid + “’”;
break;
case “1”: //身份为学生时
updateStr = “update Student set stuPwd=’” + newPwd + “’ where stuID=’” + uid + “’”;
break;
case “2”: //身份为管理员时
updateStr = “update Users set adminPwd=’” + newPwd + “’ where adminName=’” break;
}
string ucheck = this.loginCheck(uid, oldPwd, urole);
if (ucheck.Equals(“0”) || ucheck.Equals(“1”) || ucheck.Equals(“2”))
{
int t = new Database().ExecuteSQL(updateStr); //根据修改后返回的结果给出提示
if (t > 0)
{
return “1”;
}
else
{
return “0”;
}
}
else
{
return “-1”;
} } }}
系统登录页面,代码及运行效果

登录页面
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值