




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学* 兰州理工大学计算机与通信学院 2013年秋季学期 Java 课程设计 题 目:足球联赛积分管理系统 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 摘 要足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。该设计以足球联赛为背景,设计足球联赛积分管理系统程序。通过对该题目的具体设计分析,可以对面向对象程序设计的思想更加深入理解
2、,可以达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时对程序设计风格有全面的强调,提高解决实际问题的能力。并且通过与数据库的连接,深化对数据库编程的理解和运用。关键词:面向对象;Java;数据库编程;数据库序 言通过足球联赛积分管理系统的设计,培养学生面向对象程序设计的思想,要求学生达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。由于联赛中参赛的队
3、伍数是固定的,因此可用对象数组来实现(也可以用链表结构)。每输入两个队的比赛成绩,则相应的队的有关数据(比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分等)即可进行修改,比赛成绩录入完成,调用联赛排序方法(对象数组作为参数)排出名次并输出。目 录摘要1序言1正文3一.系统分析与设计31.1系统分析31.2系统设计31.3系统类的描述4二.详细设计52.1系统模块设计5 2.2数据库概念结构设计62.3数据库逻辑模型结构设计72.4使用ODBC建立WINDOW数据源的方法8三.系统测试11四.软件使用说明书13设计总结14参考文献15致谢16源代码23一.系统分析与设计1.1 系统分
4、析 足球联赛积分管理系统是一个以足球联赛为背景,设计足球联赛积分管理系统程序。采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次。面向对象程序开发语言采用JAVA,数据库管理系统采用Microsoft Access 2003,集成开发环境使用eclipse。该管理系统是以自主设计为主,通过对该系统的具体设计分析,可以对面向对象程序设计的思想更加深入理解,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能
5、,解决简单的面向对象程序设计问题。1.2系统设计 在对该系统有初步的规划之后,我们应该着手处理如何初步规划该系统的各主要模块以及基本的方法,前面已经提到,我们使用面向对象程序设计的思路,而且运用数据库编程的理论,所以我们应该按照具体的思路来设计相应的应用,以下简要概述该系统的具体设计:(1).比赛过程的管理:包括一场比赛的基本信息的录入,如参赛双方的球队名称、比赛结果、进球情况等;(2).球队基本信息查询:查询球队的基本信息,输入球队名称,对比查找已有数据库,匹配到该球队,则输出球队的的进球数,胜负场次情况等;(3).积分榜查询:所有的输入结束后,按照联赛的积分规则,排列数据库中的几组关键数据
6、,查询各个球队的名次; 1.3.系统类的描述(a).MainFrame类实现了主窗体;成员函数:private void initialize()成员变量:private JFrame frmZ; public static TextArea resultText;(b).LastTime实现了最后一轮比赛的窗口及主场、客场和其各自进球数的输入;成员函数:public static void Lasttime()成员变量:private final JPanel contentPanel = new JPanel(); private JTextField zhuchangname; priv
7、ate JTextField kechangname; private JTextField zhuchang; private JTextField kechang;(c).Search实现了队各个队伍比赛情况的查询;成员函数:public static void search()成员变量:private final JPanel contentPanel = new JPanel(); private JTextField textField;(d).FootBean类申明成员变量ArrayList<HashMap<String,String>> listspubl
8、ic class FootBean public static ArrayList<HashMap<String,String>> lists = new ArrayList<HashMap<String,String>>();(e).AccessConnection类实现了数据库的连接;成员函数:public void GetInfo()public void SetInfo()private Statement excuteUpdate()public void SetScore()public String Search(String na
9、me)public String Sort()public String OutInfo()成员变量:public int i = 1 ; public String SQL_insert ; public Connection conn; public Statement sql; public ArrayList<HashMap<String,String>> lists; public ResultSet rs; public static String name; public PreparedStatement ps; public byte b;(f).五个
10、类之间的关系如下所示:图1.1 各个类之间关系流程图 二.详细设计针对系统的局部构思,可以设计系统的功能模块如下所示: 系统模块设计; 数据库概念结构设计; 数据库逻辑结构设计; 数据库物理结构设计;2.1系统模块设计 图2.1 系统模块图主窗体比赛过程球队信息积分信息输入主队输入进球输入队名得分胜利场次输球场次平局场次得分榜进球榜输入客队输入进球 图2.2 主窗体模块图2.2.数据库概念结构设计球队进行名称得分总进球主队客队主队进球客队进球比赛轮次进球输赢 图2.3 数据库模块图2.3.数据库逻辑模型结构设计表2.1 逻辑模型设计球队表(Team)字段名数据类型宽度主码非空外码描述nameV
11、ARCHAR20是是否球队名称winVARCHAR30否否否胜利场次loseVARCHAR20否否否失败场次表2.2 逻辑模型设计比赛进程表(Course)字段名数据类型宽度主码非空外码描述PLACEINT否是否名次nameVARCHAR20是是否球队名称timesINT否是否轮次WinINT否是否胜利场次flatINT否是否平局场次loseINT否是否失败场次inNumINT否是否总进球数scoreINT否是否积分2.4 使用ODBC建立WINDOW数据源的方法:开始>>控制面板>>管理工具>>数据源(ODBC)>>用户DSN或系统DSN>
12、;>点添加>>找到"Microsoft Access Driver (*.mdb)",选中,再点完成>>自定义数据源名称,可创建一个新的或选择已经有的Access数据库(.mdb)其它可以不选>>确定>>确定到此数据源已经建立成功连接数据库代码(部分):import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Sta
13、tement;import java.util.ArrayList;import java.util.HashMap;public class AccessConnection public int i = 1 ;public String SQL_insert ;public Connection conn;public Statement sql;public ArrayList<HashMap<String,String>> lists = new ArrayList<HashMap<String,String>>();public Res
14、ultSet rs;public static String name =""public PreparedStatement ps= null;public byte b = new byte2;public void GetInfo()try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(Exception e) try conn=DriverManager.getConnection("jdbc:odbc:redsun","",""
15、;);sql= conn.createStatement();rs = sql.executeQuery("SELECT * FROM football ");while(rs.next()HashMap<String,String> temp = new HashMap<String,String>(); temp.put("name",rs.getString("name").toString();temp.put("lose", rs.getInt("lose")+
16、"");temp.put("win", rs.getInt("win")+"");temp.put("flat", rs.getInt("flat")+"");temp.put("in", rs.getInt("inNum")+"");temp.put("score", rs.getInt("score")+"");temp.put(&q
17、uot;times", rs.getInt("times")+"");lists.add(temp);FootBean.lists= lists;conn.close();if(conn !=null)System.out.println("数据库连接正常"); catch (Exception e) System.out.println(e); finally 三、系统测试 四.软件使用说明书使用ODBC建立WINDOW数据源:开始>>控制面板>>管理工具>>数据源(ODBC)>&
18、gt;用户DSN或系统DSN>>点添加>>找到"Microsoft Access Driver (*.mdb)",选中,再点完成>>自定义数据源名称,可创建一个新的或选择已经有的Access数据库(.mdb)其它可以不选>>确定>>确定到此数据源已经建立成功(1) 由结果菜单中的最后一次输入菜单,输入最近一轮的比赛情况,包括比赛队名和各队的进球数;(2) 由排序菜单可查看比赛的积分表排序(递减排序),包括每个队的比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分;(3) 由查询菜单输入要查询的队名,可查看
19、该对的比赛成绩。 设计总结经历这次的课程设计,对自己的学习有很多帮助,特别是对面向对象程序设计的思想、方法以及具体实现有了较为深刻的体会。在平时的很少有那么多的时间去学习java,这次的课程设计使我有了一个相对比较集中的时间去练习我的编程,特别是我的动手能力有了极大的提高,因为这次的课程设计几乎涉及到了java语言程序设计的整本书的重要内容,让我从中受益,有了一次巩固知识的机会。同时还让自己平时不怎么注意的问题得到了自己足够的关注,为以后写程序奠定下了坚实的基础,让自己对这门课的课程有了更深刻的认识。这次写完程序后,等到自己能顺利运行,中间经历了重重困难,一步一步的调试程序,经历了上百次的失败
20、。不过,最后在程序顺利运行的那一刻,所有付出都有了回报。 通过对该系统的具体设计分析,使我对面向对象程序设计的思想更加深入理解,我基本上掌握了Java语言的基本知识和技能和面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时对程序设计风格有全面的强调,提高解决实际问题的能力。并且通过与数据库的连接,深化对数据库编程的理解和运用。 由于我们还没有学数据库这门课,所以我对数据库的操作基本上是清零状态,在网上搜了好多方法,数据库的连接,数据查找,数据库的升级。虽然对于数据库我知之甚深少,但是通过这次课设,让我对数据库产生了极大的兴趣,同时也认识到了数据
21、库在软件编程中的重要地位。最后,用一句话总结这次的课程设计发现问题并解决它。参考文献1曲朝阳,杨杰明等.Java程序设计. 北京: 清华大学出版社,2008.102耿祥以,张跃平.Java大学生实用教程. 北京: 电子工业出版社,2012.6 3明日科技.Java经典编程.北京:清华大学出版社,2012.104李尊朝,苏军.Java语言程序设计.北京:中国铁道出版社,2004.25王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990. 致谢首先,我要感谢学校给我们提供了此次课程设计的机会,能让同学们在一起学习与研究,让我们有机会对所学的理论知识进行实践。 其次,我还要特别感谢我
22、的辅导老师王燕老师,在她的精心辅导和帮助下,我的设计才得以顺利完成,并使所学知识得以真正的应用。对她为我的设计所提出的宝贵意见表示忠心的感谢! 最后、在设计过程中,也得到了许多同学的宝贵建议,同时还到许多校友的支持和帮助,在此一并致以诚挚的谢意。源代码:Package student;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;import java.ut
23、il.ArrayList;import java.util.HashMap;public class AccessConnection public int i = 1 ;public String SQL_insert ;public Connection conn;public Statement sql;public ArrayList<HashMap<String,String>>lists=newArrayList<HashMap<String,String>>();public ResultSet rs;public static S
24、tring name =""public PreparedStatement ps= null;public byte b = new byte2;public void GetInfo()try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(Exception e) try conn = DriverManager.getConnection("jdbc:odbc:redsun","","");sql= conn.createStat
25、ement();rs = sql.executeQuery("SELECT * FROM football ");while(rs.next()HashMap<String,String> temp = new HashMap<String,String>();temp.put("name", rs.getString("name").toString();temp.put("lose", rs.getInt("lose")+"");temp.put(
26、"win", rs.getInt("win")+"");temp.put("flat", rs.getInt("flat")+"");temp.put("in", rs.getInt("inNum")+"");temp.put("score", rs.getInt("score")+"");temp.put("times", rs.get
27、Int("times")+"");lists.add(temp);FootBean.lists= lists;conn.close();if(conn !=null)System.out.println("数据库连接正常"); catch (Exception e) System.out.println(e); finally public void SetInfo(String zhuchang,String kechang,int zhu,int ke)String a=""int b = 0;GetInfo(
28、);tryconn = DriverManager.getConnection("jdbc:odbc:redsun","","");boolean flag=false;for(int i =0 ;i<FootBean.lists.size();i+)if(FootBean.lists.get(i).get("name").toString().equals(zhuchang)flag=true;if(zhu>ke)b = Integer.parseInt(FootBean.lists.get(i).g
29、et("win").toString()+1;a = "update football SET win="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'"else if(zhu=ke)b = Integer.parseInt(FootBean.lists.get(i).get("fl
30、at").toString()+1;a = "update football SET flat="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'"elseb = Integer.parseInt(FootBean.lists.get(i).get("lose").toString()
31、+1;a = "update football SET lose="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'" ps=conn.prepareStatement(a); ps.executeUpdate(); b = Integer.parseInt(FootBean.lists.get(i).get(&q
32、uot;times").toString()+1; a = "update football SET times="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'" ps=conn.prepareStatement(a); ps.executeUpdate(); int c = Integer.pars
33、eInt(FootBean.lists.get(i).get("in").toString()+zhu; String d = "update football SET inNum="+"'"+ c +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'" PreparedStatement px=conn.prep
34、areStatement(d); px.executeUpdate(); if(!flag)Statement stmtl=conn.createStatement();if(zhu>ke)stmtl.executeUpdate("insert into football values ('"+zhuchang+"','1','0','0','"+zhu+"','3','1')");else if(zhu=ke)stm
35、tl.executeUpdate("insert into football values ('"+zhuchang+"','0','0','1','"+zhu+"','1','1')");elsestmtl.executeUpdate("insert into football values ('"+zhuchang+"','0','1',
36、9;0','"+zhu+"','0','1')");flag=false;for(int i =0 ;i<FootBean.lists.size();i+)if(FootBean.lists.get(i).get("name").toString().equals(kechang)flag=true;if(zhu<ke)b = Integer.parseInt(FootBean.lists.get(i).get("win").toString()+1;a =
37、 "update football SET win="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'"else if(zhu=ke)b = Integer.parseInt(FootBean.lists.get(i).get("flat").toString()+1;a = "upd
38、ate football SET flat="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'"elseb = Integer.parseInt(FootBean.lists.get(i).get("lose").toString()+1;a = "update football SET los
39、e="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'" ps=conn.prepareStatement(a); ps.executeUpdate(); b = Integer.parseInt(FootBean.lists.get(i).get("times").toString()+1; a = &
40、quot;update football SET times="+"'"+ b +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'" ps=conn.prepareStatement(a); ps.executeUpdate(); int c = Integer.parseInt(FootBean.lists.get(i).get("
41、;in").toString()+ke; String x = "update football SET inNum="+"'"+ c +"'"+" WHERE name ="+"'"+FootBean.lists.get(i).get("name").toString()+"'" ps=conn.prepareStatement(x); ps.executeUpdate(); if(!flag)Statement
42、 stmtl=conn.createStatement();if(zhu<ke)stmtl.executeUpdate("insert into football values ('"+kechang+"','1','0','0','"+ke+"','3','1')");else if(zhu=ke)stmtl.executeUpdate("insert into football values ('
43、"+kechang+"','0','0','1','"+ke+"','1','1')");elsestmtl.executeUpdate("insert into football values ('"+kechang+"','0','1','0','"+ke+"','0','1')
44、");conn.close();catch(Exception e)System.out.println(e);SetScore();private Statement excuteUpdate() / TODO Auto-generated method stubreturn null;public void SetScore() GetInfo(); try conn = DriverManager.getConnection("jdbc:odbc:redsun","",""); for(int i = 0 ;i<
45、FootBean.lists.size();i+) HashMap<String,String> temp = FootBean.lists.get(i); int score= Integer.parseInt(temp.get("win")*3+Integer.parseInt(temp.get("flat");String a = "update football SET score="+"'"+score+"'"+" WHERE name =&quo
46、t;+"'"+temp.get("name").toString()+"'" ps=conn.prepareStatement(a); ps.executeUpdate(); conn.close(); catch (Exception e) / TODO: handle exceptionSystem.out.println(e); public String Search(String name)GetInfo();String temp = ""for(int i =0;i<lists.
47、size();i+)if(lists.get(i).get("name").toString().equals(name)temp = lists.get(i).get("name").toString()+" 得分: "+lists.get(i).get("score").toString()+" 胜球场次:"+lists.get(i).get("win").toString()+" 输球场次:"+lists.get(i).get("lose&
48、quot;).toString()+" 平局场次:"+lists.get(i).get("flat").toString();return temp;public String Sort()GetInfo();b0 =0x0d ;b1 =0x0a;ArrayList<HashMap<String,String>>temps=newArrayList<HashMap<String,String>>();for(int i= 0 ;i<lists.size();i+)HashMap<String,S
49、tring> temp = new HashMap<String,String>();for(int j = i ; j<lists.size();j+)temp = lists.get(i);if(Integer.parseInt(temp.get("score").toString()<Integer.parseInt(lists.get(j).get("score").toString()HashMap<String,String> s =lists.get(j);lists.set(i, s);lists
50、.set(j,temp);String sum=""for(int i = 0;i<lists.size();i+)String temp ;temp = lists.get(i).get("name").toString()+" 得分 "+lists.get(i).get("score").toString()+" 进球数:"+lists.get(i).get("in").toString()+" 胜球场次:"+lists.get(i).get(&
51、quot;win").toString()+" 输球场次:"+lists.get(i).get("lose").toString()+" 平局场次:"+lists.get(i).get("flat").toString()+new String(b);sum =sum+temp;return sum;public String OutInfo()String sum=""GetInfo();for(int i = 0;i<lists.size();i+)String temp ;
52、temp = lists.get(i).get("name").toString()+"得分: "+lists.get(i).get("score").toString()+"t"+"进球数:"+lists.get(i).get("in").toString()+"t"+"胜球场次:"+lists.get(i).get("win").toString()+" 输球场次:"+lists.get(i)
53、.get("lose").toString()+" 平局场次:"+lists.get(i).get("flat").toString()+new String(b);sum =sum+temp;return sum;package student;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JTextArea;import java.awt.TextArea;import javax.swing.JMenuBar;import java
54、x.swing.JMenu;import javax.swing.JMenuItem;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;public class MainFrame private JFrame frmZ;public static TextArea resultText;public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try MainFrame wi
55、ndow = new MainFrame();window.frmZ.setVisible(true); catch (Exception e)e.printStackTrace(););public MainFrame() initialize();private void initialize() frmZ = new JFrame();frmZ.setTitle("足球积分管理系统");frmZ.setBounds(100, 100, 510, 229);/frmZ.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frmZ
56、.getContentPane().setLayout(null);resultText = new TextArea();resultText.setBounds(0, 0, 494, 170);frmZ.getContentPane().add(resultText);JMenuBar menuBar = new JMenuBar();frmZ.setJMenuBar(menuBar);JMenu menu = new JMenu("结果");menuBar.add(menu);JMenuItem menuItem_2 = new JMenuItem("最后一
57、次比赛成绩");menuItem_2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) LastTime.Lasttime(););menu.add(menuItem_2);JMenu menu_1 = new JMenu("查询");menuBar.add(menu_1);JMenuItem menuItem_1 = new JMenuItem("分数查询");menuItem_1.addActionListener(new
58、 ActionListener() public void actionPerformed(ActionEvent arg0) Search.search(););menu_1.add(menuItem_1);JMenu menu_2 = new JMenu("排序");menuBar.add(menu_2);JMenuItem menuItem = new JMenuItem("递减排序");menuItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) resultText.setText(new AccessConnection().Sort(););menu_2.add(men
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业排查合同样本
- 代卖合同标准文本 月结
- 流域生态治理创新路径与实践探索
- 个人买卖沙合同样本
- 2023三年级数学上册 三 辨认方向 1东、南、西、北教学设计 西师大版
- 代招商合同样本
- 个人电梯维修合同样本
- 个人墙绘合同样本
- 产品承包协议合同样本
- 代加工服务合同样本
- 道路环卫保洁投标方案
- (完整版)小学生心理健康教育课件
- 中国海洋大学辅导员考试试题2023
- 新员工转正述职评分表模板
- (完整版)中国古代书法史课件
- 《军神》优课一等奖课件
- 市场营销专业毕业论文浅谈xx企业的新产品开发策略
- 护理专升本历年考试真题及答案
- 会计信息系统用友ERP-U8V10.1高职PPT全套完整教学课件
- 山东金洲集团千岭矿业有限公司英格庄矿区矿山地质环境保护与土地复垦方案
- 河池港罗城港区牛毕作业区一期工程环评报告书
评论
0/150
提交评论