软件系统分析与设计大作业实验报告.docx

上传人:b****6 文档编号:6885808 上传时间:2023-01-12 格式:DOCX 页数:20 大小:107.02KB
下载 相关 举报
软件系统分析与设计大作业实验报告.docx_第1页
第1页 / 共20页
软件系统分析与设计大作业实验报告.docx_第2页
第2页 / 共20页
软件系统分析与设计大作业实验报告.docx_第3页
第3页 / 共20页
软件系统分析与设计大作业实验报告.docx_第4页
第4页 / 共20页
软件系统分析与设计大作业实验报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

软件系统分析与设计大作业实验报告.docx

《软件系统分析与设计大作业实验报告.docx》由会员分享,可在线阅读,更多相关《软件系统分析与设计大作业实验报告.docx(20页珍藏版)》请在冰豆网上搜索。

软件系统分析与设计大作业实验报告.docx

软件系统分析与设计大作业实验报告

武汉轻工大学

 

软件系统分析与设计

大作业实验报告

基于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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1