软件工程+学生管理系统+实验报告.docx
- 文档编号:8242983
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:38
- 大小:855.06KB
软件工程+学生管理系统+实验报告.docx
《软件工程+学生管理系统+实验报告.docx》由会员分享,可在线阅读,更多相关《软件工程+学生管理系统+实验报告.docx(38页珍藏版)》请在冰豆网上搜索。
软件工程+学生管理系统+实验报告
集美大学
计算机工程学院
软件工程项目
项目名称
:
学生管理系统
班级
:
小组成员
:
指导老师
:
2011年6月
目录
1设计任务与目的1
1.1项目计划1
2需求分析1
2.1用例图3
2.1.1学生用例图3
2.1.2教师用例图3
2.1.3管理员用例图4
2.2类图4
2.3顺序图4
2.31管理员修改课程信息顺序图4
2.32学生用户退选课的顺序图5
2.33教师提交成绩顺序图5
2.4协作图5
2.41学生用户选课协作图5
2.42教师提交成绩协作图6
2.43学生查询成绩协作图6
2.5运行环境规定6
2.51设备6
3系统设计6
3.1设计子系统6
3.11总体设计图6
3.12各模块功能7
3.2数据库表结构7
3.21学生表Student的详细数据字段7
3.22教师表Teacher的详细数据字段7
3.23课程表Course的详细数据字段8
3.24选课表Elect的详细数据字段8
3.25系统管理员表Users的详细数据字段8
3.26系院表Depart的详细数据字段8
3.3设计人机交互子系统8
3.31用户分类8
3.32用户描述9
3.33设计命令层次9
4详细设计10
4.1系统用户登录流程图10
4.2用户密码修改流程图11
4.3教师提交成绩流程图11
4.4管理员添加课程流程图12
4.5学生选修课程流程图12
4.6查询成绩流程图13
5系统实现13
5.1登录界面13
5.2教师提交成绩界面14
5.3学生查询成绩和选课界面14
5.4管理员登录界面15
6系统测试15
7总结15
8附录(主要程序代码)15
1设计任务与目的
《软件工程》课程是本专业中实践性非常强的一门课程。
本课程的目的是培养软件工程应用能力。
软件工程实践是《软件工程》课程的后继教学环节,是一个重要的、不可或缺的实践环节。
其目的是使学生能够针对具体软件工程项目,全面掌握软件工程管理、软件需求分析、软件设计、软件测试等阶段的方法和技术,通过该实践课程使学生进一步理解和掌握软件开发模型、软件生命周期、软件过程等理论在软件项目开发过程中的意义和作用,培养学生按照软件工程的原理、方法、技术、标准和规范,进行软件开发的能力,培养学生的合作意识和团队精神,培养学生对技术文档的编写能力,从而使学生提高软件工程的综合能力,提高软件项目的管理能力。
1.1项目计划
2需求分析
学生管理系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户,也即是三类用户角色。
(1)学生用户是主要的需求者,主要需求功能是查询成绩、查看自己选课情况及进行选课、退课操作等;
(2)教师用户主要需求功能是提交成绩、查询学生成绩、查看自己所教授的课程、课程有哪些学生选修;
(3)管理员用户的功能需求较为复杂,包括对学生信息、教师信息、课程信息进行管理。
在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。
在教师管理子模块中,实现对教师信息的添加、修改、删除、查询等操作。
在课程管理子模块中,实现对课程信息的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除、查看某个课程的详细信息等。
本系统将管理员用户、教师用户、学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加学生,添加课程,修改课程信息等;让教师拥有查看自己开设的课程的信息,以及提交所开设课程成绩的权限;让学生拥有查询成绩、选课和退选的权限;而修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。
通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。
表2-1查询成绩用例的事件流图
用例名称
查询成绩
参与者
教师、学生
描述
学习可查看自己所有课程成绩,教师可查询自己所教的课程的所有学生成绩
启动
学生登录点击“成绩管理”链接,教师点击“查询成绩”
前置条件
用户登录成功
主流事件
用户
系统
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+以上
数据库系统:
SQLServer2000
内存:
256M以上
开发工具:
VisualStudio2005
Web服务器:
IIS+ASP.NET2.0平台
3系统设计
3.1设计子系统
学生管理系统是实现学生成绩查询、选课退课、教师提交成绩以及学校教务管理员维护信息的一个平台,整个学生选课系统有前台和后台两部分,共分为4个模块:
管理员模块,教师模块,学生模块和公有模块,分别用于完成各自的功能。
以下为学生选课系统总体设计图和各功能模块说明:
3.11总体设计图
3.12各模块功能
表3-1学生选课系统功能模块表
功能模块
包含子功能模块
功能
管理员模块
学生管理子模块
对学生信息的添加、修改,删除操作
教师管理子模块
对教师的添加,修改,删除,查询操作
课程管理子模块
对课程的添加,添加时为其分配任课教师,上课时间和地点,实现对课程的修改,删除,查看某个课程的详细信息等
教师模块
实现查看自己所教授的课程,课程有哪些学生选修、各学生的成绩以及利用本系统提交学生的成绩
学生模块
实现学生选课,查询成绩,查看所选课程,修改自己的选课信息
公有模块
实现用户的身份验证,密码修改,退出系统等功能
3.2数据库表结构
3.21学生表Student的详细数据字段
表3-3Student学生用户表
序号
字段名
字段类型
说明
备注
1
stuID
nvarchar(20)notnull
学生学号
主键
2
stuPwd
nvarchar(20)notnul
学生密码
3
stuName
nvarchar(20)notnul
学生姓名
4
stuDepart
Int
学生系院号
5
stuGrade
int
学生年级
6
stuClass
int
学生班级
3.22教师表Teacher的详细数据字段
表3-4Teacher教师用户表
序号
字段名
字段类型
说明
备注
1
teaID
nvarchar(20)notnull
教师编号
关键字
2
teaPwd
nvarchar(20)notnull
教师密码
3
teaName
nvarchar(100)notnull
教师姓名
4
teaDepart
Int(4)
教师系院号
3.23课程表Course的详细数据字段
表3-5Cource课程信息表
序号
字段名
字段类型
说明
备注
1
courseID
nvarchar(20)notnull
课程编号
关键字
2
teaID
nvarchar(20)notnull
教师编号
关键字
3
courseName
nvarchar(100)notnull
课程名称
4
courseTime
nvarchar(20)
上课时间
5
courseAddress
nvarchar(50)
上课地点
6
courseInfo
Text
课程简介
3.24选课表Elect的详细数据字段
表3-6Elect选课信息表
序号
字段名
字段类型
说明
备注
1
stuID
nvarchar(20)notnull
学生学号
关键字
2
courseID
nvarchar(20)notnull
课程编号
关键字
3
teaID
nvarchar(20)notnull
教师编号
关键字
4
Score
int
课程成绩
3.25系统管理员表Users的详细数据字段
表3-7Users管理员表
序号
字段名
字段类型
说明
备注
1
adminName
nvarchar(20)notnull
系统管理员用户名
关键字
2
adminPwd
nvarchar(20)
系统管理员密码
3.26系院表Depart的详细数据字段
表3-8Depart系院表
序号
字段名
字段类型
说明
备注
1
departID
Intnotnull
系院号
关键字
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总结
1.通过这次软件工程课程设计的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
2.学习和实践了分析和设计软件系统的各种知识,包括面向对象的系统分析与设计,编码和测试方面的知识。
3.加深掌握了.Net平台的三层架构模式设计。
4.进一步加强和提高软件工程文档的编写能力。
5.增强了协作能力和团队精神。
6.本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如界面不太美观,操作性不太友好等。
8附录(主要程序代码)
参考文献:
《软件工程》、《.net开发实例》、《SQLserver实用教程》
Database类主要是与数据库连接,提供数据库操作功能代码
namespaceMyElectCourse.DAL
{
publicclassDatabase
{
protectedstringconnectionString;
protectedSqlConnectionconnection=null;
publicDatabase()
{
connectionString=ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
}
~Database()
{
if(connection!
=null)
{
connection=null;
}
}
protectedvoidOpen()
{
if(connection==null)
{
connection=newSqlConnection(connectionString);
}
if(connection.State.Equals(ConnectionState.Closed))
{
connection.Open();
}
}
protectedvoidClose()
{
if(connection!
=null)
{
connection.Close();
}
}
publicintExecuteSQL(stringsqlstr)
{
intcount=-1;
this.Open();
SqlCommandcmd=newSqlCommand(sqlstr,connection);
count=cmd.ExecuteNonQuery();
this.Close();
returncount;
}
publicDataSetGetDataSet(stringsqlstr)
{
this.Open();
DataSetds=newDataSet();
SqlDataAdapteradapter=newSqlDataAdapter(sqlstr,connection);
adapter.Fill(ds);
this.Close();
returnds;
}
publicDataTableGetDataTable(stringsqlstr)
{
DataSetds=this.GetDataSet(sqlstr);
DataTabledt=newDataTable();
if(ds.Tables.Count>0)
{
dt=ds.Tables[0];
}
returndt;
}
publicSqlDataReaderGetDataReader(stringsqlstr)
{
this.Open();
SqlCommandcmd=newSqlCommand(sqlstr,connection);
SqlDataReadersdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
//this.Close();
returnsdr;
}
}
}
UserBase类是所有系统角色用户的基类,完成用户登录验证与修改密码的功能代码
namespaceMyElectCourse.BLL
{
publicclassUserBase
{
privatestringuserID;
publicstringUserID
{
get{returnuserID;}
set{userID=value;}
}
privatestringuserPSW;
publicstringUserPSW
{
get{returnuserPSW;}
set{userPSW=value;}
}
publicstringloginCheck(stringuid,stringupwd,stringurole)
{
StringselectStr=String.Empty;
switch(urole)
{
case"0":
//身份为教师时
selectStr="Select*fromTeacherwhereteaID='"+uid+"'";
break;
case"1":
//身份为学生时
selectStr="Select*fromStudentwherestuID='"+uid+"'";
break;
case"2":
//身份为管理员时
selectStr="Select*fromUserswhereadminName='"+uid+"'";
break;
default:
returnnull;
}
Databasedb=newDatabase();
DataTabledt=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:
returnnull;
}
}
else//密码错误,给出提示信息!
{
return"-1";
}
}
else//用户不存在或用户名输入错误
{
return"-2";
}
}
publicstringmodifyPWD(Stringurole,Stringuid,StringoldPwd,StringnewPwd)
{
StringupdateStr=String.Empty;
switch(urole)
{
case"0":
//身份为教师时
updateStr="updateTeachersetteaPwd='"+newPwd+"'whereteaID='"+uid+"'";
break;
case"1":
//身份为学生时
updateStr="updateStudentsetstuPwd='"+newPwd+"'wherestuID='"+uid+"'";
break;
case"2":
//身份为管理员时
updateStr="updateUserssetadminPwd='"+newPwd+"'whereadminName='"break;
}
stringucheck=this.loginCheck(uid,oldPwd,urole);
if(ucheck.Equals("0")||ucheck.Equals("1")||ucheck.Equals("2"))
{
intt=newDatabase().ExecuteSQL(updateStr);//根据修改后返回的结果给出提示
if(t>0)
{
return"1";
}
else
{
return"0";
}
}
else
{
return"-1";
}}}}
系统登录页面,代码及运行效果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 学生 管理 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)