足球联赛管理系统_第1页
足球联赛管理系统_第2页
足球联赛管理系统_第3页
足球联赛管理系统_第4页
足球联赛管理系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、*实践教学* 兰州理工大学计算机与通信学院2010年春季学期 面向对象 课程设计题 目: 足球联赛积分管理系统 专业班级: 信息与计算科学06班 姓 名: 摆富有 学 号: 10240618 指导教师: 庞淑侠 成 绩: 前 言在面对对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。面向对

2、象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 l 决定你要的类; 2 给每个类提供完整的一组操作; 3 明确地使用继承来表现共同点。 由这个定义,我们可以看出:面向对象设计就是“根据需求决定所需的类、类的操作以及类之间关联的过程。本次面向对象设计采

3、用java实现足球积分管理系统的实现。 摘 要足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。该设计以足球联赛为背景,设计足球联赛积分管理系统程序。通过对该题目的具体设计分析,可以对面向对象程序设计的思想更加深入理解,可以达到熟练掌握java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单

4、的面向对象程序设计问题。同时对程序设计风格有全面的强调,提高解决实际问题的能力。并且通过与数据库的连接,深化对数据库编程的理解和运用。关键词: 双循环赛制;面向对象;java;数据库编程;数据库 目 录一、概述1二、需求分析3三、总体设计4四、详细设计5五、 编码14六、测试20七、设计总结29致谢30参考文献31一、概述1 项目名称:足球联赛积分管理系统2 项目介绍:该项目用于对一个年度的足球联赛的各种信息进行管理,通过制作的专门界面,可以对球队、球员、比赛情况、各种统计信息进行管理。3 项目背景: 结合java面向对象程序设计和数据库编程中介绍的内容和以往所学的专业知识,开发一个足球联赛积

5、分管理系统。4 项目目的:掌握数面向对象程序设计原理以及sql sever 2008的基本操作,知道并且熟练掌握java语言中的基本方法和基本内容的运用,并能熟练使用结构化查询语言sql语句,能在一个或多个数据库管理系统进行开发和管理,并结合面向对象程序开发语言java进行项目的开发。5 开发环境:面向对象程序开发语言采用java,数据库管理系统采用sqlsever 2008,集成开发环境使用my eclipse 8.5。二、需求分析问题分析是程序设计的第一步,其目的是理解题目的要求,明确程序的运行环境和方式,以及相关的限制条件。问题分析的基本内容包括确定程序的功能和性能、程序的输入输出数据的

6、来源、去向、内容、范围及其格式,程序的使用者、调用方式、人机交互要求,与其他程序的关系和交互方式,对通用性的要求和扩展的可能,以及性能和其他对程序的特殊要求和限制,如程序所占用系统资源的数量、对输入命令的响应速度等。在使用面向对象方法设计足球联赛积分管理系统时,除了对于具体问题具体分析之外,我们还应该理解系统主要元素之间的关系,所以,简要列举我们以下几点:1、 系统需求说明 a、要求利用面向对象的方法以及java的编程思想来完成系统的设计;b、要求在设计的过程中,建立清晰的类层次; c、在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;d、在系统的设计中,要求运用面向对象的机制(继

7、承、派生及多态性)来实现系统功能。足球联赛积分管理系统是一个以足球联赛为背景,设计足球联赛积分管理系统程序。采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次。2、 系统资源说明面向对象程序开发语言采用java,数据库管理系统采用sqlsever 2008,集成开发环境使用my eclipse 8.5。3、系统可行性分析该管理系统是以自主设计为主,通过对该系统的具体设计分析,可以对面向对象程序设计的思想更加深入理解,可以达

8、到熟练掌握java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时对程序设计风格有全面的强调,提高解决实际问题的能力。并且通过与数据库的连接,深化对数据库编程的理解和运用。三、总体设计在对该系统有初步的规划之后,我们应该着手处理如何初步规划该系统的各主要模块以及基本的方法,前面已经提到,我们使用面向对象程序设计的思路,而且运用数据库编程的理论,所以我们应该按照具体的思路来设计相应的应用,以下简要概述该系统的具体设计:1.球队的管理:包括球队信息的添加、删除、修改和查询;2.球员的管理:包括球员信息的添加、删除、修

