选课系统的UML建模.docx

上传人:b****6 文档编号:8265605 上传时间:2023-01-30 格式:DOCX 页数:35 大小:536.91KB
下载 相关 举报
选课系统的UML建模.docx_第1页
第1页 / 共35页
选课系统的UML建模.docx_第2页
第2页 / 共35页
选课系统的UML建模.docx_第3页
第3页 / 共35页
选课系统的UML建模.docx_第4页
第4页 / 共35页
选课系统的UML建模.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

选课系统的UML建模.docx

《选课系统的UML建模.docx》由会员分享,可在线阅读,更多相关《选课系统的UML建模.docx(35页珍藏版)》请在冰豆网上搜索。

选课系统的UML建模.docx

选课系统的UML建模

学生选课管理信息系统的设计与实现

说明:

本文档详细展示了“学生选课管理信息系统”的UML建模过程,供大家对自己的系统进行建模时参考。

目录

第一章需求分析2

一、需求调查2

二、建立用例图2

三、描述用例3

第二章系统分析5

一、寻找系统中的类5

二、建立交互图并寻找类的操作6

三、建立类图13

第三章系统设计15

一、类图的调整与完善15

二、人机界面设计16

三、数据库设计19

第四章系统实现21

一、开发环境21

二、建立数据库21

三、程序设计22

四、系统测试29

五、使用说明33

第一章需求分析

一、需求调查

为提高学生选课的准确性,提高数据处理的工作效率,特开发学生选课管理信息系统。

经过调查,发现该系统的需求如下:

教务科管理和维护学生和课程信息。

查看所有的学生信息和课程信息,对以上信息进行添加、修改、删除。

学生在线选课。

选择好课程后进行提交,系统要记录学生所选择的课程和提交的时间;学生也可以撤销提交。

选课中心处理选课数据。

查看选课信息,统计每门课程的选课人数,停开选课人数少于规定人数的课程。

二、建立用例图

从以上需求陈述中,我们发现系统中的参与者有:

教务科、学生、选课中心。

识别出参与者后,从参与者的角度就可以发现系统的用例,并绘制出系统的用例图,如下图所示。

用例图

三、描述用例

用例图中仅仅给出了用例的名称,每一个用例的内部细节尚不清楚,需要对此进行描述。

描述用例有两种方式,一种是用文字或表格,另一种是活动图。

下面分别用表格和活动图描述一个用例。

1、“添加学生信息”用例的描述

采用表格的形式描述用例,如下表所示:

“添加学生信息”用例的描述

用例名称

添加学生信息

用例标识

UC1001

基本操作选程

1、通过查询确认学生信息不存在

2、将学生信息保存到数据库中

3、将学生信息在页面上显示出来

可选操作流程

如果要添加的学生信息已经存在,则显示相应的提示信息

2、“删除选课人数不足的课程”用例的描述

采用活动图描述该用例,如下图所示:

“删除选课人数不足的课程”用例的活动图

 

第二章系统分析

一、寻找系统中的类

1、实体类

通过对系统需求的分析,我们发现系统中的实体类有:

学生信息类、课程信息类、选课信息类。

由于实体类的操作难以确定,在后面通过交互图来寻找类的操作,下面仅列出实体类的属性。

(1)StudentInfo

该类为学生信息类,用于描述学生的基本信息,主要包括学号、姓名、年龄、性别、籍贯等。

为简单起见,本系统只使用学号和姓名两个基本属性,如下表所示:

StudentInfo的属性

属性

说明

StudentID

学生的学号

StudentName

学生的姓名

(2)CourseInfo

该类为课程信息类,用于描述课程的基本信息,主要包括课程编号、课程名称、学分、学时、开课学期、课程简介等。

为简单起见,本系统只使用课程编号和课程名称两个基本属性,如下表所示:

CourseInfo的属性

属性

说明

CourseID

课程的编号

CourseName

课程的名称

(3)SelectInfo

该类为选课信息类,用于描述学生选课的信息,主要记录哪个学生选了哪些课程,以及选课的具体时间,如下表所示:

SelectInfo的属性

属性

说明

StudentID

学生的学号

CourseID

课程的编号

SelectTime

学生提交选课信息的时间

2、数据库访问类

为便于将相关数据从数据库中读出来,或写入数据库中,需设置一个数据库访问类Data。

该类的属性和操作如下表所示:

Data的属性和操作

属性或操作

说明

strCon

