基于UML的运动会成绩统计系统设计1问题描述1.1运动会成绩统计系统包括个人成绩统计,单项成绩统计和团体成绩统计。1.2个人成绩统计即指该参赛者的所参与的各项运动后的单项成绩统计。1.3单项成绩统计即指某一项比赛项目的成绩统计,分为男子组和女子组。1.4团体成绩统计是按学员分组统计学院的得分,从而得出团体成绩的分数和排名。2用户需求2.1用户的身份识别系统的用户分为一般的用户(指包括参赛者在内的学生)和运动会成绩的统计人员。一般的用户只能查询运动会的成绩,运动会成绩的统计人员负责将成绩写入和修改。2.2运动会成绩输入运动会成绩的统计人员能将运动会的成绩写入系统,包括参与者编号,参与者的学院,学号,姓名,性别,项目,成绩,分数和名次等等。2.3运动会成绩修改记分员能通过输入参赛者的编号和项目,对该参赛者所参与的项目的成绩进行修改。2.4运动会成绩浏览和查询数据输入完毕后,用户可通过菜单查询到以下内容:2.4.1输入参赛者的编号能查询该参赛者所参加的所有项目的成绩情况。2.4.2通过选择学院,查看某学院的团体总分和名次。2.4.3通过选择某项比赛项目(分为男子组和女子组),能够查看参加了该项目的各个运动员的成绩。3系统分析3.1系统的用例模型建模3.1.1用户类划分用户类说明记分员这个运动会成绩统计系统的成绩输入工作主要由运动会的记分员输入运动的成绩,在作完输入成绩的工作后可以对成绩进行查看和修改。学生学生是包括参赛者在内的学生,可以查看运动会的各个成绩。3.1.2核心用例的用例图顶层用例图:顶层的用例图包含如下用例:(1)登陆系统。用户凭借账号和密码进行登录系统。(2)学生登进系统。学生进入学生登录后的页面。(3)记分员登进系统。记分员进入记分员登录后的页面。【用例图描述】参与者:用户(包括学生和记分员)用户凭自己的账号和密码登录系统,根据身份的选择,进入不同的登进界面。分解用例图1:此用例图包含如下用例:(1)登陆系统。记分员凭借账号和密码进行登录系统。(2)输入成绩。记分员输入成绩。(3)修改成绩。记分员修改成绩。【用例图描述】参与者:记分员用户凭自己的账号和密码登录系统,进入记分员的登进界面,进行成绩的输入操作和修改成绩操作。只有先正确登陆系统,才能进行查询和修改操作。即记分员的账号必须在数据库中存在,这样的记分员才是合法的用户。分解用例图2:此用例图包含如下用例:(1)登陆系统。学生凭借学号和密码进行登录系统。(2)查看成绩表。学生可以查看运动会成绩的统计表。【用例图描述】参与者:学生学生凭自己的学号和密码登录系统,进入学生的登进界面,进行查看运动会成绩表的操作。只有先正确登陆系统,才能进行查询和修改操作。即学生的学号必须在数据库中存在,这样的学生才是合法的用户。分解用例图2.1:学生登录系统用例【用例图描述】参与者:学生学生凭自己的学号和密码登录系统,进入学生的登进界面。分解用例图2.2:学生查看单项成绩统计用例【用例图描述】参与者:学生学生通过选择某项比赛项目(分为男子组和女子组),能够查看参加了该项目的各个运动员的成绩表。分解用例图2.3:学生查看个人成绩统计用例【用例图描述】参与者:学生学生通过输入参赛者的编号能查看该参赛者所参加的所有项目的成绩情况表。分解用例图2.4:学生查看团体成绩统计用例【用例图描述】参与者:学生学生通过选择学院,查看某学院的团体总分和名次表。3.2分析类图的描述经过分析,在运动会成绩统计系统中用到的主要类有6个:登录类(MyFrame),管理员窗口类(ManagerFrame),学生窗口类(StudentFrame),个人成绩表类(PersonalGame),团体成绩表类(TeamGame),单项成绩表类(SingleGame)。4系统设计4.1核心用例的设计类图建模(类图见下页)【类图说明】(1)MyFrame类是登录类,它的属性有窗口大小(size)、控件的种类(controler)、窗口背景(backgroundcolor),主要操作有生成界面(open)、身份识别(checkInfo)和选择登进窗口(selectFrame)。(2)ManagerFrame类是管理员窗口类,它的属性有窗口大小(size)、控件的种类(controler)、窗口背景(backgroundcolor),主要操作有输入成绩(addScore)和修改成绩(updateScore)。(3)StudentFrame类是学生窗口类,它的属性有窗口大小(size)、控件的种类(controler)、窗口背景(backgroundcolor),主要操作是生成不同的表(selectFrame)。(4)PersonalGame类是个人成绩表类,它的属性有窗口大小(size)、控件的种类(controler)、窗口背景(backgroundcolor),主要操作有查找编号(selectSID)和显示成绩(showScore)。(5)TeamGame类是团体成绩表类,它的属性有窗口大小(size)、控件的种类(controler)、窗口背景(backgroundcolor),主要操作有选择学院(selectCollege)、计算该学院总分(calculateTotalScore)、计算该学院总名次(calculateTotalRanking)和显示成绩(showScore)。(6)SingleGame类是单项成绩表类,它的属性有窗口大小(size)、控件的种类(controler)、窗口背景(backgroundcolor),主要操作有选择比赛项目(selectEvent)、选择组别(selectSex)和显示成绩(showScore)。4.2核心用例的顺序图建模4.2.1学生登录用例顺序图4.2.2记分员登录用例顺序图4.2.3记分员输入成绩用例顺序图4.2.4记分员修改成绩用例顺序图4.2.5学生查看个人成绩统计表用例顺序图4.2.6学生查看单项成绩统计表用例顺序图4.2.7学生查看团体成绩统计表用例顺序图4.3核心用例的状态图建模4.2.1学生登录用例状态图4.2.2学生查看单项成绩统计表用例状态图4.2.3学生查看个人成绩统计表用例状态图4.2.4学生查看团体成绩统计表用例状态图4.2.5记分员登录用例状态图4.2.6记分员输入成绩用例状态图4.2.7记分员修改成绩用例状态图4.4组件图建模通过分析,对系统的业务构建组件图如下:【组件图说明】该系统的项目包是sports,分有三个组件,一个是逻辑组件(logicConponent),一个是视图组件(viewComponent),另一个是数据库(database)。逻辑组件负责总体协调,并且与数据库组件相连,在数据库中提取相关信息并进行有关的计算。数据库组件是存储数据信息,系统的后台。视图组件是负责显示系统的界面显示,是用户看见的界面,也是用户和系统的接口。5系统实施5.1信息代码设计本次的系统设计的开发环境是NetBeansIDE6.0,JDK1.5。在代码设计阶段,一共设计8个类,每个类实现不同的功能,具体如下:Sports.java:是项目的入口,主类。该类的功能是生成系统的登录界面,通过newMyFrame(),显示用户登录界面,用户输入账号密码,并选择权限,系统能判断其合法性,进入不同的登进界面。ErrorDialog.java:该类是关于当用户输入的信息不存在或者系统运行时出错时,用来生成“提示错误”的对话框的。ManagerFrame.java:该类是关于记分员成功登录进系统后用来生成添加成绩和修改成绩界面的,记分员要修改成绩,需输入参赛者的编号和项目名称,此时系统将数据库中的信息输出到窗口中,记分员再进行修改。StudentFrame.java:该类是关于学生成功登录进系统后用来生成界面的,以选择希望查看的成绩表。PersonalGame.java:该类是关于学生选择查看个人成绩表后用来生成界面的,学生输入参赛者编号,此时系统将数据库中的信息输出到窗口中,便可以查看成绩。SingleGame.java:该类是关于学生选择查看单项成绩表后用来生成界面的,学生选择项目和组别,此时系统将数据库中的信息输出到窗口中,便可以查看成绩。TeamGame.java:该类是关于学生选择查看团体成绩表后用来生成界面的,学生选择学院,此时系统将查找数据库中的信息,再计算总成绩和名次并输出到窗口中,便可以查看成绩。5.2数据库设计此次系统采用的数据库是MySQL。本次系统设计两张表,一张表记录的是用户的信息,即用户名和密码;另一张表记录的是运动会的全部成绩。5.2.1用户信息表user(SID,SNAME,SKEY)该表存储的是用户的账号,姓名和密码,其中对于学生而言就是学号和密码。5.2.2运动会成绩表totalgame(SID,SNAME,SSEX,SDEPT,SAGE,EVENT,RESULT,SCORE,RANKING)该表存储的是运动会的成绩,即参赛者编号,姓名,性别,学院,年龄,项目,成绩,分数和名次。5.3输入设计、输出设计的描述本次设计的系统,在输入的设计上,是应该使用者与系统有较强的交互性,界面简洁明了,并且在使用者进行相关的操作时有一定的提示。而且考虑到不同权限的使用者,所以通过系统登录的界面应该是不一样的。另外,当使用者使用该系统的登录界面登录系统的时候,系统要对用户身份的合法性进行判断,这是系统安全性的体现。在输出的设计上,也是考虑到了人性化。将系统查找后的结果输出到文本区,并显示列名。在登录系统的时候,如果身份不合法,通过弹出对话框给出提示。在用户输入密码的时候,密码不能直接显示在屏幕上,而是以“*”的形式显示,这都是体现了系统的安全性能。当用户使用该系统时,如果操作失败,系统也会弹出对话框给予提示。这将用户操作的结果明朗化了。6用户界面设计和处理过程的设计的描述6.1用户登录界面当用户输入了账号和密码后要选择自己的权限,是学生还是记分员。这样系统判断用户合法后会跳到不同的界面。6.2当用户的权限不一样会跳转到不同的界面6.2.1当用户是学生权限时,进入系统后所看见的界面此时学生可以选择自己想看的成绩统计表,进入不同的界面。6.2.2当用户是记分员的权限时,进入系统后所看见的界面6.4学生选择“查看团体成绩统计表”后系统跳转的界面6.3学生选择“查看单项成绩统计表”后系统跳转的界面6.5学生选择“查看个人成绩统计表”后系统跳转的界面7系统测试测试是采用测试用例执行软件的活动。测试有两个显著目标:找出失效,或演示正确的执行。在对每个模块的编码后,对程序本身,采用结构性测试的方法,主要是采用路径测试的方法。在将各个模块集成后,采用功能性测试的方法,主要是采用划分等价类的方法,从输入的正确和错误两个方面分别设计不同的测试用例,测试过程和结果如下所示:7.1登录的测试7.1.1当输入正确用户名和密码后,可以成功登录。即输入的账号是1111,密码是1111,并选择记分员的权限。7.1.2当输入的用户名和密码不匹配时,不能成功登录即输入的账号是1111,密码是0101,并选择记分员的权限时,登录失败,并且系统给出提示。7.1.3当输入的用户名并不存在时,不能成功登录即输入的账号是1000,密码是1111,并选择记分员的权限时,登录失败,并且系统给出提示。7.2记分员输入成绩的测试此时查看数据库:7.3记分员修改成绩的测试首先输入参赛者的编号和和项目名称。点击修改成绩的按钮后,系统查找数据库,能将要修改的信息显示到窗口中。(如右图所示)修改相应的成绩后点击确定后此时查看数据库,“张力”的成绩如下:7.4学生查看单项成绩的测试7.4.1学生查看的单项成绩存在选择下拉列表中的项目,并选择组别(男子组或女子组),再按确定。7.4.2学生查看的单项成绩不存在(或者暂时没有输入)7.5学生查看团体成绩的测试学生选择学院,再点击确定按钮。注:学院的总成绩是动态的,系统是根据当前数据库中的数据计算的,如果个人的分数变化,总分也会跟着变化。7.6学生查看个人成