(完整word版)运动会成绩管理系统(JAVA)_第1页
(完整word版)运动会成绩管理系统(JAVA)_第2页
(完整word版)运动会成绩管理系统(JAVA)_第3页
(完整word版)运动会成绩管理系统(JAVA)_第4页
(完整word版)运动会成绩管理系统(JAVA)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、开发背景3二、系统描述3三、详细设计51模块功能51.1系统人员管理模块512、运动员管理模块613、运动员成绩管理模块62、数据库结构设计73、界面及代码设计93.1、登录子系统开发93.2、系统用户管理模块113.3、运动员信息管理模块153.4、运动员成绩管理模块17四、心得体会20五、参考文献2120一、开发背景当前,运动会已经在全国普遍开展,许多学校每年都定期的举行不同规模的 田径运动会。但是,在运动会举行过程中一直存在着参赛人数多, 项目设置复杂, 时间安排紧凑等问题,而且这些问题能否解决直接关系着运动会的成功与否。另一方面,人们对于比赛结果的实时性、准确性、安全性、可靠性的要

2、求也越来越 高,而这些要求是人工操作很难实现的。同时竞赛组织者要尽量减少人为因素的 干扰,减少赛场作弊行为的发生,还要为参赛的教练员和运动员及时准确地提供 竞赛的相关信息,辅助进行竞赛的决策指导。因此,计算机技术的融入就成为一 种必然,而且逐渐成为运动会信息管理的核心所在。根据调查,现在全国已经有不少学校在田径运动会举办过程中采用了现代化 的计算机技术进行运动会的系统管理, 有的已经达到了一个相当高的水平。 但是 我们发现这些运动会管理系统的设计和实现标准不一,参差不齐,而且更多的情况下这些系统只是实现了对运动会的分数统计等功能,在提供运动会的整个举办 过程中的人性化、自动化服务等方面还有许多

3、不足和欠缺。 我们小组根据当前学 校运动会的开展组织情况,结合运动会的组织原则和相关规定, 运用现代计算机 技术,以全新的模式设计开发了适合田径运动会的校级运动会管理系统。采用了本运动会管理系统后,运动员在比赛前由院系统一输入个人信息即 可,这样就方便了运动员的报名,有错误时可以及时汇报修改。裁判员单独对各 自的项目进行管理,保证上了比赛的公正、公平。每个项目都有单独的帐号和密 码对应,以保证成绩录入人员对自己管辖范围的唯一性和确定性。在成绩查询界面中可以准确及时的查询到各参赛队伍、 各项目、各运动员的个人信息、比赛成 绩、排名、和团体加分的情况。以上运动会中各环节组织和编排工作的系统实现,

4、使大量繁琐的人工组织编排任务通过简单方便的操作便可以实现,大大减轻了运动会组织人员的劳动强度,节省了大量物力、人力、财力,提高了工作效率,保 证了数据的实时性、准确性、安全性、可靠性,充分体现出了现代化的计算机技 术在信息采集、处理、和管理等方面的无可比拟的优越性。二、系统描述本系统采用软件工程原理,使用面向对象的 Java编程环境编写校级运动会 管理系统,利用SQL Server数据库技术,对数据库进行了全面的开发。系统主 要包括前台应用程序的开发以及后台数据库的建立和维护两个方面,实现了运动员成绩数据库的创建及运动员成绩的输入、统计、浏览和维护,使得系统具有界 面友好,功能强大,易于维护的

5、特点。本校级运动会管理系统在功能实现方面主要分为以下几点:1)运动员个人信息管理模块。运动员管理与普通的用户管理基本类似,包 括用户的添加、修改、编辑和删除功能,参赛项目的维护。例如有的运动员临时因伤不能参寒,有的又调整为可以参加某个项目(虽然严格说来,不允许运动员 临时更改参赛项目,但需要在系统中留有余地)。2)运动员成绩管理模块。操作员可以对成绩进行录入,一旦提交则只能查 看不能修改管理员可以查看成绩并调整成绩, 因为前场工作人员可能犯错,需要 管理员进行更改,但日志中要对此更改进行记录。运动员可以通过终端查看运动 成绩。3)权限管理模块。管理员可以对操作人员进行信息维护,如增加前场成绩