用于连接数据库的字符串

MySqlExecuteReader

根据SQL语句进行查询

MySqlExecuteNonQuery

根据SQL语句进行修改、添加、删除

3、用户界面类

通常,需要在参与者和每一个用例之间设置一个用户界面类。

本系统由于规模较小,设置如下几个用户界面类:

jwkManageStudentWindow:

教务科维护学生信息的窗口

jwkManageCourseWindow:

教务科维护课程信息的窗口

xkzxWindow:

选课中心维护选课信息的窗口

studentWindow:

学生选课的窗口

二、建立交互图并寻找类的操作

交互图包括时序图和协作图,二者是类图的辅助模型。

在建立时序图和协作图时,将会发现类的操作,并将它们添加到类中。

1、“查询学生信息”的时序图

1:

GetStudentInfoAllToGridView:

将所有学生的信息显示在界面上

2:

GetStudentInfoAll:

获取所有学生的信息

3:

MySqlExecuteReader:

从数据库中读取学生的信息

2、“添加学生信息”的时序图

1:

AppendStudentInfo:

添加学生记录

2:

AddStudentInfo:

添加学生信息

3:

MySqlExecuteNonQuery:

将学生信息写入数据库中

3、“修改学生信息”的时序图

1:

ModifyStudentInfo:

修改学生记录

2:

ModifyStudentInfo:

修改学生信息

3:

MySqlExecuteNonQuery:

将学生信息写入数据库中

4、“删除学生信息”的时序图

1:

DeleteStudentInfo:

删除学生记录

2:

DeleteStudentInfoByStudentID:

删除指定学号的信息学生

3:

MySqlExecuteNonQuery:

将学生信息从数据库删除中

5、“查询课程信息”的时序图

1:

GetCourseInfoAllToGridView:

将课程信息显示在窗口上

2:

GetCourseInfoAll:

查询所有课程的信息

3:

MySqlExecuteReader:

从数据库中读取课程信息

6、“添加课程信息”的时序图

1:

AddCourseInfo:

添加课程记录

2:

AddCourseInfo:

添加课程信息

3:

MySqlExecuteNonQuery:

将课程信息写入数据库中

7、“修改课程信息”的时序图

1:

ModifyCourseInfo:

修改课程记录

2:

ModifyCourseInfo:

修改课程信息

3:

MySqlExecuteNonQuery:

将课程信息写入数据库中

8、“删除课程信息”的时序图

1:

DeleteCourseInfo:

删除课程记录

2:

DeleteCourseInfoByCourseID:

删除指定编写的课程信息

3:

MySqlExecuteNonQuery:

将课程信息从数据库中删除

9、“查询所有学生的选课信息”的时序图

1:

GetSelectInfoAlltoGirdView:

将所有的选课信息显示在窗口上

2:

GetSelectInfoAll:

获取所有的选课信息

3:

MySqlExecuteReader:

从数据库中读取选课信息

10、“统计每门课程的选课人数”的时序图

1:

GetSelectInfoGroupByCourseIDToGridView:

将选课信息根据课程编号分组统计后显示在窗口上

2:

GetSelectInfoGroupByCourseID:

根据课程编号分组查询选课信息

3:

MySqlExecuteReader:

将选课信息从数据库中读取出来

11、“删除选课人数不足的课程”的时序图

1:

DeleteSelectInfo:

删除选课信息

2:

DeleteSelectInfoLowerX:

删除人数不足x人的选课信息

3:

MySqlExecuteNonQuery:

将选课信息从数据库中删除

12、“查询个人的选课信息的协作图”的协作图

1:

GetSelectInfoByStudentIDToGridView:

将学生个人的选课信息显示在窗口上

2:

GetSelectInfoByStudentID:

根据学号查询学生的选课信息

3:

MySqlExecuteReader:

将选课信息从数据库中读出来

13、“提交选课信息的协作图”的协作图

1:

AddSelectInfo:

添加选课记录

2:

AddSelectInfo:

添加选课信息

3:

MySqlExecuteNonQuery:

将选课信息写入数据库中

14、“删除选课信息的协作图”的协作图

1:

DeleteSelectInfo:

删除选课信息

2:

DeleteSelectInfoByStudentID:

删除指定学号的学生的选课信息

3:

MySqlExecuteNonQuery:

将选课信息从数据库中删除

三、建立类图

以上过程确定了系统中有哪些类,类的属性和操作各有哪些,下面据此绘制系统的类图。

