uml-用例规约【点名系统】
匿名 · 更新于 2016/10/9
随机点名系统的设计与实现
专 业: 计算机科学与技术
班 级: ZB计科091
学生姓名: ----
指导教师: 贾晓辉
2010 年 6 月 3 日
摘要
点名是保证和监控教学质量的重要手段.本文介绍利用asp.net和SQl2005技术开发WEB点名系统.使上课点名轻松方便。
关键词:点名:sp.net 和 SQl2005
一、系统背景描述
1引言
2项目背景
3系统建模
4点名系统用例图
4.1系统管理员用例图:
4.2随机点名系统教师点名用例图:
4.3随机点名教师管理系统用例图:
4.4随机点名学生系统用例图:
4.5教师点名时序图:
4.6教师时序图:
4.7管理员时序图:
4.8信息添加子功能:
4.9信息删除子功能:
4.10信息修改子功能:
4.11随机点名教师系统类图:
5 点名系统用例规约
5.1考勤管理用例
5.2考勤管理用例:
5.3查询个人考勤记录用例规约
6数据流向图
7数据概念模型和描述
8.数据库描述
二、系统实现
1.系统流程图
2.主要数据结构
3.逻辑流程图
4.测试要点
5.用户界面设计说明
5.1 登录界面:
5.2教师界面
5.3管理员界面
5.4学生界面图
三、随机点名系统调试与运行
四、随机点名系统总结
五、附录
一、系统背景描述
1引言
课堂点名在教学中有着重要的作用.首先点名是教师保证学生上课的重要手段,是考核学生平时成绩的一个依据:点名还可以有助于教师认识学生.加强师生的联系。但是点名会占用课堂时间.增加教师的负担.尤其在班级人数较多时,因此点名次数受到限制。目前,随着信息技术的普及.在机房上实验课甚至理论课的情况越来越多,如计算机应用、AUTOCAD、网页制作等课程。而计算机相关专业,如软件专业、多媒体专业等专业在机房上课的情况可以占到近一半。对于这些机房上课的点名能不能采用信息化手段来提高效率呢?为此,笔者开发基于WEB的点名系统,用于机房上课的点名。WEB点名系统运行基本原理是:要点名时,教师开启系统的点智功能,然后学生就可以登陆到相应的WEB站点为自己报到,系统可以自动 总出未报到人数和未报到学生的名单,这样教师就可以轻松高效的完成点名。
2项目背景
在高校的教学管理中,点名也是很普通的事情,学生的出勤情况,以及平时上课是回答问题的情况,都要有记录,以作为学生的平时成绩,在期末考评的时候是一项重要指标,利用计算机辅助,做出一个点名系统的程序,将老师上课时需要用到的程序都做出来,将给老师上课及平时给学生评分带来方便。
利用计算机辅助进行上课点名工作,既提高了点名的科学性,又可大大减轻管理老师统计的工作强度,提高工作效率,从而使学校教务管理现代化迈上了一个新台阶。
利用计算机辅助进行上课点名工作,既提高了点名的科学性,又可大大减轻管理老师统计的工作强度,提高工作效率,从而使学校教务管理现代化迈上了一个新台阶。
3系统建模

图1.1 系统模块图
建立一个模型 ,需求分析是第一步 ,首先对点名系统系统需求进行分析 ,识别系统的用户和相关外部系统 ,以确定系统的角色,它可以帮助界定软件系统的边界 ,引导和发掘用户需求;其次再依据系统功能来确立系统的用例模型。
4点名系统用例图
4.1系统管理员用例图:

图1.2系统管理员用例图
4.2随机点名系统教师点名用例图:

图1.3随机点名系统教师点名用例图
4.3随机点名教师管理系统用例图:

图1.4随机点名教师管理系统用例图
4.4随机点名学生系统用例图:

图1.5随机点名学生系统用例图
4.5教师点名时序图:

图1.6教师点名时序图
4.6教师时序图:

图1.7教师时序图
4.7管理员时序图:

图1.8管理员时序图
4.8信息添加子功能:

图1.9:信息添加子功能
4.9信息删除子功能:

图1.10:信息删除子功能
4.10信息修改子功能:

图1.11:信息修改子功能
4.11随机点名教师系统类图:

图1.12随机点名系统类图
5 点名系统用例规约
5.1考勤管理用例
表1.1 考勤管理用例规约
| 用例编号:6 用例名:考勤管理 作者:---- |
| 用例描述:该用例描述了教师使用点名系统考勤点名 |
| 执行者 系统管理员、教师、学生 相关用例 1 登陆 2 进入管理页面 3编辑学生上课信息 前置条件 使用者必须拥有该功能使用权限,并且学生信息已被导入 后置条件 登录成功,用户可以编辑学生上课信息。 基本步骤 1 登陆 2 进入管理页面 3 编辑学生信息 4将修改后的信息写入数据库 |
5.2考勤管理用例:
| 用例编号:8 用例名:考勤管理 作者:---- |
| 用例描述:该用例描述了教师使用点名系统考勤点名 |
| 执行者 教师 相关用例 1 登陆 2 进入管理页面 3编辑学生上课信息 前置条件 使用者必须拥有该功能使用权限,并且学生信息已被导入 后置条件 登录成功,用户可以编辑学生上课信息。 基本步骤 1 登陆 2 进入管理页面 3 编辑学生信息 4将修改后的信息写入数据库 |
5.3查询个人考勤记录用例规约
| 用例编号:9 用例名:查询学生考勤记录 作者:---- |
| 用例描述:该用例描述了学生查询考勤记录 |
| 执行者 学生 相关用例 1 登陆 2 进入学生查询页面 3 返回个人信息 前置条件 用户登录系统,并且系统中存在已注册用户的相关信息。 后置条件 登录成功,用户可以进行个人信息查询。 基本步骤 1 登陆 2 个人信息查询 3 退出系统 |
| 字段名 | 意义 | 数据类型 | 宽度 | Null | PrimaryKey |
| ID | id | int | 自增长 | No | √ |
| ClassNumber | 课次 | Varchar | 50 | No | |
| StudentID | 学生编号 | Char | 10 | No | |
| StudentName | 学生姓名 | Char | 10 | No | |
| StudentNumber | 学号 | Char | 2 | No |
8.2student学生信息表
| 字段名 | 意义 | 数据类型 | 宽度 | Null | PrimaryKey |
| id | 序号 | Numeric | 9 | No | √ |
| number | 学号 | Char | 12 | No | |
| name | 班级 | Char | 10 | No |
8.3users用户表
| 字段名 | 意义 | 数据类型 | 宽度 | Null | PrimaryKey |
| userId | 用户Id | Int | 9 | No | √ |
| UserName | 用户名 | Char | 12 | No | |
| PassWord | 密码 | Char | 10 | No | |
| IsTeacher | 是否是老师 | Char | 10 | No |
| 字段名 | 意义 | 数据类型 | 宽度 | Null | PrimaryKey |
| ID | id | int | 自增长 | No | √ |
| ClassNumber | 课次 | Varchar | 50 | No | |
| StudentID | 学生编号 | Char | 10 | No | |
| StudentName | 学生姓名 | Char | 10 | No | |
| StudentNumber | 学号 | Char | 2 | No |
Student学生信息表
| 字段名 | 意义 | 数据类型 | 宽度 | Null | PrimaryKey |
| id | 序号 | Numeric | 9 | No | |
| number | 学号 | Char | 12 | No | √ |
| name | 班级 | Char | 10 | No |
3.逻辑流程图

图(二)2-2系统逻辑流程图
4.测试要点
(1)数据库是否正常链接
(2)输入关键字是否合法:多余空格、非法字符、数字、字母、空值。如果存在非法输入,弹出相应的提示信息。并可以重新输入。
(3)是否会在没有符合查询条件学生信息时,返回错误信息,并能重新输入。
(4)被检索出来的学生信息是否能正确的显示在数据窗口中。其中包括:是否显示了全部的符合查询条件的学生信息、数据窗口是否按20条一页的方式分页、数据窗口时候能按照学生序号由小到大顺序排列。
(5)另辟的窗口是否显示了与该学生有关的所有信息。
(6)学生信息是否能通过打印机进行打印出来。如果不能返回错误信息,并显示不能正常打印的原因。
5.用户界面设计说明
5.1 登录界面:

图(二)2-3
选择用户类型,输入对应的密码,系统判断是否正确,若正确则跳转入相应界面,否则弹出消息框给予错误提示。
5.2教师界面
由登录界面进入教师界面,判断数据库中是否已有成绩,出现下列界面,由于系统采用一次性评分形式,故在一般情况下选择“是”,这时数据库中的成绩将会清零,如若选择“否”,在评分中将会覆盖原有的成绩。