6、录入人员,或者某位成绩录入人员调离岗位则取消其权限。对于运动员可以匿名 查询某个项目的成绩。综合以上情况,设计系统体系结构如图 1所示。应用层提供诸如GUI的显示、事件的处理等;代理层是分离上层和具体数 据库访问层的,也可以称为业条层,这样的目的是当数据库发生变更时, 可以将 程序的改动缩减到最小。数据库接口层是与具体的数据库进行交互, 对数据进行 提取、存入操作。模块包是与数据库实体相对应的类定义,也可以说与数据库中的每条记录相对应。三、详细设计1模块功能1.1系统人员管理模块该模块实现系统人员的添加、修改、查询和删除,先在数据库中添加管 理员帐户。管理员在用户管理方面拥有一切权限,而普通用

7、户只有修改个人密码、 查询个人信息、运动会比赛信息、比赛成绩及获奖情况的权限。如图 2所示。系统人员 管理模块_*系系系系统统统统操操操操作作作作员员员员信信信信息息息息的的的的输修删查入改除询1.2、运动员管理模块该模块由管理员对运动员个人信息的录入、修改及删除功能。普通用户可以实现对运动员个人信息的查询功能。其功能层次如图3所示。图31.3、运动员成绩管理模块该模块实现管理员录入运动员的成绩、查询成绩、修改成绩删除查询到的成绩信息以及普通用户查询成绩。其功能层次图如图4所示。2、数据库结构设计表1 运动会项目表(Sportitems)列名数据类型可否为空说明ItemidVARCHAR(20

8、)NOT NULL体育项目编号ItemNameVARCHAR(50)NOT NULL项目名称ItemTypeVARCHAR(50)所属的运动类别voidVARCHAR(1)是否有效表2 运动员参赛项目表(ItemAttend)列名数据类型可否为空说明SportorIdVARCHAR(20)NOT NULL运动员编号ItemIdVARCHAR(20)NOT NULL体育项目编号ScoreVARCHAR(50)成绩voidVARCHAR(1)本条记录是否有效表3运动员个人信息表(Sportor)列名数据类型可否为空说明SportorldVARCHAR(20)NOT NULL运动员编号NameVAR

9、CHAR(50)NOT NULL运动员名称Gen derVARCHAR(1)性别。M男,F女WeightFLOAT体重,单位KgHeigthFLOAT身高,单位cmAgeINT年龄GradeINT等级voidVARCHAR(1)是否参赛标志。丫 为无效,已经被删 除。N为有效,参 加本次比赛表4系统用户信息(SysUser)列名数据类型可否为空说明SysUserldVARCHAR(20)NOT NULL系统用户的编号NameVARCHAR(20)NOT NULL姓名PasswordVARCHAR(50)NOT NULL密码Gen derVARCHAR(1)性别RoleldVARCHAR(20)

10、所属于的角色voidVARCHAR(1)用户是否有效表5系统用户角色(Roles)列名数据类型可否为空说明RoleldVARCHAR(20)NOT NULL角色编号RoleNameVARCHAR(50)角色名称voidVARCHAR(1)是否生效3、界面及代码设计3.1、登录子系统开发由于每个系统中都涉及登录子系统,因此在这里并不进行过多介绍, 只提供一个登录子系统的框架,登录成功后程序的流程应根据登录用户的身份来 区别对待。登录系统的界面如图 5所示。言运动会管理系st用户名: 密码:主要代码如下:public static void main( Stri ng args) / TODO A

11、uto-ge nerated method stub/*根据需要,打开下面运行开关*/*主登录窗口界面StartApp mainForm = new StartApp(); mainForm.ln itUI();*/运动员管理模块/new SportorMa nageme nt();/运动员成绩管理模块new SportorScoreMa nageme nt();/系统人员管理模块new SysUserMa nageme nt();/public class Log in EvtHa ndle impleme nts Actio nListe nerpublic void actio nPef