9、改和查询;3.比赛过程的管理:包括一场比赛的基本信息的录入,如参赛双方的球队名称、比赛日期、比赛结果、进球情况等;4.积分榜查询:按照联赛的积分规则查询各个球队的名次;5.射手榜查询:按照进球多少查询进球队员的名次。四、详细设计 针对系统的局部构思,可以设计该系统的功能模块如下所示 项目设计 数据库概念结构设计; 数据库逻辑结构设计; 数据库物理结构设计;4.1 项目设计 项目设计部分主要包括以下两部分: 1.系统模块设计2.界面设计4.1.1 系统模块设计图1系统模块设计4.1.2 界面设计主窗体球队管理球员管理比赛情况统计信息添加球队修改球队删除球队查询球队添加球员按姓名修改球员按球队和号

10、码修改按姓名删除球员按球队和号码删除查询球员积分榜射手榜图2界面设计4.2 数据库概念结构设计球队球员比赛进行参加属于名称主场主教练姓名号码位置身高体重出生日期轮次日期主队客队主队比分客队比分进球时间12mnpq图20数据库概念结构设计4.3数据库逻辑模型结构设计4.3.1 逻辑模型设计球队表(team)字段名数据类型宽度主码非空外码描述namevarchar20是是否球队名称homevarchar30否否否球队主场coachvarchar20否否否主教练表1球队表4.3.2 逻辑模型设计球员表(member)表2球员表4.33 逻辑模型设计比赛进程表(course)表3比赛进程表4.3.4

11、逻辑模型设计进球表(goal) 表4进球表4.3.5 逻辑模型设计积分榜(score)字段名数据类型宽度主码非空外码描述placeint否是否名次namevarchar20是是否球队名称turnint否是否轮次wonint否是否胜利场次evenint否是否平局场次beatenint否是否失败场次goalint否是否总进球数lostint否是否总失球数netint否是否净剩球数pointint否是否积分表5积分榜4.3.6 逻辑模型设计射手榜(goalscore)字段名数据类型宽度主码非空外码描述placeint否是否名次namevarchar20否是否球员姓名teamnamevarchar20

12、是是是球队名称,参照team表的name字段numberint是是是球员球衣号码goalsint否是否进球数表6射手榜4.4 物理结构模型设计 在这里主要介绍如何连接数据库的方法和创建触发器的部分功能。由于方法比较多,现在采用jdbc驱动方式连接。4.4.1 用jdbc驱动方式:1.到微软官网上下载jdbc驱动包sqljdbc_3.0,解压后复制文件sqljdbc_3.0enuauthx86 sqljdbc_auth.dll到c:windowssystem32,并将解压文件中的sqljdbc4.jar的路径添加系统环境变量的classpath里。2.设置并打开sql server的tcp/ip

13、端口:打开sql server配置管理器-sql server 网络配置,mssql server 的协议,tcp/ip设为启用,并右击选择属性,将ip地址端口设为1433. sql server配置管理器-sql native client 10.0配置-客户端协议-右击tcp/ip协议-默认端口1433.3.在 my eclipse 创建项目并为项目添加sqljdbc4.jar驱动包。1. 用windows验证方式连接数据库:加载数据库驱动程序 class.forname(com.microsoft.sqlserver.jdbc.sqlserverdriver);连接数据库string u

14、rl = jdbc:sqlserver:/localhost:1433;databasename=test1;integratedsecurity=true;conn = drivermanager.getconnection(url);完整代码:import java.sql.sqlexception;import java.sql.statement;import java.sql.connection;import java.sql.drivermanager;import java.sql.resultset;public class testpublic static void ma