图(二)2-4教师管理页面界面
输入班级名称,点击“点名”,系统弹出一个窗口,显示被随机选中的学生姓名,此时可以在评分栏中对该学生进行相应的评分,然后点击确定。同时在点名结束后点击“成绩”按钮,跳转入下一功能界面。
在窗体左上部分显示当前班级信息,右边显示班级学生信息及其教师给予的分数,在这个功能界面中可以将数据导出(excel表)及打印。
5.3管理员界面
此模块在这个系统中占很大的比重,是所有系统能够运行的基础,选择菜单栏上的选项跳转入相关功能界面。

图(二)2-5学生信息管理界面
5.4学生界面图
学生享有的权限比较小,只能通过自己的学号查看相应信息。

图(二)2-6学生查询界面
三、随机点名系统调试与运行
随机数的产生过程中,即是产生随机姓名时,在产生时,是按照输入的班级然后统计这个班级的学生,得到一个数,即是随机数的上限,在点击“点名”按钮时只能随机出一个数,再次点击并没有任何的效果。随后对随机数肤质一个中间变量,才将此功能完成。
删除数据过程中,选中删除能够正常运行,显示框也能够进行相应的更新;而全部删除模块虽然能够成功删除数据库中的数据,但是显示框中不能进行更新,即数据已经删除时,在显示框中还显示着那些已经删除的数据,经过对代码的研究,最终发现可以把数据库的更新转化成对数据库的再次查询,即删除班级里所有学生信息后,紧跟着执行对该班级信息的查询,因此显示框中也就得到了相应的更新。修改模块中出现的问题只是一些界面排版的问题,问题不大,通过对一些界面版面的修改就完全成功了。
数据的导入与导出遇到的问题就比较大了,不是点击没反应就是数据无法完全导入和导出,好不容易能够导入了又只能导入一部分,数据类型的冲突非常的严重,在这里发了大量的时间和精力,发展到最后不得不重先编写数据库。数据的导入对每一行都有严格的规定,从网上寻找大量资料以及参考其他语言的数据的导入与导出编写方法,最终还是完成了本次遇到的最大难题。
四、随机点名系统总结
通过半期的uml学期,让我懂的了怎样使用rose建模工具画uml图,并对软件工程的框架有了一个大致的了解,并对用例图时序图都有一个比较直观的认识。通过后面的代码实现,也让我充分认识到自己写代码时的不足,虽然对基本的数据库连接都会写,可是代码中重复代码过多,代码不够精简。作为本组的组长,有事分工也不是很明确,以至于有时候大家写代码的时候有些功能大家来回写。通过这阵子uml的学习,让我充分认识到了自己的不足,我会私下好好自学设计模式,争取吧uml中的思想用到自己以后的代码中,让系统更加完美。最后感谢老师这半年的教导,谢谢老师!
五、附录
点名页面:StochasticCall.aspx
public static string Number = "0";
public static string SelectCommand = "SELECT * FROM [CheckOnClass]";
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand = SelectCommand;
}
protected void Button1_Click(object sender, EventArgs e)
{
SelectCommand = "SELECT top " + TextBox1.Text.Trim() + " * FROM [CheckOnClass] where ClassNumber = " + DropDownList1.SelectedValue + " order by newid()";
SqlDataSource1.SelectCommand = SelectCommand;
}
protected void Button2_Click(object sender, EventArgs e)
{
Number = TextBox2.Text.Trim();
SelectCommand = "SELECT * FROM [CheckOnClass] where StudentNumber = '" + TextBox2.Text.Trim() + "'";
SqlDataSource1.SelectCommand = SelectCommand;
}
前台总页面代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
CodeFile="IndexPage.aspx.cs" Inherits="IndexPage" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div style="z-index: 102; left: 26px; width: 776px; position: absolute; top: 62px; height: 309px">
<p>
</p>
<div style="z-index: 102; left: 145px; width: 608px; position: absolute; top: 9px; height: 119px"> <p>
<span style="font-size: 10pt"> 本学期一共
有20次点到,结果将计入最终的考核,形式为平时成绩,占总成绩的30%。</span></p> <p> <span style="font-size: 10pt">缺课占5次以上者,依据学校规定将取消其参加期末考试的
资格!</span></p>
<p> <span style="font-size: 10pt">系统将会及时将缺课率公布于下面的公告栏:</span></p>
</div>
<div style="font-size: 12pt; z-index: 101; left: 5px; width: 130px; position: absolute; top: 6px; height: 45px">
<table style="width: 132px; height: 106px">
<tr>
<td style="background-image: url(image/company.jpg)">
</td>
</tr>
</table>
</div>
<div style="z-index: 103; left: 4px; width: 754px; position: absolute; top: 123px;
height: 107px">
<span style="font-size: 10pt">
<br />
本期警告:<br />
赵薇缺课3次<br />
邵波缺课4次<br />
宋凌霄缺课4次</span></div>
</div>
<!-- java-script -->
<script>
<!--
marqueesHeight=300;
stopscroll=false;
with(marquees){
noWrap=true;
style.width=0;
style.height=marqueesHeight;
style.overflowY="hidden";
onmouseover=new Function("stopscroll=true");
onmouseout=new Function("stopscroll=false");
}
document.write('<div id="templayer" style="position:absolute;z-
index:1;visibility:hidden"></div>');
preTop=0;
function init(){
while(templayer.offsetHeight<marqueesHeight){
templayer.innerHTML+=marquees.innerHTML;
}
marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;
setInterval("scrollUp()",40);
}
function scrollUp(){
if(stopscroll==true) return;
preTop=marquees.scrollTop;
marquees.scrollTop+=1;
if(preTop==marquees.scrollTop){
marquees.scrollTop=templayer.offsetHeight-marqueesHeight+1;
}
}
init();
-->
</script>
<div style="z-index: 103; left: 23px; width: 108px; position: absolute; top: 41px;
height: 23px">
<span style="font-size: 14pt">系统公告:</span></div>
</asp:Content>

图(二)2-2系统逻辑流程图
4.测试要点
(1)数据库是否正常链接
(2)输入关键字是否合法:多余空格、非法字符、数字、字母、空值。如果存在非法输入,弹出相应的提示信息。并可以重新输入。
(3)是否会在没有符合查询条件学生信息时,返回错误信息,并能重新输入。
(4)被检索出来的学生信息是否能正确的显示在数据窗口中。其中包括:是否显示了全部的符合查询条件的学生信息、数据窗口是否按20条一页的方式分页、数据窗口时候能按照学生序号由小到大顺序排列。
(5)另辟的窗口是否显示了与该学生有关的所有信息。
(6)学生信息是否能通过打印机进行打印出来。如果不能返回错误信息,并显示不能正常打印的原因。
5.用户界面设计说明
5.1 登录界面:

图(二)2-3
选择用户类型,输入对应的密码,系统判断是否正确,若正确则跳转入相应界面,否则弹出消息框给予错误提示。
5.2教师界面
由登录界面进入教师界面,判断数据库中是否已有成绩,出现下列界面,由于系统采用一次性评分形式,故在一般情况下选择“是”,这时数据库中的成绩将会清零,如若选择“否”,在评分中将会覆盖原有的成绩。

图(二)2-4教师管理页面界面
输入班级名称,点击“点名”,系统弹出一个窗口,显示被随机选中的学生姓名,此时可以在评分栏中对该学生进行相应的评分,然后点击确定。同时在点名结束后点击“成绩”按钮,跳转入下一功能界面。
在窗体左上部分显示当前班级信息,右边显示班级学生信息及其教师给予的分数,在这个功能界面中可以将数据导出(excel表)及打印。
5.3管理员界面
此模块在这个系统中占很大的比重,是所有系统能够运行的基础,选择菜单栏上的选项跳转入相关功能界面。

图(二)2-5学生信息管理界面
5.4学生界面图
学生享有的权限比较小,只能通过自己的学号查看相应信息。

图(二)2-6学生查询界面
三、随机点名系统调试与运行
随机数的产生过程中,即是产生随机姓名时,在产生时,是按照输入的班级然后统计这个班级的学生,得到一个数,即是随机数的上限,在点击“点名”按钮时只能随机出一个数,再次点击并没有任何的效果。随后对随机数肤质一个中间变量,才将此功能完成。
删除数据过程中,选中删除能够正常运行,显示框也能够进行相应的更新;而全部删除模块虽然能够成功删除数据库中的数据,但是显示框中不能进行更新,即数据已经删除时,在显示框中还显示着那些已经删除的数据,经过对代码的研究,最终发现可以把数据库的更新转化成对数据库的再次查询,即删除班级里所有学生信息后,紧跟着执行对该班级信息的查询,因此显示框中也就得到了相应的更新。修改模块中出现的问题只是一些界面排版的问题,问题不大,通过对一些界面版面的修改就完全成功了。
数据的导入与导出遇到的问题就比较大了,不是点击没反应就是数据无法完全导入和导出,好不容易能够导入了又只能导入一部分,数据类型的冲突非常的严重,在这里发了大量的时间和精力,发展到最后不得不重先编写数据库。数据的导入对每一行都有严格的规定,从网上寻找大量资料以及参考其他语言的数据的导入与导出编写方法,最终还是完成了本次遇到的最大难题。
四、随机点名系统总结
通过半期的uml学期,让我懂的了怎样使用rose建模工具画uml图,并对软件工程的框架有了一个大致的了解,并对用例图时序图都有一个比较直观的认识。通过后面的代码实现,也让我充分认识到自己写代码时的不足,虽然对基本的数据库连接都会写,可是代码中重复代码过多,代码不够精简。作为本组的组长,有事分工也不是很明确,以至于有时候大家写代码的时候有些功能大家来回写。通过这阵子uml的学习,让我充分认识到了自己的不足,我会私下好好自学设计模式,争取吧uml中的思想用到自己以后的代码中,让系统更加完美。最后感谢老师这半年的教导,谢谢老师!
五、附录
点名页面:StochasticCall.aspx
public static string Number = "0";
public static string SelectCommand = "SELECT * FROM [CheckOnClass]";
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand = SelectCommand;
}
protected void Button1_Click(object sender, EventArgs e)
{
SelectCommand = "SELECT top " + TextBox1.Text.Trim() + " * FROM [CheckOnClass] where ClassNumber = " + DropDownList1.SelectedValue + " order by newid()";
SqlDataSource1.SelectCommand = SelectCommand;
}
protected void Button2_Click(object sender, EventArgs e)
{
Number = TextBox2.Text.Trim();
SelectCommand = "SELECT * FROM [CheckOnClass] where StudentNumber = '" + TextBox2.Text.Trim() + "'";
SqlDataSource1.SelectCommand = SelectCommand;
}
前台总页面代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
CodeFile="IndexPage.aspx.cs" Inherits="IndexPage" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div style="z-index: 102; left: 26px; width: 776px; position: absolute; top: 62px; height: 309px">
<p>
</p>
<div style="z-index: 102; left: 145px; width: 608px; position: absolute; top: 9px; height: 119px"> <p>
<span style="font-size: 10pt"> 本学期一共
有20次点到,结果将计入最终的考核,形式为平时成绩,占总成绩的30%。</span></p> <p> <span style="font-size: 10pt">缺课占5次以上者,依据学校规定将取消其参加期末考试的
资格!</span></p>
<p> <span style="font-size: 10pt">系统将会及时将缺课率公布于下面的公告栏:</span></p>
</div>
<div style="font-size: 12pt; z-index: 101; left: 5px; width: 130px; position: absolute; top: 6px; height: 45px">
<table style="width: 132px; height: 106px">
<tr>
<td style="background-image: url(image/company.jpg)">
</td>
</tr>
</table>
</div>
<div style="z-index: 103; left: 4px; width: 754px; position: absolute; top: 123px;
height: 107px">
<span style="font-size: 10pt">
<br />
本期警告:<br />
赵薇缺课3次<br />
邵波缺课4次<br />
宋凌霄缺课4次</span></div>
</div>
<!-- java-script -->
<script>
<!--
marqueesHeight=300;
stopscroll=false;
with(marquees){
noWrap=true;
style.width=0;
style.height=marqueesHeight;
style.overflowY="hidden";
onmouseover=new Function("stopscroll=true");
onmouseout=new Function("stopscroll=false");
}
document.write('<div id="templayer" style="position:absolute;z-
index:1;visibility:hidden"></div>');
preTop=0;
function init(){
while(templayer.offsetHeight<marqueesHeight){
templayer.innerHTML+=marquees.innerHTML;
}
marquees.innerHTML=templayer.innerHTML+templayer.innerHTML;
setInterval("scrollUp()",40);
}
function scrollUp(){
if(stopscroll==true) return;
preTop=marquees.scrollTop;
marquees.scrollTop+=1;
if(preTop==marquees.scrollTop){
marquees.scrollTop=templayer.offsetHeight-marqueesHeight+1;
}
}
init();
-->
</script>
<div style="z-index: 103; left: 23px; width: 108px; position: absolute; top: 41px;
height: 23px">
<span style="font-size: 14pt">系统公告:</span></div>
</asp:Content>

图 学生信息及教师对于学生的抽查评分数据。
图(二)2-1随机点名系统流程图