12、ormed(Actio nEvent e)tryif( (JButt on )e.getSource() = jbtLogi n )根据用户登录身份,转向对应的界面Stri ng UserName = jtxtUser.getText().trim();Stri ng Password = jtxtPass.getText().toStri ng();Enu mRolerole=UserRole.getUserRole( jcmblde ntify.getSelectedltem().toStri ng().trim();System.out.pri ntln (UserName: + Use

13、rName + Password: +Password + + Role : + role);if( role = Enu mRole.NOROLE )JOptionPane.showMessageDialog(null,用户角色未设定,请单击 匿名登录访问系统!,”错误 ”,JOptionPane.ERROR_MESSAGE);return;else if( role = Enu mRole.NOTSUPPORT )JOptionPane.showMessageDialog(null,用户角色不支持,请联系管理员!,”错误,JOptionPane.ERROR_MESSAGE);return;

14、else if( role = Enu mRole.SYSADMINISTRA TOR )连接数据库,验证是否管理人员RoleAccessProxy roleProxy = new RoleAccessProxy();if( roleProxy.ValidateUserExist(UserName,Password,RoleldMapRoleName.SYSADMIN)= true )JOptionPane.showMessageDialog(null,登录成功!,” 正 确 ,JOptionPane.INFORMA TION_MESSAGE);elseJOptionPane.showMess

15、ageDialog(null,用户角色不支持,请联系管理员!,” 错误,JOptionPane.ERROR_MESSAGE);System.exit( - 1 );else if( role = Enu mRole.SYSOPERATOR )连接数据库,验证是否系统操作人员并转到相应界面 RoleAccessProxy roleProxy = new RoleAccessProxy();if( roleProxy.ValidateUserExist(UserName,Password,RoleldMapRoleName.SYSOPERATOR)=true )JOptionPane.showMe

16、ssageDialog(null,登录成功!,” 正 确”,JOptionPane.INFORMA TION_MESSAGE);elseJOptionPane.showMessageDialog(null,用户角色不支持,请联系管理员!,” 错误,JOptionPane.ERROR_MESSAGE);return;elseJOptionPane.showMessageDialog(null,发生未知 错误!,” 错误,JOptio nPan e.ERROR_MESSAGE );return;else if( (JButt on )e.getSource() = jbtA nonym ous )

17、System.out.pri ntln (A nonym ous);elseSystem.out.pri ntl n(” Un supported!);catch(Excepti on ex)System.out.pri ntl n(” Unknow Excepti on: + ex.getMessage();当用户输入用户名、密码和登录身份后,会通过RoleAccessProxy类进行底层访问,查看用户登录信息是否正确!代码如下:RoleAcessProxy roleProxy=new RoleAccessProxy();lf(roleProxy.ValidateUserExist(User

18、Name,Password,RoleldMapRoleName.SYSADMIN)=true)JOptio nPan e.showMessageDialog( null,登 录 成 功 !, 正 确,JOptionPane.INFORMA TION_MESSAGE);Else JOptio nPa ne.showMessageDialog( null,用户 角色不支持,请联系管理员!,”错 误 ,JOptio nPan e.ERROR_MESSAGE);System.exi(-1);3.2、系统用户管理模块系统用户管理模块是实现对本系统中的操作人员一一管理人员的权限分6所示。人扇紳电:人報牲名

19、:adminSYSOPER U8ER000性JM :回杀卿1尸首理配、个人信息修改、密码设定、删除等功能,其运行界面如图系统用户管理的界面相对复杂一些,其中最左边是一个列表框,用来显示列表式的数据,在这里就是本系统中的用户。右侧面板主要是当选中左侧列表中的某个 用户时显示该用户的对应信息,可以对用户数据进行编辑、删除等操作。主要代码如下:/为用户列表提取数据SysUserProxy sysUserProxy = new SysUserProxy();vecSysUsers = sysUserProxy.getAIISysUsers();trysysUserProxy.closeDbC onne

20、ction();catch(SQLExceptio n ex)for( int i = 0; i vecSysUsers.size(); i + )lstUserList.add(SysUser)vecSysUsers.eleme ntAt(i).getName() +(SysUser)vecSysUsers.eleme ntAt(i).getSysUserld();/*为控件注册事件*/this .l stUserList.addltemListe ner( new ListItemCha nge();UserOperActio n bt nEvtHa ndle = new UserOper

21、Actio n();this.bt nDelSysUser.addActio nListe ner(bt nEvtHa ndle);this.bt nU pdateUser.addAct ion Liste ner(bt nEvtHa ndle);class ListltemCha nge impleme nts ItemListe nerpublic void itemStateCha nged(ltemEve nt e)java.awt.List lstCtrl = (java.awt.List)e.getSource();Stri ng str = lstCtrl.getSelected

22、ltem();if( str = n ull | str =)return;String result = str.split(s); / 分解成 TokenString sysUserId = result2;SysUserProxy sysUserProxy = new SysUserProxy();SysUser in sta nceSysUser = sysUserProxy.getUserByld(sysUserld); txtSysUserld.setText( in sta nceSysUser.getSysUserld(); txtSysUserName.setText( in

23、 sta nceSysUser.getName();if( in sta nceSysUser.getGe nder().equals( M)cmbGe nder.setSelectedl ndex(O);else if( in sta nceSysUser.getGe nder().equals(F)cmbGe nder.setSelectedl ndex(1);txtSysUserPassword.setText( in sta nceSysUser.getPassword(); txtRetrySysUserPassword.setText( in sta nceSysUser.getP

24、assword();if( in sta nceSysUser.getRoleld().equals(RoleldM apRoleName.SYSADMIN ) cmbSysUserRole.setSelectedl ndex(O);elseif(in sta nceSysUser.getRoleld().equals(RoleldMapRoleName.SYSOPERATOR)cmbSysUserRole.setSelectedl ndex(1);elsecmbSysUserRole.setSelectedl ndex(2);if( in sta nceSysUser.getVoid().e

25、quals(Y) chkSysUserVoid.setSelected(true);elsechkSysUserVoid.setSelected(false);trysysUserProxy.closeDbC onn ecti on();catch(SQLExcepti on ex)class UserOperActio n impleme nts Actio nListe nerpublic void actio nPerformed(Actio nEvent e)if( e.getSource() = (JButto n)bt nDelSysUser )删除系统用户Stri ng user

26、id = txtSysUserld.getText();Stri ngfin alSql = DELETEFROM SysUser WHERESYSUSERID=+userld+;SysUserProxy sysUserProxy = new SysUserProxy(); sysUserProxy.UpdateUserByld(fi naISql);JOptio nPan e.showMessageDialog( null,删除成功! ,” 成功 ,JOptionPane.INFORMA TION_MESSAGE);else if( e.getSource() = (JButt on )bt

27、 nU pdateUser )/更新现有用户Stri ng userld = txtSysUserld.getText();Stri ng userName = txtSysUserName.getText();String Gen der;if( cmbGender.getSelectedltem().toString().equals(男)Gen der = M;elseGen der = F;String Pass;if( txtSysUserPassword.getText().equals(txtRetrySysUserPassword.getText()Pass = txtSysU

28、serPassword.getText();elseJOptionPane.showMessageDialog(null,密码不匹配,错误 ,JOptio nPan e.ERROR_MESSAGE);return;String userRole;if( cmbSysUserRole.getSelectedltem().toString().equals(” 系统管理员) userRole = RoleldMapRoleName.SYSADMlN;else if(cmbSysUserRole.getSelectedltem().toString().equals(系统操作员)userRole =

29、 RoleldMapRoleName.SYSOPERA TOR;elseuserRole =;Stri ng Void;if( chkSysUserV oid.isSelected() = true)Void = Y;elseVoid = N;Stri ng fin alSql = UPDATE SYSUSER SET NAME= + userName + , + PASSWORD = + Pass + , GENDER* + Ge nder + , + ROLElD= + userRole + , VOlD= + V oid + WHERE + SYSUSERlD= + userld + ;

30、SysUserProxy sysUserProxy = new SysUserProxy(); sysUserProxy.UpdateUserByld(fi naISql);JOptio nPan e.showMessageDialog( null,更新成功! ,成功”,JOptionPane.INFORMA TION_MESSAGE);单击“更新用户”按妞,则触发相应事件,调用SysUserProx y类实现更新操作。与登录子系统中的RoleAccessProxy类相类似,SysUserProxy也是对数据访问进 行了封包,使上层应用无须与底层直接接。这样增强了系统的可移植性和可扩展 性。关

31、于SysUserProxy类的代码在此处省略。3.3、运动员信息管理模块运动员信息管理模块主要实现对人员个人信息的维护,其界面布局与系统用户管理模块类似,如图7所示。SPTSMANOO 耳手 OISPTSMANQOOt 時手 02SPTSkWJ0(?Q二 0 Afitt 号;人 KttS-赛鞄手出.II男一小17S0年an,71 ni ifiiiiiiUILUiIMJ1 HtMAN 00002举主手 SPTSMANDOOD WSPTSMANOQOOl图7实现此模块的主要代码如下:class UserOperActio n impleme nts Actio nListe nerpublic v

32、oid actio nPerformed(Actio nEvent e)if( e.getSource() = (JButto n)bt nAddUser )/增加系统用户/*课后作业*/JOptio nPan e.showMessageDialog( null,新增成功! ,” 成功 ,JOptionPane.INFORMA TION_MESSAGE);return;else if( e.getSource() = (JButt on )bt nU pdateUser )/更新现有用户Stri ng userid = txtUserld.getText();Stri ng userName

33、= txtUserName.getText();String Gen der;if( cmbGender.getSelectedltem().toString().equals(男)Gen der = M;elseGen der = F;float weight = O.Of;if( txtUserWeight.getText() != null & txtUserWeight.getText() !=)weight = Float.parseFloat(txtUserWeight.getText();float height = O.Of;if( txtUserHeight.getText(

34、) != null & txtUserHeight.getText() !=)height = Float.parseFloat( txtUserHeight.getText();int age = 0;if( txtUserAge.getText() != n ull & txtUserAge.getText() !=)age = In teger.parse lnt( txtUserAge.getText();int grade = 0;if( txtUserGrade.getText() != n ull & txtUserGrade.getText() !=)grade = In te

35、ger.parse lnt( txtUserGrade.getText();Stri ng Void;if( chkSysUserV oid.isSelected() = true)Void = Y;elseVoid = N;Stri ng fin alSql =;fin alSql = UPDATE sportor +SET NAME= + userName +,GENDER=”+Ge nder + , +WEIGHT= + weight + , HEIGHT = + height + , +AGE = + age +, + GRADE = + grade + ,VOID= +Void +

36、+WHERE SPORTORID=+ userId + ;SportorProxy UserProxy = new SportorProxy();UserProxy .UpdateUserByld(fi naISql);JOptio nPan e.showMessageDialog( null,更新成功! ,成功,JOptionPane.INFORMA TION_MESSAGE);return;else if(e.getSource() = (JButto n)bt nDelUser)Stri ng userld = txtUserId.getText();Stri ngfin alSql=

37、DELETEFROM sportor WHERESPORTORID=+userId+”;SportorProxy UserProxy = new SportorProxy();UserProxy.UpdateUserByld(fi naISql);lstUserList.removeAII();Ini tCtlData();JOptio nPa ne.showMessageDialog( null,删除成功!”,JOptionPane.INFORMA TION_MESSAGE);return;3.4、运动员成绩管理模块这一功能模块在结构上采用三级连动方式,即一级菜单的动作触发二级菜单的响应,二

38、级菜单的动作影响三级菜单的显示基于这个依据,设计界面如图8所示。*100*ITEM(M005MisrnEiwQaooeWe MOOO 09 S4r;ttrTEMOODlD1:1典科3:W5c 睨箱有蝕性:无处主要代码如下:class ListItemCha nge impleme nts ItemListe nerpublic void itemStateCha nged(ltemEve nt e)if( e.getSource() = (java.awt.List)lstSportItems )初始化界面txtScore1.setText();txtScore2.setText();txtS

39、core3.setText();txtScore4.setText();txtScore5.setText();txtScore6.setText();chkValid.setSelected(false);java.awt.List lstCtrl = (java.awt.List)e.getSource();Stri ng str = lstCtrl.getSelectedltem();if( str = n ull | str =)return;String result = str.split(s); / 分解成 TokenString itemId = result2;Stri ng

40、 sqlQuery = SELECT a.n ame, a.sportorid +FROM sportor a,itemAtte nd b +WHERE b.itemid = + itemId + and + b.sportorid = a.sportorid ;SportorProxy sportProxy = new SportorProxy();Vector vecSportor = sportProxy.getSportUsersBySql(sqlQuery); lstSportors.removeAII();for( int i = 0; i vecSportor.size(); i

41、 + ) lstSportors.add(SportsMa n)vecSportor.eleme ntAt(i).getName() + + (SportsMa n)vecSportor.eleme ntAt(i).getSportorld();trysportProxy.closeDbC onnection();catch(SQLExcepti on sqlEx)else if( e.getSource() = (java.awt.List)lstSportors )初始化界面txtScore1.setText();txtScore2.setText();txtScore3.setText(

42、);txtScore4.setText();txtScore5.setText(); txtScore6.setText();chkValid.setSelected(false);显示成绩Stri ng str = lstSportors.getSelectedltem();if( str = n ull | str =)return;String result = str.split(s); / 分解成 TokenStri ng SportorId = result2;str = lstSportltems.getSelectedltem();if( str = n ull | str =

43、)return;result = str.split(s);Stri ng Sportltemld = result2;ItemAtte ndProxy itemAtte ndProxy = new ItemAtte ndProxy();ItemAtte nditemAtte nditemAtte ndProxy.getSportltemByld(Sportltemld,Sportorld);tryitemAtte ndProxy.closeDbC onnection();catch(SQLExcepti on ex)if( itemAttend.getV oid().equals(Y) )c

44、hkValid.setSelected(true);elsechkValid.setSelected(false);Strin g scores = itemAtte nd.getScore().split(s); switch(scores .len gth)case 1:txtScore1.setText( scores0);break;case 3:txtScore1.setText( scores0);txtScore2.setText( scores2); break;case 5:txtScore1.setText( scores0);txtScore2.setText( scores2);txtScore3.setText( scores4);break;case 7:tx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论