系统分析阶段的类图

注:

由于“查询选课信息”用例教务科和学生均参与,且在教务科部分已经绘制了该用例的交互图,故在学生部分不再重复绘制,仅在“studentWindow”中添加一个添加“GetCourseInfoAllToGridView”。

 

第三章系统设计

在系统设计阶段,要考虑系统的实现环境,对分析阶段的类图模型进行调整与完善,并对人机界面和数据库进行设计,最终形成一个可实现的系统设计模型。

本系统将采用C#进行编程。

C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。

一、类图的调整与完善

在系统分析阶段,因为不考虑系统的实现问题,且实现系统的编程语言未定,因此类图中属性的数据类型、操作的返回值类型均没有画出,属以和操作的可见性也没有标出,在系统设计阶段应对这些地方进行完善。

为保证系统的安全性,在学生选课前应凭密码进行登陆,因此还需要在类StudentInfo中设置一个密码属性“Password”。

由于本系统访问数据库通过ADO.NET实现,因此三个实体类StudentInfo、CourseInfo、SelectInfo的操作中,有返回值的操作其返回值类型为SqlDataReader,无返回值的操作其返回值类型为void。

在数据库访问类Data中,MySqlExecuteReader用于操作SQL语句返回查询结果,因此其返回值类型为SqlDataReader;为了掌握MySqlExecuteNonQuery操作所影响的行数,将该操作的返回值类型设为int型。

另外,用户界面类中的所有操作均不需要返回值,因此,其操作的返回值类型均为void。

经过以上分析,绘制类图如下:

系统设计阶段的类图

二、人机界面设计

1、首页的设计

首页是系统的第一个页面,主要功能是供各类人员登录,其界面设计如下图所示。

首页

2、学生选课页面的设计

该页面是学生提交选课结果或进行选课撤销的页面,其界面设计如下图所示。

学生选课页面

3、选课中心处理选课数据页面的设计

该页面是选课中心完成查看选课信息、统计选课统计、删除选课人数不足等操作的页面,其界面设计如下图所示。

选课中心处理选课数据页面

4、教务科维护课程信息页面的设计

该页面是教务科查看、添加、删除、修改课程信息的页面,其界面设计如下图所示。

教务科维护课程信息页面

5、教务科维护学生信息页面的设计

该页面是教务科查看、添加、删除、修改学生信息的页面,其界面设计如下图所示。

教务科维护学生信息页面

三、数据库设计

由于目前面向对象数据库系统还不成熟,本系统将采用关系数据库系统存储永久对象(需要长期存储的对象)。

主要工作是将类图转换为关系模型。

在类图中,CourseInfo、StudentInfo、SelectInfo这三个类的对象需要长期存储,因此只需将这三个类转化为关系模型。

转换的方法是:

类名转换为关系名、类的属性名转换为关系的字段名。

据此,奖实体类转换成如下几个关系模型:

CourseInfo(CourseID,CourseName)

StudentInfo(StudentID,StudentName,Password)

SelectInfo(StudentID,CourseID,SelectTime)

另外,为便于对选课中心和教务科进行身份验证,还需要设置一个关系模型,用于保存以上两类人员的用户名、密码、身份类别。

该关系模型如下:

AdminInfo(AdminID,Password,Type)

通过分析,以上各个关系模型均符合三范式的要求,不需要作进一步的调整。

第四章系统实现

一、开发环境

本系统采用B/S(Browser/Server)架构进行开发。

前台的页面制作工具为MicrosoftVisualStudio2005,网页采用XHTML+CSS技术进行布局。

后台的开发语言为C#,通过ASP.NET2.0(基于C#语言)技术访问和操作数据库。

采用MicrosoftSQLServer2000建立数据库。

二、建立数据库

本系统采用MicrosoftSQLServer2000建立数据库,数据库名称为“school.mdf”,其中包含4张表,如下图所示。

建立的数据库

1、表AdminInfo

该表用于存储选课中心和教务科的认证信息,表的结构如下图所示。

AdminInfo的结构

2、表CourseInfo

该表用于存储课程的信息,表的结构如下图所示。

CourseInfo的结构

3、表SelectInfo

该表用于存储选课的信息,表的结构如下图所示。

SelectInfo的结构

4、表StudentInfo

该表用于存储学生的信息,表的结构如下图所示。

StudentInfo的结构

三、程序设计

(一)系统的主要文件

系统中的主要包括三种类型的文件:

SQLServer数据库文件、自定义类、页面文件,如下图所示:

系统的主要文件

(二)部分模块的程序代码

本系统的每个模块都是基于三层架构进行开发。

三层架构将整个系统划分为:

表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)三个层次,以实现“高内聚,低耦合”的思想。

1、数据访问层

publicclassdata

{

privatestaticstringstrCon="server=(local);database=school;uid=sa;pwd=sa";

publicstaticSqlDataReaderMySqlExecuteReader(stringstrSQL)

{

SqlConnectionmyCon=newSqlConnection(strCon);

SqlCommandmyCom=newSqlCommand(strSQL,myCon);

try

{

myCon.Open();

SqlDataReadermyReader=myCom.ExecuteReader(CommandBehavior.CloseConnection);

returnmyReader;

}

catch(System.Data.SqlClient.SqlExceptione)

{

thrownewException(e.Message);

}

finally

{

myCom.Dispose();

}

}

publicstaticintMySqlExecuteNonQuery(stringstrSQL)

{

SqlConnectionmyCon=newSqlConnection(strCon);

SqlCommandmyCom=newSqlCommand(strSQL,myCon);

try

{

myCon.Open();

intn=myCom.ExecuteNonQuery();

returnn;

}

catch(System.Data.SqlClient.SqlExceptione)

{

thrownewException(e.Message);

}

finally

{

myCom.Dispose();

myCon.Close();

}

}

}

2、学生选课模块的代码

该模型的界面如下图所示:

学生选课模块的界面

(1)表示层的前台代码

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="studentWindow.aspx.cs"Inherits="studentWindow"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

//www.w3.org/1999/xhtml">

无标题页

 

学生选课窗口

LabelID="Label1"runat="server"Text="Label">

Label>

返回首页



GridViewID="GridView1"runat="server"AutoGenerateColumns="False"

DataKeyNames="CourseID"HorizontalAlign="Center">

BoundFieldDataField="CourseID"HeaderText="课程编号"/>

BoundFieldDataField="CourseName"HeaderText="课程名称"/>

TemplateFieldHeaderText="选课操作">

CheckBoxID="CheckBox1"runat="server"Text="选择"/>

TemplateField>

GridView>


ButtonID="Button1"runat="server"Text="提交"onclick="AddSelectInfo"/>

ButtonID="Button2"runat="server"Text="撤消提交"

onclick="DeleteSelectInfo"/>


GridViewID="GridView2"runat="server"AutoGenerateColumns="False"

Caption="选课信息"HorizontalAlign="Center">

BoundFieldDataField="StudentID"HeaderText="学号"/>

BoundFieldDataField="CourseID"HeaderText="课程编号"/>

BoundFieldDataField="SelectTime"HeaderText="选课时间"/>

GridView>

(2)表示层的后台代码

……

usingSystem.Data.SqlClient;

publicpartialclassxkzxWindow:

System.Web.UI.Page

{

protectedvoidPage_Load(objectsender,EventArgse)

{

if(!

IsPostBack)

{

Label1.Text="欢迎"+Request.QueryString["LoginID"]+"进入系统,";

GetSelectInfoGroupByCourseIDToGridView();

GetSelectInfoAlltoGirdView();

}

}

privatevoidGetSelectInfoGroupByCourseIDToGridView()

{

//分组显示各门课程的选课人数

SelectInfos=newSelectInfo();

SqlDataReadermyreader=s.GetSelectInfoGroupByCourseID();

GridView1.DataSource=myreader;

GridView1.DataBind();

myreader.Close();

}

 

privatevoidGetSelectInfoAlltoGirdView()

{

//显示所有的选课信息

SelectInfos=newSelectInfo();

SqlDataReadermyreader=s.GetSelectInfoAll();

GridView2.DataSource=myreader;

GridView2.DataBind();

myreader.Close();

}

protectedvoidDeleteSelectInfo(objectsender,EventArgse)

{

//删除选课人数小于指定数的选课信息

SelectInfos=newSelectInfo();

s.DeleteSelectInfoLowerX(Convert.ToInt32(TextBox1.Text));

GetSelectInfoGroupByCourseIDToGridView();

GetSelectInfoAlltoGirdView();

}

}

(3)业务逻辑层

……

usingSystem.Data.SqlClient;

publicclassStudentInfo

{

publicstringStudentID;

publicstringStudentName;

publicstringPassword;

publicStudentInfo()

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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