足球联赛管理系统
- 格式:doc
- 大小:1.02 MB
- 文档页数:36
************************实践教学************************兰州理工大学计算机与通信学院2010年春季学期面向对象课程设计题目:足球联赛积分管理系统专业班级:信息与计算科学06班姓名:摆富有学号:10240618指导教师:庞淑侠成绩:前言在面对对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念。
类和继承是是适应人们一般思维方式的描述范式。
方法是允许作用于该类对象上的各种操作。
这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。
通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
l 决定你要的类;2 给每个类提供完整的一组操作;3 明确地使用继承来表现共同点。
由这个定义,我们可以看出:面向对象设计就是“根据需求决定所需的类、类的操作以及类之间关联的过程。
本次面向对象设计采用JAVA实现足球积分管理系统的实现。
摘要足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。
该设计以足球联赛为背景,设计足球联赛积分管理系统程序。
通过对该题目的具体设计分析,可以对面向对象程序设计的思想更加深入理解,可以达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
同时对程序设计风格有全面的强调,提高解决实际问题的能力。
并且通过与数据库的连接,深化对数据库编程的理解和运用。
关键词:双循环赛制;面向对象;java;数据库编程;数据库目录一、概述 (2)二、需求分析 (3)三、总体设计 (4)四、详细设计 (5)五、编码 (15)六、测试 (20)七、设计总结 (28)致谢 (30)参考文献 (30)一、概述1.项目名称:足球联赛积分管理系统2.项目介绍:该项目用于对一个年度的足球联赛的各种信息进行管理,通过制作的专门界面,可以对球队、球员、比赛情况、各种统计信息进行管理。
3.项目背景:结合java面向对象程序设计和数据库编程中介绍的内容和以往所学的专业知识,开发一个足球联赛积分管理系统。
4.项目目的:掌握数面向对象程序设计原理以及sql sever 2008的基本操作,知道并且熟练掌握java语言中的基本方法和基本内容的运用,并能熟练使用结构化查询语言SQL语句,能在一个或多个数据库管理系统进行开发和管理,并结合面向对象程序开发语言JA V A进行项目的开发。
5.开发环境:面向对象程序开发语言采用JA V A,数据库管理系统采用SQLSEVER 2008,集成开发环境使用my eclipse 8.5。
二、需求分析问题分析是程序设计的第一步,其目的是理解题目的要求,明确程序的运行环境和方式,以及相关的限制条件。
问题分析的基本内容包括确定程序的功能和性能、程序的输入输出数据的来源、去向、内容、范围及其格式,程序的使用者、调用方式、人机交互要求,与其他程序的关系和交互方式,对通用性的要求和扩展的可能,以及性能和其他对程序的特殊要求和限制,如程序所占用系统资源的数量、对输入命令的响应速度等。
在使用面向对象方法设计足球联赛积分管理系统时,除了对于具体问题具体分析之外,我们还应该理解系统主要元素之间的关系,所以,简要列举我们以下几点:1、系统需求说明a、要求利用面向对象的方法以及Java的编程思想来完成系统的设计;b、要求在设计的过程中,建立清晰的类层次;c、在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;d、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。
足球联赛积分管理系统是一个以足球联赛为背景,设计足球联赛积分管理系统程序。
采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次。
2、系统资源说明面向对象程序开发语言采用JAVA,数据库管理系统采用SQLSEVER 2008,集成开发环境使用my eclipse 8.5。
3、系统可行性分析该管理系统是以自主设计为主,通过对该系统的具体设计分析,可以对面向对象程序设计的思想更加深入理解,可以达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
同时对程序设计风格有全面的强调,提高解决实际问题的能力。
并且通过与数据库的连接,深化对数据库编程的理解和运用。
三、总体设计在对该系统有初步的规划之后,我们应该着手处理如何初步规划该系统的各主要模块以及基本的方法,前面已经提到,我们使用面向对象程序设计的思路,而且运用数据库编程的理论,所以我们应该按照具体的思路来设计相应的应用,以下简要概述该系统的具体设计:1.球队的管理:包括球队信息的添加、删除、修改和查询;2.球员的管理:包括球员信息的添加、删除、修改和查询;3.比赛过程的管理:包括一场比赛的基本信息的录入,如参赛双方的球队名称、比赛日期、比赛结果、进球情况等;4.积分榜查询:按照联赛的积分规则查询各个球队的名次;5.射手榜查询:按照进球多少查询进球队员的名次。
四、详细设计针对系统的局部构思,可以设计该系统的功能模块如下所示•项目设计•数据库概念结构设计;•数据库逻辑结构设计;•数据库物理结构设计;4.1 项目设计项目设计部分主要包括以下两部分:1.系统模块设计2.界面设计4.1.1 系统模块设计图1系统模块设计4.1.2 界面设计图2界面设计4.2 数据库概念结构设计图20数据库概念结构设计4.3数据库逻辑模型结构设计4.3.1 逻辑模型设计——球队表(Team)表1球队表表2球员表4.3.3 逻辑模型设计——比赛进程表(Course)表3比赛进程表表4进球表4.3.5 逻辑模型设计——积分榜(Score)字段名数据类型宽度主码非空外码描述PLACE INT 否是否名次NAME V ARCHAR 20 是是否球队名称TURN INT 否是否轮次WON INT 否是否胜利场次EVEN INT 否是否平局场次BEATEN INT 否是否失败场次GOAL INT 否是否总进球数LOST INT 否是否总失球数NET INT 否是否净剩球数POINT INT 否是否积分表5积分榜4.3.6 逻辑模型设计——射手榜(GoalScore)表6射手榜4.4 物理结构模型设计在这里主要介绍如何连接数据库的方法和创建触发器的部分功能。
由于方法比较多,现在采用jdbc驱动方式连接。
4.4.1 用jdbc驱动方式:1>.到微软官网上下载jdbc驱动包sqljdbc_3.0,解压后复制文件sqljdbc_3.0\enu\auth\x86\ sqljdbc_auth.dll到C:\Windows\System32,并将解压文件中的sqljdbc4.jar的路径添加系统环境变量的CLASSPATH里。
2>.设置并打开sql server的TCP/IP端口:打开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 url ="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 Test{public static void main(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;";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(rs!=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://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 Test{public static void main(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;";String sql="select* from exa";try{//连接数据库conn = DriverManager.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.close();stmt=null;}if(conn!=null){conn.close();conn=null;}}catch(SQLException e){e.printStackTrace();System.out.println("数据库连接失败");}}}4.4.2 创建触发器触发器是一种数据库对象,它可以自动执行,当用户的操作影响到触发器保护的数据时,触发器就会被触发自动执行所定义的SQL语句,激活触发器的动作称为触发器激活条件,触发器活动后所做的操作称为触发器动作。