软件系统分析与设计大作业实验报告.docx
- 文档编号:6885808
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:20
- 大小:107.02KB
软件系统分析与设计大作业实验报告.docx
《软件系统分析与设计大作业实验报告.docx》由会员分享,可在线阅读,更多相关《软件系统分析与设计大作业实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
软件系统分析与设计大作业实验报告
武汉轻工大学
软件系统分析与设计
大作业实验报告
基于ASP.NET的学生信息管理系统
的设计与实现
学院:
数学与计算机学院
姓名:
时保粮
班级:
软工一班
学号:
1205110210
指导老师:
蒋丽华
2015年5月20日
一.需求分析
学生信息管理系统是高校管理工作中一项非常重要的组成部分。
用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分地满足各种信息的输入和输出。
收集基本数据、数据结构以及数据处理的流程,为后面的设计打下基础。
本系统是针对高等院校的学生信息的后台管理,因此学生信息管理系统的用户包括系统管理员和教师用户。
主要涉及学期信息、班级信息、学生信息、课程信息、成绩信息和用户信息等数据信息。
ASP.Net的运用可以轻松地使用近年流行的三层结构模式开发WEB站点或基于B/S结构的应用程序。
学生成绩管理信息系统是由Web后台进行统一管理,所有业务逻辑都集中在Web应用程序中管理和制定,具有数据的录入和查询统计等功能,客户端的分布广泛,数据集中处理,因此在设计时充分考虑各种体系结构的优缺点,选择三层WEB模式进行开发实现。
二.系统设计
1.系统概要设计
、
登录界面
用户注册
系统管理员
教师用户
修改用户密码
查询成绩信息
查询学生信息
查询课程信息
修改用户信息
用户信息管理
成绩信息管理
课程信息管理
学生信息管理
班级信息管理
学期信息管理
图2-1系统概要设计图
2.子模块设计
以学生信息管理模块为例:
学生信息管理
查询学生信息
添加学生信息
修改学生信息
删除学生信息
图2-2学生信息管理模块设计图
学生信息管理模块分为添加学生信息和查询信息两个界面,实现学生信息的添加和查询功能。
按照实际情况,只有查询出相应的学生信息才能对其进行修改和删除,故对学生信息的修改和删除功能集成在查询学生信息界面里。
PS:
其他子模块的功能实现与此类似
3.三层架构的设计模式
A之三层WEB结构及其优点
三层模式是在两层模式的基础上,增加了新的一级。
这种模式在逻辑上将应用功能分为三层:
客户显示层、业务逻辑层、数据层。
客户显示层是为客户提供应用服务的图形界面,有助于用户理解和高效的定位应用服务,负责处理用户的输入和向用户的输出,但并不负责解释其含义(出于效率的考虑,它可能在向上传输用户输入前进行合法性验证),这一层通常用前端工具(VB,VC,ASP等)开发;业务逻辑层位于显示层和数据层之间,专门为实现企业的业务逻辑提供了一个明确的层次,在这个层次封装了与系统关联的应用模型,并把用户表示层和数据库代码分开。
其主要功能是执行应用策略和封装应用模式,并将封装的模式呈现给客户应用程序,它是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成SQL语句检索或更新数据库,并把结果返回给客户端,这一层通常以动态链接库的形式存在并注册到服务器的注册簿(Registry)中,它与客户端通讯的接口符合某一特定的组件标准(如COM,CORBA),可以用任何支持这种标准的工具开发;数据层是三层模式中最底层,他用来定义、维护、访问和更新数据并管理和满足应用服务对数据的请求。
三层模式的主要优点为:
①良好的灵活性和可扩展性。
对于环境和应用条件经常变动的情况,只要对应用层实施相应的改变,就能够达到目的。
②可共享性。
单个应用服务器可以为处于不同平台的客户应用程序提供服务,在很大程度上节省了开发时间和资金投入;
③较好的安全性。
在这种结构中,客户应用程序不能直接访问数据,应用服务器不仅可控制哪些数据被改变和被访问,而且还可控制数据的改变和访问方式。
④增强了企业对象的重复可用性。
“企业对象”是指封装了企业逻辑程序代码,能够执行特定功能的对象。
随着组件技术的发展,这种可重用的组件模式越来越为软件开发所接受。
⑤三层模式成为真正意义上的“瘦客户端”,从而具备了很高的稳定性、延展性和执行校率。
⑥三层模式可以将服务集中在一起管理,统一服务于客户端,从而具备了良好的容错能力和负载平衡能力。
图2-3三层架构理念图
ASP.Net的运用可以轻松地使用近年流行的三层结构模式开发WEB站点或基于B/S结构的应用程序。
它可以使程序具有更好的扩展性,灵活性,安全性,平台无关性以及可维护性。
ASP.Net的三层结构开发方法思想与Java类似:
Java中的三层架构为前端的HTML,JSP,Serverlet,中间层为JavaBean,EJB,后面为数据器库服务器。
而在ASP.Net中,前端为HTML,asp,aspx等,中间层为扩展名是.vb,.cs等文件编译而成的.dll控件,后面为数据库服务器。
三.数据库设计
1.数据库表设计
表名
字段序号
字段名称
主键
是否递增
数据类型
最大长度
数据长度
允许空值
Class
1
classNo
√
varchar
20
0
2
className
varchar
20
0
3
banzhuren
varchar
20
0
√
4
beginTime
datetime
8
23
√
表名
字段序号
字段名称
主键
是否递增
数据类型
最大长度
数据长度
允许空值
Course
1
courseNo
√
varchar
20
0
2
courseName
varchar
20
0
3
teacherName
varchar
20
0
√
4
courseCount
int
4
10
5
courseScore
float
8
53
表名
字段序号
字段名称
主键
是否递增
数据类型
最大长度
数据长度
允许空值
CusUsers
1
customerid
√
√
int
4
10
2
Customername
nvarchar
100
0
√
3
customerpwd
varchar
50
0
√
4
Realname
nvarchar
100
0
√
5
CustomerSfz
nvarchar
100
0
√
6
address
nvarchar
100
0
√
7
telphone
varchar
30
0
√
8
IsCusAdmin
int
4
10
√
9
CusType
int
4
10
√
表名
字段序号
字段名称
主键
是否递增
数据类型
最大长度
数据长度
允许空值
Score
1
scoreId
√
√
int
4
10
2
studentNo
varchar
20
0
3
courseNo
varchar
20
0
4
termId
int
4
10
5
score
float
8
53
表名
字段序号
字段名称
主键
是否递增
数据类型
最大长度
数据长度
允许空值
Student
1
studentNumber
√
varchar
20
0
2
studentName
varchar
20
0
3
sex
varchar
2
0
4
classInfo
varchar
20
0
5
birthday
datetime
8
23
√
6
zhengzhimianmao
varchar
20
0
√
7
telephone
varchar
20
0
√
8
address
varchar
20
0
√
表名
字段序号
字段名称
主键
是否递增
数据类型
最大长度
数据长度
允许空值
TermInfo
1
termId
√
√
int
4
10
2
termName
varchar
20
0
四.开发及运行环境
1.操作系统:
Windows7/8
2.开发工具:
VisualStudio2008、ASP.NET、InternetExplorer
3.数据库工具:
SQLServer2008、SQLServerManagementStudio
五.系统开发及实现
1.
应用系统架构
图5-1
系统架构图
2.三层架构设计理念的体现
以编辑学生信息模块功能为例:
(1)用户在页面填写相应的信息,用CheckIn()函数检查输入信息是否为空
图5-2编辑学生信息界面
functionCheckIn(){
varre=/^[0-9]+.?
[0-9]*$/;
varresc=/^[1-9]+[0-9]*]*$/;
varstudentNumber=document.getElementById("studentNumber").value;
if(studentNumber==""){
alert("请输入学号...");
document.getElementById("studentNumber").focus();
returnfalse;
}
varstudentName=document.getElementById("studentName").value;
if(studentName==""){
alert("请输入学生姓名...");
document.getElementById("studentName").focus();
returnfalse;
}
varsex=document.getElementById("sex").value;
if(sex==""){
alert("请输入性别...");
document.getElementById("sex").focus();
returnfalse;
}
varbirthday=document.getElementById("birthday").value;
if(birthday==""){
alert("请输入出生日期...");
document.getElementById("birthday").focus();
returnfalse;
}
returntrue;}
(2)点击保存信息按钮,触发按钮上的BtnStudentSave_Click函数,在该函数中,用ENTITY实体层中的Student类来创建对象,并调用BLL层中的编辑和添加方法。
(详见下划线部分)
protectedvoidBtnStudentSave_Click(objectsender,EventArgse)
{
ENTITY.Studentstudent=newENTITY.Student();
student.studentNumber=this.studentNumber.Value;
student.studentName=studentName.Value;
student.sex=sex.Value;
student.classInfo=classInfo.SelectedValue;
student.birthday=Convert.ToDateTime(birthday.Text);
student.zhengzhimianmao=zhengzhimianmao.Value;
student.telephone=telephone.Value;
student.address=address.Value;
if(!
string.IsNullOrEmpty(Common.GetMes.GetRequestQuery(Request,"studentNumber")))
{
student.studentNumber=Request["studentNumber"];
if(BLL.bllStudent.EditStudent(student))
{
Common.ShowMessage.myScriptMes(Page,"Suess","if(confirm(\"信息修改成功,是否继续修改?
否则返回信息列表。
\")){location.href=\"M_EditStudent.aspx?
studentNumber="+Request["studentNumber"]+"\"}else{location.href=\"M_StudentList.aspx\"}");
}
else
{
Common.ShowMessage.Show(Page,"error","信息修改失败,请重试或联系管理人员..");
}
}
else
{
if(BLL.bllStudent.AddStudent(student))
{
Common.ShowMessage.myScriptMes(Page,"Suess","if(confirm(\"信息添加成功,是否继续添加?
否则返回信息列表。
\")){location.href=\"M_EditStudent.aspx\"}else{location.href=\"M_StudentList.aspx\"}");
}
else
{
Common.ShowMessage.Show(Page,"error","信息添加失败,请重试或联系管理人员..");
}
}
}
(3)转到BLL层来看,BLL层仅包含对Student对象的增删改查等方法,实际操作则是调用DAL层的方法来实现。
namespaceBLL
{
/*学生信息业务逻辑层*/
publicclassbllStudent{
/*添加学生信息*/
publicstaticboolAddStudent(ENTITY.Studentstudent)
{
returnDAL.dalStudent.AddStudent(student);
}
/*根据studentNumber获取某条学生信息记录*/
publicstaticENTITY.StudentgetSomeStudent(stringstudentNumber)
{
returnDAL.dalStudent.getSomeStudent(studentNumber);
}
/*更新学生信息*/
publicstaticboolEditStudent(ENTITY.Studentstudent)
{
returnDAL.dalStudent.EditStudent(student);
}
/*删除学生信息*/
publicstaticboolDelStudent(stringp)
{
returnDAL.dalStudent.DelStudent(p);
}
/*根据条件分页查询学生信息*/
publicstaticSystem.Data.DataTableGetStudent(intNowPage,intPageSize,outintAllPage,outintDataCount,stringp)
{
returnDAL.dalStudent.GetStudent(NowPage,PageSize,outAllPage,outDataCount,p);
}
/*查询所有的学生信息*/
publicstaticSystem.Data.DataSetgetAllStudent()
{
returnDAL.dalStudent.getAllStudent();
}
}
}
(4)我们进而转到DAL来看,DAL层则是将对Student对象,也就是对应数据库中的Student表的增删改查等各种方法的具体实现内容都详细的写出来了。
namespaceDAL
{
/*学生信息业务逻辑层实现*/
publicclassdalStudent
{
/*待执行的sql语句*/
publicstaticstringsql="";
/*添加学生信息实现*/
publicstaticboolAddStudent(ENTITY.Studentstudent)
{
stringsql="insertintoStudent(studentNumber,studentName,sex,classInfo,birthday,zhengzhimianmao,telephone,address)values(@studentNumber,@studentName,@sex,@classInfo,@birthday,@zhengzhimianmao,@telephone,@address)";
/*构建sql参数*/
SqlParameter[]parm=newSqlParameter[]{
newSqlParameter("@studentNumber",SqlDbType.VarChar),
newSqlParameter("@studentName",SqlDbType.VarChar),
newSqlParameter("@sex",SqlDbType.VarChar),
newSqlParameter("@classInfo",SqlDbType.VarChar),
newSqlParameter("@birthday",SqlDbType.DateTime),
newSqlParameter("@zhengzhimianmao",SqlDbType.VarChar),
newSqlParameter("@telephone",SqlDbType.VarChar),
newSqlParameter("@address",SqlDbType.VarChar)
};
/*给参数赋值*/
parm[0].Value=student.studentNumber;//学号
parm[1].Value=student.studentName;//学生姓名
parm[2].Value=student.sex;//性别
parm[3].Value=student.classInfo;//所在班级
parm[4].Value=student.birthday;//出生日期
parm[5].Value=student.zhengzhimianmao;//政治面貌
parm[6].Value=student.telephone;//联系电话
parm[7].Value=student.address;//家庭地址
/*执行sql进行添加*/
return(DBHelp.ExecuteNonQuery(sql,parm)>0)?
true:
false;
}
/*根据studentNumber获取某条学生信息记录*/
publicstaticENTITY.StudentgetSomeStudent(stringstudentNumber)
{
/*构建查询sql*/
stringsql="select*fromStudentwherestudentNumber='"+studentNumber+"'";
SqlDataReaderDataRead=DBHelp.ExecuteReader(sql,null);
ENTITY.Studentstudent=newENTITY.Student();
/*如果查询存在记录,就包装到对象中返回*/
if(DataRead.Read())
{
student.studentNumber=DataRead["studentNumber"].ToString();
student.studentName=DataRead["studentName"].ToString();
student.sex=DataRead["sex"].ToString();
student.classInfo=DataRead["classInfo"].ToString();
student.birthday=Convert.ToDateTime(DataRead["birthday"].ToString());
student.zhengzhimianmao=DataRead["zhengzhimianmao"].ToString();
student.telephone=DataRead["telephone"].ToString();
student.address=DataRead["address"].ToString();
}
returnstudent;
}
/*更新学生信息实现*/
publicstaticboolEditStudent(ENTITY.Studentstudent)
{
stringsql="updateStudentsetstudentName=@studentName,sex=@sex,classInfo=@classInfo,birthday=@birthday,zhengzhimianmao=@zhengzhimianmao,telephone=@telephone,address=@addresswherestudentNumber=@studentNumber";
/*构建sql参数信息*/
SqlPar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 系统分析 设计 作业 实验 报告