足球聯賽積分管理系統設計說明書_第1頁
足球聯賽積分管理系統設計說明書_第2頁
足球聯賽積分管理系統設計說明書_第3頁
足球聯賽積分管理系統設計說明書_第4頁
足球聯賽積分管理系統設計說明書_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論