15、in(string args)connection conn;statement stmt;resultset rs;try/加载数据库驱动程序,对于jdbc4版本可以不用写这段代码class.forname(com.microsoft.sqlserver.jdbc.sqlserverdriver); catch(classnotfoundexception ex)system.out.println(数据库驱动加载失败);string url = jdbc:sqlserver:/localhost:1433;databasename=test1;integratedsecurity=true

16、;string sql=select* from exa;try/连接数据库conn = drivermanager.getconnection(url);/建立statement对象stmt=conn.createstatement();/执行数据库查询语句rs=stmt.executequery(sql);while(rs.next()int id=rs.getint(id);string name=rs.getstring(name); int age=rs.getint(age);system.out.println(id:+id+tname:+name+tage:+age);if(r

17、s!=null)rs.close();rs=null;if(stmt!=null)stmt.close();stmt=null;if(conn!=null)conn.close();conn=null;catch(sqlexception e)e.printstacktrace();system.out.println(数据库连接失败);2. 用sql server身份验证方式连接数据库:加载数据库驱动程序 class.forname(com.microsoft.sqlserver.jdbc.sqlserverdriver);连接数据库string url = jdbc:sqlserver:/

18、localhost:1433;databasename=test1;conn = drivermanager.getconnection(url ,sa,123456);完整代码:import java.sql.sqlexception;import java.sql.statement;import java.sql.connection;import java.sql.drivermanager;import java.sql.resultset;public class testpublic static void main(string args)connection conn;sta

19、tement stmt;resultset rs;try/加载数据库驱动程序,对于jdbc4版本可以不用写这段代码class.forname(com.microsoft.sqlserver.jdbc.sqlserverdriver); catch(classnotfoundexception ex)system.out.println(数据库驱动加载失败);string url = jdbc:sqlserver:/localhost:1433;databasename=test1;string sql=select* from exa;try/连接数据库conn = drivermanager

20、.getconnection(url, sa,123456);/建立statement对象stmt=conn.createstatement();/执行数据库查询语句rs=stmt.executequery(sql);while(rs.next()int id=rs.getint(id);string name=rs.getstring(name); int age=rs.getint(age);system.out.println(id:+id+tname:+name+tage:+age);if(rs!=null)rs.close();rs=null;if(stmt!=null)stmt.c

21、lose();stmt=null;if(conn!=null)conn.close();conn=null;catch(sqlexception e)e.printstacktrace();system.out.println(数据库连接失败);4.4.2 创建触发器触发器是一种数据库对象,它可以自动执行,当用户的操作影响到触发器保护的数据时,触发器就会被触发自动执行所定义的sql语句,激活触发器的动作称为触发器激活条件,触发器活动后所做的操作称为触发器动作。 在触发器工作时,sql server 2008 会自动创建和管理两种特殊的表:deleted表和 inserted 表。 l 创建触发

22、器- 当添加一支新球队时,要把这支球队的名称一并插入到积分榜中,这样能够保证球队表与积分榜中的球队保持一致,在对积分榜进行统计时,不会遗漏球队;- 当删除一支球队时,要在积分榜、比赛过程、球员表、射手榜等表中先把包含这支球队的所有记录都删除,否则会因为外码参照联系导致删除球队失败;- 当修改球队时,要把积分榜、比赛过程、球员表、射手榜等表中与这支球队相关的所有记录都先做修改,否则也会因为外码参照联系导致修改球队失败;- 插入一场比赛详细信息时,将积分榜中的数据一起进行修改,并重新统计积分榜名次;- 插入进球信息时,将射手榜中的数据一起进行调整,并重新统计射手榜名次。5、 编码 1主菜单界面代码

23、:package common;import java.awt.event.actionevent;import java.awt.event.actionlistener;import javax.swing.jbutton;import calculate.calculateframe;import matchmanage.matchframe;import membermanage.memberframe;import teammanage.teamframe;public class mainframe extends common.centerdialog jdbcadapter j

24、dbc;private jbutton teambtn;private jbutton quitbtn;private jbutton calbtn;private jbutton matchbtn;private jbutton memberbtn;teamframe tf;memberframe mf;matchframe af;calculateframe cf;public mainframe(jdbcadapter jdbc) this.jdbc=jdbc;initgui();private void initgui() try this.settitle(u8db3u7403u80

25、54u8d5bu79ef +u5206u7ba1u7406u7cfbu7edf);/*足球联赛积分管理系统 * 其中用十六进制进行,也可以直接用汉字进行编排性质一样,都是用的是unicode编码 * 下面的编码方式都一样 */getcontentpane().setlayout(null);teambtn = new jbutton();getcontentpane().add(teambtn);teambtn.settext(u7403u961fu7ba1u7406);/球队管理teambtn.setbounds(51, 49, 101, 37);teambtn.addactionliste

26、ner(new actionlistener() public void actionperformed(actionevent evt) tf = new teamframe(jdbc);tf.setvisible(true););memberbtn = new jbutton();getcontentpane().add(memberbtn);memberbtn.settext(u7403u5458u7ba1u7406);/球员管理memberbtn.setbounds(221, 51, 104, 35);memberbtn.addactionlistener(new actionlist

27、ener() public void actionperformed(actionevent evt) mf = new memberframe(jdbc);mf.setvisible(true););matchbtn = new jbutton();getcontentpane().add(matchbtn);matchbtn.settext(u6bd4u8d5bu7ba1u7406);/比赛管理matchbtn.setbounds(51, 135, 91, 35);matchbtn.addactionlistener(new actionlistener() public void act

28、ionperformed(actionevent evt) af = new matchframe(jdbc);af.setvisible(true););calbtn = new jbutton();getcontentpane().add(calbtn);calbtn.settext(u7edfu8ba1u4fe1u606f);/统计信息calbtn.setbounds(226, 137, 99, 32);calbtn.addactionlistener(new actionlistener() public void actionperformed(actionevent evt) cf

29、 = new calculateframe(jdbc);cf.setvisible(true););quitbtn = new jbutton();getcontentpane().add(quitbtn);quitbtn.settext(u9000u51fa);/退出quitbtn.setbounds(142, 204, 79, 33);quitbtn.addactionlistener(new actionlistener() public void actionperformed(actionevent evt) if(jdbc != null)jdbc.close();system.e

30、xit(0););setsize(400, 300);super.center(); catch (exception e) e.printstacktrace();public static object getguibuilderinstance() return new mainframe(boolean.false);public mainframe(boolean initgui) super();2连接数据库代码(部分):public class dbtablemodel1 extends abstracttablemodel connection connection; stat

31、ement statement; resultset resultset; string columnnames = ; vectorrows = new vector(); resultsetmetadata metadata; public dbtablemodel1() string url=jdbc:sqlserver:/127.0.0.1:1433;databasename=footballsample; string drivername=com.microsoft.sqlserver.jdbc.sqlserverdriver; string user=sa; string pas

32、swd=251314; try class.forname(drivername); system.out.println(opening db connection); connection = drivermanager.getconnection(url, user, passwd); statement = connection.createstatement(); catch (classnotfoundexception ex) system.err.println(cannot find the database driver classes.); system.err.prin

33、tln(ex); catch (sqlexception ex) system.err.println(cannot connect to this database.); system.err.println(ex); public void executequery(string query) if (connection = null | statement = null) system.err.println(there is no database to execute the query.); return; try resultset = statement.executeque

34、ry(query); metadata = resultset.getmetadata(); int numberofcolumns = metadata.getcolumncount(); columnnames = new stringnumberofcolumns; for(int column = 0; column numberofcolumns; column+) columnnamescolumn = metadata.getcolumnlabel(column+1); rows = new vector(); while (resultset.next() vector new

35、row = new vector(); for (int i = 1; i = getcolumncount(); i+) newrow.addelement(resultset.getobject(i); rows.addelement(newrow); firetablechanged(null); catch (sqlexception ex) system.err.println(ex); 六、测试1.主窗体界面设计主界面图3主界面2.球队管理界面设计球队管理图4球队管理3.球队管理界面设计添加球队界面图5添加球队界面4.球队管理界面设计变更球队界面图6变更球队界面5. 球队管理界面设

36、计删除球队界面图7删除球队界面6.球队管理界面设计显示球队界面图8显示球队界面7.球员管理界面设计球员管理图9球员管理8.球员管理界面设计添加球员图10添加球员9.球员管理界面设计根据姓名修改球员信息图11根据姓名修改球员信息10.球员管理界面设计根据队名和球衣号码修改球员 图12根据队名和球衣号修改球员11.球员管理界面设计根据姓名删除球员图13根据姓名删除球员12.球员管理界面设计根据队名和号码删除球员图14根据队名和号码删除球员13.球员管理界面设计查询球员图15查询球员14.比赛管理界面设计图16比赛管理界面设计15.统计信息界面设计统计信息图17统计信息16.统计信息界面设计积分榜图

37、18积分榜17.统计信息界面设计射手榜 图19射手榜七、设计总结 经历这次的课程设计,对自己的学习有很多帮助,特别是对面向对象程序设计的思想、方法以及具体实现有了较为深刻的体会。在平时的很少有那么多的时间去学习java,这次的课程设计使我有了一个相对比较集中的时间去练习我的编程,特别是我的动手能力有了极大的提高,因为这次的课程设计几乎涉及到了java语言程序设计的整本书的重要内容,让我从中受益,有了一次巩固知识的机会。同时还让自己平时不怎么注意的问题得到了自己足够的关注,为以后写程序奠定下了坚实的基础,让自己对这门课的课程有了更深刻的认识。这次写完程序后,等到自己能顺利运行时,我觉得自己的任务

38、才刚刚开始,我的目标是在没有我的讲解下,还能够顺利的运行我的程序。因为我觉得自己写程序就是给别人用的,自己运行的再好也没有什么用,只有别人运行的舒服,才能够说明你的程序取得了一定的成功。通过对该系统的具体设计分析,使我对面向对象程序设计的思想更加深入理解,我基本上掌握了java语言的基本知识和技能和面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时对程序设计风格有全面的强调,提高解决实际问题的能力。并且通过与数据库的连接,深化对数据库编程的理解和运用。最后,用一句话总结这次的课程设计收获多多!致谢首先,我要感谢学校给我们提供了此次课程设计的机会

39、,能让同学们在一起学习与研究,让我们有机会对所学的理论知识进行实践。其次,我还要特别感谢我的辅导老师李明老师,在他的精心辅导和帮助下,我的设计才得以顺利完成,并使所学知识得以真正的应用。对他为我的设计所提出的宝贵意见表示忠心的感谢!最后、在设计过程中,也得到了许多同学的宝贵建议,同时还到许多校友的支持和帮助,在此一并致以诚挚的谢意。参考文献1曲朝阳,杨杰明等.java程序设计. 北京: 清华大学出版社,2008.102耿祥以,张跃平.java大学生实用教程. 北京: 电子工业出版社,2012.6 3明日科技.java经典编程.北京:清华大学出版社,2012.104李尊朝,苏军.java语言程序

40、设计.北京:中国铁道出版社,2004.25王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990. 附录:java.sql.sqlexception;import java.sql.statement;import java.sql.connection;import java.sql.drivermanager;import java.sql.resultset;public class testimporpublic static void main(string args)connection conn;statement stmt;resultset rs;try/加载数

41、据库驱动程序,对于jdbc4版本可以不用写这段代码class.forname(com.microsoft.sqlserver.jdbc.sqlserverdriver); catch(classnotfoundexception ex)system.out.println(数据库驱动加载失败);string url = jdbc:sqlserver:/localhost:1433;databasename=test1;integratedsecurity=true;string sql=select* from exa;try/连接数据库conn = drivermanager.getconnection(url);/建立statement对象stmt=conn.createstatement();/执行数据库查询语句rs=stmt.executequery(sql);while(rs.next()int id=rs.getint(id);string name=rs.getstring(name); int age=rs.getin

温馨提示

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

评论

0/150

提交评论