资源描述
传播优秀Word版文档 ,希望对您有帮助,可双击去除!运动会成绩管理系统Java课程设计小组成员:姓名: 班级: 学号: 日期: 2012年1月4日6日传播优秀Word版文档 ,希望对您有帮助,可双击去除!目录运动会成绩管理系统21 概述21.1 课程设计的目的和意义21.2 团队介绍21.2.1成员介绍21.2.2 组内分工22 系统功能介绍32.1 数据库结构设计介绍42.1.1 数据库和表名称42.1.2 表的结构设计42.2 管理模块介绍52.2.1 赛前管理模块62.2.2 成绩管理模块62.2.3 成绩查询模块62.2.4 用户管理模块73 系统界面展示73.1 主界面73.2 登录后的主界面73.2.1 用户管理83.2.2 赛前管理83.2.3 成绩管理83.2.4 成绩查询93.2.5 更换背景93.2.6 帮助管理94 主要程序代码104.1 mainframe104.2 Runframe144.3 connection175 个人总结18参考文献19传播优秀Word版文档 ,希望对您有帮助,可双击去除!运动会成绩管理系统1 概述1.1 课程设计的目的和意义运动会管理系统是针对一般的小型运动会中成绩的记录仍需要手工处理和排序、个人的成绩往往会在处理中丢失或者不准确、比赛排名出来慢等现象而设计的,通过这个小型的运动会管理系统,展现如何设计这样一个复杂的系统。运动会项目繁多,如何使系统具有良好的扩展性和稳定性,对于一个系统来说将面临很大的挑战,需要处理的数据格式也不一致,如何很好地考虑这些,对于设计实现人员来讲,也都有一定的难度。本例包含了数据库层的的设计、业务的处理以及Java界面的实现,从各个方面进行详细的设计和规划,使整个系统能够满足现实需要。通过Java课程设计,学生能够了解整个课程设计的流程及系统设计实现过程,使学生能够更好的将课堂所学知识运用于实践中,在实践中检验自己的所学,同时也锻炼学生的动手能力以及思考能力。1.2 团队介绍1.2.1成员介绍组长:祝组员:龙、熊、李、余、郭、王、刘1.2.2 组内分工祝:负责组内的任务分工,在课程设计的过程中协调组员之间的合作。同时负责程序设计中运动员成绩查询模块的设计。龙:负责程序设计中运动员成绩管理模块的设计。熊:负责系统开发的设计及程序文档的撰写。李:负责程序中数据库的搭建与连接。余:负责用户管理模块的设计。郭:负责数据库中表单的输入及帮助文档的撰写。王:负责数据库中表单的输入及帮助文档的撰写。刘:主要负责协助组长工作,在本次课程设计中起协助作用。传播优秀Word版文档 ,希望对您有帮助,可双击去除!2 系统功能介绍本系统采用软件工程原理,使用面向对象的Java编程环境编写运动员管理系统,利用SQL Sever数据库技术,对数据库进行了全面的开发。该运动员管理系统主要包括前台应用程序的开发以及后台数据库的建立和维护两个方面,实现了运动员成绩数据库的创建及运动员成绩的输入、统计、浏览和维护,使得系统具有界面友好,功能强大,易于维护的特点。本运动会成绩管理系统在功能实现方面主要分为以下几点:1. 赛前管理模块。这一模块是主要完成运动会参赛项目的维护,如确定每个学院运动员的编号范围,参赛的项目,及以往运动会的历史记录。2.运动员成绩管理模块。操作员可以对成绩进行录入,一旦提交则只能查看不能修改;管理员可以查看成绩并调整成绩,因为前场工作人员可能犯错,需要管理员进行更改,但日志中要对此更改进行记录。3.运动员成绩查询模块。用户可以通过终端查看运动员成绩信息、项目成绩信息、学院成绩信息、每日成绩、名次查询。4.用户管理模块。包括用户的添加、修改、编辑和删除功能。管理员可以对操作人员进行信息维护,管理普通用户。普通用户在注册后登陆查询运动员成绩。5.系统帮助模块。提供相关的系统帮助文档,包括成绩查询帮助、成绩管理帮助、赛前管理帮助、用户使用帮助。设计系统体系结构如图1所示。其中,应用层提供诸如GUI的显示、事件处理等;代理层是分离上层和具体数据库访问层的,也可称为业务层,这样的目的是当数据库发生变更时,可以将程序的改动缩减到最小。数据库接口层是与具体的数据库进行交互面对数据进行提取、存入操作。模块包是与数据库实体相对应的类定义,也可以说与数据库中的每条记录相对应。 应用层 模块 代理层 数据库接口层传播优秀Word版文档 ,希望对您有帮助,可双击去除!图12.1 数据库结构设计介绍2.1.1 数据库和表名称在本系统中数据库的名称设置为yundonghui。数据库中表名称和字符标识如下所示:序号表名称1表一(运动员信息)2项目表3参赛表4最高记录5用户2.1.2 表的结构设计表一(运动员信息表)字段名称类型宽度小数位数是否为空运动员编号Char8NO姓名Char20Yes性别char4Yes项目Char20Yes学院Char20Yes成绩Char12Yes名次int40Yes日期data8Yes记录Char4Yes项目字段名称类型宽度小数位数是否为空项目Char20NO类别Char8Yes参赛表传播优秀Word版文档 ,希望对您有帮助,可双击去除!字段名称类型宽度小数位数是否为空参赛单位Char20NO参赛项目Char20Yes参赛类别char8Yes最高记录表字段名称类型宽度小数位数是否为空项目Char20NO成绩Char20Yes创造者char20Yes创造单位char20Yes创造地点char20Yes用户表字段名称类型宽度小数位数是否为空用户名Char20NO密码Char20Yes用户类型Char10Yes2.2 管理模块介绍为了详细描述系统模块功能,在系统功能模块划分的的基础上,对相应系统的数据流图进行功能分解,得到含义明确、功能单一的单元功能模块,从而得到系统的功能模块图。如下图所示。运动员成绩管理系统传播优秀Word版文档 ,希望对您有帮助,可双击去除!赛前管理模块成绩管理模块成绩查询模块系统帮助模块用户管理模块图2 系统功能结构图2.2.1 赛前管理模块这一模块是主要完成运动会赛前事务,如确定每个学院运动员的编号范围,参赛的项目,及每个学院所打破项目记录的情况。如图3所示。赛前管理模块参赛赛单位浏览、添加、删除项目记录浏览运动员编号范围浏览、添加、删除比赛项目浏览、添加、删除图3 赛前管理模块2.2.2 成绩管理模块 这一模块主要完成运动员成绩的管理,包括运动员成绩的录入,成绩排名,是否破纪录,项目排名,和记录所有运动员成绩。按编号或姓名查询运动员的成绩,按记录查询本次运动会中破纪录的运动员信息,按学院查询本学院比赛情况,如图4所示。成绩管理模块总成绩汇总项目排名汇总运动员成绩排名运动员成绩录入记录破平汇总图4 成绩管理模块2.2.3 成绩查询模块传播优秀Word版文档 ,希望对您有帮助,可双击去除! 这一模块主要完成浏览运动员成绩信息、项目成绩信息、学院成绩信息、每日成绩、名次查询。如图5所示。成绩查询模块名次查询每日成绩查询学院成绩查询项目成绩查询运动员成绩查询图5 成绩查询模块2.2.4 用户管理模块这一模块主要完成浏览用户,删除/修改用户权限,修改用户密码。如图6所示。用户密码修改系统用户管理用户管理模块用户浏览删除用户用户权限修改3 系统界面展示3.1 主界面主界面中包括了登录注册两个选项(如左下图所示),已注册用户可以输入用户名及密码直接登录,未注册用户可通过注册按钮进行注册(如右下图所示)。3.2 登录后的主界面传播优秀Word版文档 ,希望对您有帮助,可双击去除!登录后会显示系统的主要操作界面,导航栏中包括有用户管理、赛前管理、成绩管理、更换背景、帮助管理共5个选项。单击每个选项会弹出相对应的下拉菜单。3.2.1 用户管理用户管理中包含了系统用户管理、用户密码修改及返回登录框。(如左下图所示)其中,系统用户可以通过选项查看并管理普通用户。(如右下图所示)普通用户则可以进行密码的修改及返回登陆框的操作。3.2.2 赛前管理系统用户可以通过赛前管理对比赛项目、参赛单位、项目记录及运动员编号范围进行修改和编辑。3.2.3 成绩管理传播优秀Word版文档 ,希望对您有帮助,可双击去除!系统用户可以通过成绩管理对运动会成绩进行成绩的录入、修改和删除、统计学院成绩及总成绩册管理。3.2.4 成绩查询用户可以通过成绩查询查询运动员成绩、项目成绩、每日成绩及记录查询。3.2.5 更换背景用户可以根据自己的喜欢进行背景图片的更改。3.2.6 帮助管理传播优秀Word版文档 ,希望对您有帮助,可双击去除!用户可以通过帮助文档查看查询帮助。4 主要程序代码4.1 mainframepackage system;import help.help1;import help.help2;import help.help3;import help.help4;import javax.swing.*;import java.awt.event.*;import java.io.FileNotFoundException;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JFrame;import prapare_manager.bsProject;import prapare_manager.csDW;import prapare_manager.eth_no;import prapare_manager.pj_record;import record_find.break_record_find;import record_find.date_result_find;import record_find.eth_result_find;import record_find.pj_result_find;import record_find.xueyuan_result_find;import record_manager.add_record;import record_manager.all_record;import record_manager.change_del_record;import record_manager.tj_result;import user.change_pwd;import user.quanxian;import user.user_manager;public class mainframe extends JFrame implements ActionListener,Runnable 传播优秀Word版文档 ,希望对您有帮助,可双击去除!private static final long serialVersionUID = 1L; JPanel cp;int i=1; ImageIcon icon1=new ImageIcon(picture/7.jpg); ImageIcon icon2=new ImageIcon(picture/2.jpg); ImageIcon icon3=new ImageIcon(picture/3.jpg); ImageIcon icon4=new ImageIcon(picture/4.jpg); ImageIcon icon5=new ImageIcon(picture/6.jpg); ImageIcon icon6=new ImageIcon(picture/1.jpg); ImageIcon icon7=new ImageIcon(picture/5.jpg); ImageIcon icon8=new ImageIcon(picture/8.jpg); ImageIcon icon9=new ImageIcon(picture/9.jpg); ImageIcon icon10=new ImageIcon(picture/10.jpg); ImageIcon icon11=new ImageIcon(picture/11.jpg); ImageIcon icon12=new ImageIcon(picture/12.jpg); JLabel tp1=new JLabel(icon1,JLabel.CENTER); JMenuBar bar=new JMenuBar(); JMenu menu1=new JMenu(用户管理); JMenuItem a1=new JMenuItem(系统用户管理); JMenuItem a2=new JMenuItem(用户密码修改); JMenuItem a3=new JMenuItem(返回登录框); JMenu menu2=new JMenu(赛前管理); JMenuItem b1=new JMenuItem(比赛项目); JMenuItem b2=new JMenuItem(参赛单位); JMenuItem b3=new JMenuItem(项目记录); JMenuItem b4=new JMenuItem(运动员编号范围); JMenu menu3=new JMenu(成绩管理); JMenuItem c1=new JMenuItem(成绩录入); JMenuItem c2=new JMenuItem(成绩修改/删除); JMenuItem c3=new JMenuItem(统计学院成绩); JMenuItem c4=new JMenuItem(总成绩册); JMenu menu4=new JMenu(成绩查询); JMenuItem d1=new JMenuItem(运动员成绩); JMenuItem d2=new JMenuItem(项目成绩); JMenuItem d3=new JMenuItem(学院成绩); JMenuItem d4=new JMenuItem(每日成绩); JMenuItem d5=new JMenuItem(纪录查询); JMenu menu7=new JMenu(更换背景); JMenuItem g1=new JMenuItem(上一张); JMenuItem g2=new JMenuItem(下一张); JMenu menu6=new JMenu(帮助管理); JMenuItem f1=new JMenuItem(赛前管理帮助);传播优秀Word版文档 ,希望对您有帮助,可双击去除! JMenuItem f2=new JMenuItem(成绩管理帮助); JMenuItem f3=new JMenuItem(成绩查询帮助); JMenuItem f5=new JMenuItem(用户使用帮助); JMenuItem f4=new JMenuItem(退出系统); JMenu menu8=new JMenu(); public mainframe()tryInit(); if(new quanxian().get_quanxian()=2)a1.setEnabled(false);c1.setEnabled(false);c2.setEnabled(false); if(new quanxian().get_quanxian()=0)a1.setEnabled(true);c1.setEnabled(true);c2.setEnabled(true); catch(Exception err)err.printStackTrace(); public void Init() throws Exception cp = (JPanel)this.getContentPane(); cp.setLayout(null); /this.setSize(new Dimension(800, 600);this.setTitle(运动会成绩管理系统);this.setResizable(false);tp1.setText();tp1.setSize(700, 500); bar.setOpaque(true); setJMenuBar(bar); menu1.add(a1); menu1.add(a2); menu1.add(a3); bar.add(menu1); a1.addActionListener(this); a2.addActionListener(this); a3.addActionListener(this); menu2.add(b1); menu2.add(b2); menu2.add(b3); menu2.add(b4); bar.add(menu2); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); menu3.add(c1); menu3.add(c2); menu3.add(c3); menu3.add(c4); bar.add(menu3); c1.addActionListener(this); c2.addActionListener(this); c3.addActionListener(this);传播优秀Word版文档 ,希望对您有帮助,可双击去除! c4.addActionListener(this); menu4.add(d1); menu4.add(d2); menu4.add(d3); menu4.add(d4); menu4.add(d5); bar.add(menu4); d1.addActionListener(this); d2.addActionListener(this); d3.addActionListener(this); d4.addActionListener(this); d5.addActionListener(this); menu7.add(g1); menu7.add(g2); bar.add(menu7); g1.addActionListener(this); g2.addActionListener(this); menu6.add(f5); menu6.add(f1); menu6.add(f2); menu6.add(f3); menu6.add(f4); bar.add(menu6); f1.addActionListener(this); f2.addActionListener(this); f3.addActionListener(this); f5.addActionListener(this); f4.addActionListener(this); menu8.setEnabled(false); bar.add(menu8);cp.add(tp1,null);this.setSize(700,500);this.setLocationRelativeTo(null);this.setVisible(true); public void run() while(true) SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss); menu8.setText( +sdf.format(new Date(); try Thread.sleep(1000); catch(Exception e) e.printStackTrace(); 传播优秀Word版文档 ,希望对您有帮助,可双击去除! public static void main(String arg) mainframe t=new mainframe(); Thread thread1=new Thread(t); thread1.start(); public void actionPerformed(ActionEvent e) if(e.getSource()=f4) System.exit(0); else if(e.getSource()=g1|e.getSource()=g2) if(e.getSource()=g1) i=(i+11)%12; else i=(i+1)%12; switch(i) case 1: tp1.setIcon(icon1);break; case 2: tp1.setIcon(icon2);break; case 3: tp1.setIcon(icon3);break; case 4: tp1.setIcon(icon4);break; case 5: tp1.setIcon(icon5);break; case 6: tp1.setIcon(icon6);break; case 7: tp1.setIcon(icon7);break; case 8: tp1.setIcon(icon8);break; case 9: tp1.setIcon(icon9);break; case 10: tp1.setIcon(icon10);break; case 11: tp1.setIcon(icon11);break; case 0: tp1.setIcon(icon12);break; cp.add(tp1,null); else if(e.getSource()=a1)new user_manager(); else if(e.getSource()=a2)new change_pwd(); else if(e.getSource()=a3)this.dispose();new Runframe(); else if(e.getSource()=b1)new bsProject(); else if(e.getSource()=b2)new csDW(); else if(e.getSource()=b3)new pj_record(); else if(e.getSource()=b4)new eth_no(); else if(e.getSource()=c1)new add_record(); else if(e.getSource()=c2)new change_del_record(); else if(e.getSource()=c3)new tj_result(); else if(e.getSource()=c4)new all_record(); else if(e.getSource()=d1)new eth_result_find(); else if(e.getSource()=d2)new pj_result_find(); else if(e.getSource()=d3)new xueyuan_result_find(); else if(e.getSource()=d4)new date_result_find(); else if(e.getSource()=d5)new break_record_find(); else if(e.getSource()=f1) try new help1(); catch (FileNotFoundException e1) e1.printStackTrace(); else if(e.getSource()=f2) try new help2(); 传播优秀Word版文档 ,希望对您有帮助,可双击去除! catch (FileNotFoundException e1) e1.printStackTrace(); else if(e.getSource()=f3) try new help3(); catch (FileNotFoundException e1) e1.printStackTrace(); else trynew help4(); catch (FileNotFoundException e1)e1.printStackTrace(); 4.2 Runframepackage system;import javax.swing.*;import java.sql.*;import java.awt.Color;import java.awt.TextField;import java.awt.event.*;import javax.swing.JFrame;import user.add_user;import user.quanxian;public class Runframe extends JFrame implements ActionListenerprivate static final long serialVersionUID = 1L; JPanel cp;int i=0; ImageIcon icon=new ImageIcon(picture/5.jpg); JLabel tp=new JLabel(icon,JLabel.CENTER); JLabel j1=new JLabel(姓名: ); JLabel j2=new JLabel(密码: ); JLabel j3=new JLabel( 湖工运动会成绩管理系统); JButton b1=new JButton(登 录); JButton b2=new JButton(注 册); TextField t1=new TextField(20); TextField t2=new TextField(16); public Runframe() try Init(); catch(Exception err)err.printStackTrace(); private void Init() throws Exception cp=(JPanel) this.getContentPane(); cp.setLayout(null); this.setTitle(系统登录); this.setResizable(false);传播优秀Word版文档 ,希望对您有帮助,可双击去除! this.setSize(640,480); j1.setBounds(220,140,60,30); j1.setFont(new java.awt.Font(Dialog,2,20); j1.setForeground(new Color(250,0,0); j2.setBounds(220,190,60,30); j2.setFont(new java.awt.Font(Dialog,2,20); j2.setForeground(new Color(250,0,0); j3.setBounds(40,40,580,40); j3.setFont(new java.awt.Font(Dialog,6,40); j3.setForeground(new Color(250,0,0); t1.setBounds(280,140,120,30); t1.setFont(new java.awt.Font(Dialog,0,15); t1.setBackground(new Color(20,150,20); t1.addActionListener(this); t2.setBounds(280,190,120,30); t2.setFont(new java.awt.Font(Dialog,0,14); t2.setBackground(new Color(20,150,20); t2.addActionListener(this); b1.setBounds(200,290,90,30); b1.setFont(new java.awt.Font(Dialog,0,15); b1.addActionListener(this); b2.setBounds(350,290,90,30); b2.setFont(new java.awt.Font(Dialog,0,15); b2.addActionListener(this); tp.setText(); tp.setSize(640,480); cp.add(j1,null); cp.add(j2,null); cp.add(j3,null); cp.add(t1,null); cp.add(t2,null); cp.add(b1,null); cp.add(b2,null); cp.add(tp,null); t2.setEchoChar(*); this.setLocationRelativeTo(null); this.setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource()=b2)new add_user(); else if(t1.getText().equals()JOptionPane.showMessageDialog(null,请输入用户名!);t1.requestFocus();t2.setText();传播优秀Word版文档 ,希望对您有帮助,可双击去除! else if(e.getSource()=t1)t2.requestFocus(); else if(t2.getText().equals()JOptionPane.showMessageDialog(null,请输入密码!);t2.requestFocus(); else if(e.getSource()=t2|e.getSource()=b1) try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); Connection con=DriverManager.getConnection(jdbc:odbc:yundonghui,sa,); Statement ps=con.createStatement(); ResultSet rs=null; rs=ps.executeQuery(select * from 用户管理 where 用户名=+t1.getText().trim()+); if(!rs.next() JOptionPane.showMessageDialog(null,没有此用户请重新输入!); t1.setText();t2.setText();t1.requestFocus(); else if(rs.getString(4).trim().equals(锁定)JOptionPane.showMessageDialog(null, 此账号已被锁定,请求管理员解锁!);this.dispose(); else rs=ps.executeQuery(select * from 用户管理 where 用户名=+t1.getText().trim()+); rs.next(); String msg=rs.getString(1); if(rs.getString(2).equals(t2.getText().trim() new quanxian().user_type1(msg);new mainframe();this.dispose(); else i+; if(i=3) JOptionPane.showMessageDialog(null,密码三次输入错误!); new quanxian().user_type2(msg); this.dispose(); else JOptionPane.showMessageDialog(null,密码输入错误!); t2.setText();t2.requestFocus(); catch (Exception err) err.printStackTrace();JOptionPane.showMessageDialog(null,数据库连接出错!); public static void main(String args) new Runframe(); 传播优秀Word版文档 ,希望对您有帮助,可双击去除!4.3 connectionpackage system;import java.sql.*;import javax.swing.*;class jdbcExample1 public static void main(String args) try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);String url =jdbc:sqlserver:/localhost:1433;DatabaseName=yundonghui; String login = sa; String password =;Connection conn = DriverManager.getConnection(url,login,password);Statement statement =conn.createStatement();String sqlQuery=select * from course;ResultSet rs= statement.executeQuery(sqlQuery);while(rs.next() System.out.print(rs.getString(1)+ ,); System.out.print(rs.getString(2)+,); System.out.println(rs.getInt(3); statement.close(); conn.close(); catch ( SQLException sqlException ) JOptionPane.showMessageDialog( null, sqlException.getMessage(), Database Error, JOptionPane.ERROR_MESSAGE ); System.exit( 1 ); / detect problems loading database driver catch ( ClassNotFoundException classNotFound ) JOptionPane.showMessageDialog( null, classNotFound.getMessage(), Driver Not Found, JOptionPane.ERROR_MESSAGE ); System.exit( 1 ); /end of main传播优秀Word版文档 ,希望对您有帮助,可双击去除!5 个人总结为期两天半的Java课程设计就这样结束了,在这两天中真的是有喜有悲啊!悲的是在这个过程中我们组组员走了不少弯路,喜的是最终我们还是把系统做好了。作为本组的组长,负责组内的任务分工,在课程设计的过程中协调组员之间的合作。同时负责程序设计中运动员成绩查询模块的设计并参与部分文档的编辑。刚开始的时候因为在书上找的例子是ACCESS建库,但是我们对ACCESS不怎么熟悉就我们走了很多的弯路,后来我们就改用SQL Server建库,前路依然是很艰辛,在整个数据库连接过程中问题不断,看着别的组一步一步在走,而我们组连数据库连接的问题都还没解决内心真的无比烦躁,特别是第二天,当我们其他准备工作都做好了以后,这个问题还没解决时,那时真的感觉自己发慌了,请了很多高手,还是没解决,不过幸好在最后一刻我们给弄好了,忘不了实验过程中我们组员的齐心协力,忘不了老师的不厌其烦。不过我们这个实验还是很曲折的,因为在最后归档时,因为没有存档,直接在U盘里进行操作,误删了一个文件,最后我们组的组员就又一起熬夜解决,这个真的是一个难忘的回忆。通过此次课程设计,使我更加扎实的掌握了有关Java课程设计方面的知识,虽然在设计过程中虽然遇到了一些问题,也暴露出了前期我在这方面的知识欠缺和经验不足。但经过一次又一次的思考,一遍又一遍的检查以及我们不断的请教终于找出了原因所在,实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵,也明白了传播优秀Word版文档 ,希望对您有帮助,可双击去除!“纸上得来终觉浅,绝知此事要躬行”的道理,在以后的学习和生活中我也会不断地提高自己的动手能力,不断学习,不断实践。另外,在这次实践中我看到了团结的力量和分工协作的重要性。只有团结才能更好地完成我们的任务,当然这中间也就需要我们良好的分工协作,只有明确自己在组织中的职责,才能更好地完成自己的任务,完成整个组的任务。参考文献1 黄晓东Java课程设计案例精编M北京:中国水利水电出版社,20102 张桂珠,张平,陈爱国Java面向对象程序设计(JDK1.6)(第三版)M北京:北京邮电大学出版社出版社,2010
展开阅读全文