热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运动会报名系统的简易实现

需求分析:一、语言和环境A、实现语言:JavaB、环境要求:JDK8.0、Eclipse、MySQL5.6二、功能要求学校即将举办第五届春季运动会,为更方便管理报名信息,现要求开发

需求分析:

一、语言和环境

A、实现语言:Java

B、环境要求:JDK 8.0、Eclipse 、MySQL 5.6

二、功能要求

学校即将举办第五届春季运动会,为更方便管理报名信息,现要求开发基于控制台的学校运动会报名系统。具体要求如下:

1.主菜单:显示系统主菜单,每执行完一项功能后菜单循环显示,如图1所示,菜单功能包括:

1) 学生报名

2) 按比赛项目查询

3) 按班级查询

4) 取消报名

5) 退出系统

2.学生报名:输入学生姓名、年龄、班级号、报名项目编号,正确录入以上信息后,显示“报名成功!”。

3.按比赛项目查询:提示选择要查询的比赛项目,查询出相关学生信息,包括项目名、姓名、班级、年龄。

4.按班级查询:提示选择要查询的班级,查询出相关学生信息,包括项目名、姓名、班级、年龄。

5.取消报名:提示输入要取消报名的学生姓名,从报名信息表中删除该学生记录。成功后提示“取消报名成功!”

6.退出系统:提示“谢谢使用!”后退出系统

三、具体要求及推荐实现步骤

1.创建数据库表apply_info,添加测试数据不少于4条,表结构如表1所示。

技术分享图片

系统目录结构如下图所示:

技术分享图片

2.创建实体类ApplyInfo,根据业务提供需要的构造方法和setter/getter方法。      

 1 package top.hinux.entity;
 2 
 3 /**
 4  * 

报名信息实体类

5 * @author HSH 6 * 7 */ 8 public class ApplyInfo { 9 10 private int applyId;//编号 11 private String name;//姓名 12 private int age;//年龄 13 private String className;//班级 14 private String game;//比赛项目 15 16 17 /** 18 * 生成构造方法 19 * @param applyId 20 * @param name 21 * @param age 22 * @param className 23 * @param game 24 */ 25 public ApplyInfo(String name, int age, String className, String game) { 26 this.name = name; 27 this.age = age; 28 this.className = className; 29 this.game = game; 30 } 31 32 33 //生成get(),set() 方法。 34 public int getApplyId() { 35 return applyId; 36 } 37 public void setApplyId(int applyId) { 38 this.applyId = applyId; 39 } 40 public String getName() { 41 return name; 42 } 43 public void setName(String name) { 44 this.name = name; 45 } 46 public int getAge() { 47 return age; 48 } 49 public void setAge(int age) { 50 this.age = age; 51 } 52 public String getClassName() { 53 return className; 54 } 55 public void setClassName(String className) { 56 this.className = className; 57 } 58 public String getGame() { 59 return game; 60 } 61 public void setGame(String game) { 62 this.game = game; 63 } 64 65 66 @Override 67 public String toString() { 68 return "ApplyInfo [applyId=" + applyId + ", name=" + name + ", age=" + age + ", className=" + className 69 + ", game=" + game + "]"; 70 } 71 72 73 74 }

3.创建JDBCTools类,实现数据库连接和关闭功能。

 1 package top.hinux.dao;
 2 
 3 import java.io.IOException;
 4 
 5 import java.io.InputStream;
 6 import java.sql.Connection;
 7 import java.sql.DriverManager;
 8 import java.sql.PreparedStatement;
 9 import java.sql.ResultSet;
10 import java.sql.SQLException;
11 import java.sql.Statement;
12 import java.util.Properties;
13 
14 
15 /**
16  * 

实现数据库连接和关闭功能

17 * @author Administrator 18 * 19 */ 20 public class JDBCTools { 21 22 private static String driver; 23 private static String url; 24 private static String user; 25 private static String password; 26 private static Connection conn; 27 private JDBCTools(){ 28 29 } 30 static { 31 InputStream in=DBUtils.class.getResourceAsStream("/db.properties"); 32 Properties pro=new Properties(); 33 try { 34 pro.load(in); 35 driver=pro.getProperty("driver"); 36 url=pro.getProperty("url"); 37 user=pro.getProperty("user"); 38 password=pro.getProperty("password"); 39 Class.forName(driver); 40 cOnn=DriverManager.getConnection(url,user,password); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 System.out.print("配置文件加载失败!"); 44 } catch (ClassNotFoundException e) { 45 e.printStackTrace(); 46 } catch (SQLException e) { 47 e.printStackTrace(); 48 } 49 } 50 51 public static Connection getConnection() { 52 try { 53 if (cOnn== null || conn.isClosed()) 54 cOnn= DriverManager.getConnection(url, user, password); 55 } catch (SQLException e) { 56 e.printStackTrace(); 57 } 58 return conn; 59 } 60 public static void close(){ 61 colse(null,null); 62 } 63 public static void close(Statement stm){ 64 colse(null,stm); 65 } 66 public static void colse(ResultSet rs, Statement stm){ 67 if(rs!=null){ 68 try { 69 rs.close(); 70 } catch (SQLException e) { 71 e.printStackTrace(); 72 } 73 } 74 if(stm!=null){ 75 try { 76 stm.close(); 77 } catch (SQLException e) { 78 e.printStackTrace(); 79 } 80 } 81 } 82 83 public static void colse(PreparedStatement sta) { 84 85 } 86 }

创建DBUtils类,写通用的增删改查的方法。

package top.hinux.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import top.hinux.entity.ApplyInfo;

/**
 * 

写通用的增删改查的方法。

*
@author HSH * */ public class DBUtils { /** *

插入数据

*
@param applyinfo * @return */ public static int insert(ApplyInfo applyinfo) { Connection conn = JDBCTools.getConnection(); int i = 0; String sql = "insert into Apply_Info (Name,Age,class,Game) values(?,?,?,?)"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, applyinfo.getName()); pstmt.setLong(2, applyinfo.getAge()); pstmt.setString(3, applyinfo.getClassName()); pstmt.setString(4, applyinfo.getGame()); i = pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; } /** *

删除记录

*
@param sql * @param args */ public static int delete(String name) { Connection conn = JDBCTools.getConnection(); int i = 0; String sql = "delete from Apply_Info where Name=‘" + name + "‘"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); i = pstmt.executeUpdate(); //System.out.println("resutl: " + i); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; } /** *

修改记录

*
@param sql * @param args */ public static int update(ApplyInfo applyinfo) { Connection conn = JDBCTools.getConnection(); int i = 0; String sql = "update apply_info set Age=‘" + applyinfo.getAge() + "‘ where Name=‘" + applyinfo.getName() + "‘"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); i = pstmt.executeUpdate(); System.out.println("resutl: " + i); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; } /** *

查询记录

*
@param sql * @param args */ public static Integer getTableInfo(String sql,Object...prarm) { Connection conn = JDBCTools.getConnection(); PreparedStatement pstmt; try { pstmt = (PreparedStatement)conn.prepareStatement(sql); if (prarm!=null) { for (int i = 0; i ) { pstmt.setObject(i+1,prarm[i]); } } ResultSet rs = pstmt.executeQuery(); int col = rs.getMetaData().getColumnCount(); System.out.println("============================================"); System.out.println("编号\t姓名\t年龄\t班级\t项目"); while (rs.next()) { for (int i = 1; i <= col; i++) { System.out.print(rs.getString(i) + "\t"); if ((i == 2) && (rs.getString(i).length() <8)) { // System.out.print("\t"); // System.out.println("aaa"); } } System.out.println(""); } System.out.println("============================================"); } catch (SQLException e) { e.printStackTrace(); } return null; } }

4.创建DAO接口ApplyInfoDao,定义学生报名,按班级查询,按比赛项目,取消报名的方法。

 1 package top.hinux.service;
 2 
 3 import top.hinux.entity.ApplyInfo;
 4 
 5 /**
 6  * 定义学生报名,按班级查询,按比赛项目,取消报名的方法。
 7  * @author Administrator
 8  *
 9  */
10 public interface ApplyInfoDao {
11     /**
12      * 

定义学生报名

13 */ 14 void studentReg(ApplyInfo appinfo); 15 /** 16 *

按班级查询

17 */ 18 void selectClass(String sql,String ClassName); 19 /** 20 *

按比赛项目查询

21 */ 22 void selectGame(String sql,String game); 23 /** 24 *

取消报,

25 */ 26 void removeMessage(String name); 27 }

5.创建DAO实现类ApplyInfoDaoImpl,实现ApplyInfoDao接口,使用JDBC完成相应数据库操作。

 1 package top.hinux.utils;
 2 
 3 import top.hinux.dao.DBUtils;
 4 import top.hinux.entity.ApplyInfo;
 5 import top.hinux.service.ApplyInfoDao;
 6 
 7 public class ApplyInfoDaoImpl implements ApplyInfoDao{
 8 
 9     @Override
10     public void studentReg(ApplyInfo appinfo) {
11         // TODO Auto-generated method stub
12         DBUtils.insert(appinfo);
13         System.out.println("信息插入成功!");
14     }
15 
16     @Override
17     public void selectClass(String sql,String ClassName) {
18         // TODO Auto-generated method stub
19         DBUtils.getTableInfo(sql, ClassName);
20     }
21 
22     @Override
23     public void selectGame(String sql,String game) {
24         // TODO Auto-generated method stub
25          DBUtils.getTableInfo(sql, game);
26     }
27 
28     @Override
29     public void removeMessage(String name) {
30         // TODO Auto-generated method stub
31         DBUtils.delete(name);
32     }
33 
34 }

6.创建ApplyMgr类,完成在控制台的报名信息操作,启动和运行系统。

package top.hinux.utils;

import java.util.Scanner;

import top.hinux.entity.ApplyInfo;

/**
 * 

完成在控制台的报名信息操作,启动和运行系统。

*
@author HSH * */ public class ApplyMgr { //菜单数组 private static String[] munu = { "1、学生报名", "2、按比赛项目查询", "3、按班级查询", "4、取消报名", "5、退出系统" }; //班级列表 private static String[] classNames = { "一班", "二班", "三班" }; //运动会项目列表 private static String[] games = { "跳远", "接力跑", "跳绳" }; // 取消报名 public static void dropUser() { Scanner sc = new Scanner(System.in); System.out.println("请输入您的名字:"); String userName = sc.next(); System.out.println("*********************正在取消报名*****************"); //生成ApplyInfoDaoImpl对象 ApplyInfoDaoImpl apdi = new ApplyInfoDaoImpl(); apdi.removeMessage(userName); System.out.println(userName + "取消报名成功!"); } // 按班级查询 public static void selectClass() { Scanner sc = new Scanner(System.in); System.out.println(" 请选择您的班级,输入编号:(1、一班,2、二班,3、三班)"); int className = sc.nextInt(); System.out.println("正在按照班级信息查询!"); System.out.println("********************"); System.out.println("按班级信息查询结果如下:"); //生成ApplyInfoDaoImpl对象 ApplyInfoDaoImpl apdi = new ApplyInfoDaoImpl(); String sql = "select *from Apply_Info where class=?"; apdi.selectClass(sql, classNames[className-1]); } // 查询比赛项目 public static void selectGame() { Scanner sc = new Scanner(System.in); System.out.println("请选择您的项目,输入编号:(1、跳远,2、接力跑,3、跳绳)"); int game = sc.nextInt(); System.out.println("正在按照比赛项目信息查询!"); System.out.println("********************"); System.out.println("按比赛项目信息查询结果如下:"); //生成ApplyInfoDaoImpl对象 ApplyInfoDaoImpl apdi = new ApplyInfoDaoImpl(); String sql ="select *from Apply_Info where game=?"; apdi.selectGame(sql, games[game-1]); } /** *

* 学生报名 *

*
@author HSH */ public static void regUser() { try { Scanner sc = new Scanner(System.in); System.out.println("请输入姓名:"); String userName = sc.next(); System.out.println("请输入您的年龄:"); int age = sc.nextInt(); System.out.println(" 请选择您的班级,输入编号:(1、一班,2、二班,3、三班)"); int className = sc.nextInt(); System.out.println("请选择您的项目,输入编号:(1、跳远,2、接力跑,3、跳绳)"); int game = sc.nextInt(); System.out.println("user:" + userName + " age:" + age + " className:" + classNames[className - 1] + " game:" + games[game-1]); // 在此处写报名数据存取操作 ApplyInfo ai = new ApplyInfo( userName, age, classNames[className-1], games[game-1]); //生成ApplyInfoDaoImpl对象 ApplyInfoDaoImpl apdi = new ApplyInfoDaoImpl(); apdi.studentReg(ai); } catch (Exception e) { // TODO Auto-generated catch block //e.printStackTrace(); System.out.println("信息输入格式不正确!请重新输入!"); } } /** *

* 显示菜单 *

* * @author HSH */ public static void showMune() { System.out.println("*********************************************"); System.out.println("****\t\t欢迎进入运动会报名系统\t\t****"); for (String string : munu) { System.out.print(string + " "); } System.out.println(); System.out.println("*********************************************"); } /** *

* 退出系统成功 *

* *
@author HSH */ public static void exitSys() { System.out.println("退出系统成功!"); } }

7.创建主类(Manager)用于实现系统整体流程

package top.hinux;

import java.util.Scanner;
import top.hinux.utils.ApplyMgr;

public class Manager {
    
    /**
     * 

程序主函数,实现系统功能

*
@author HSH * @param args */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); ApplyMgr.showMune(); while (true) { try { System.out.println("请输入您要办理的业务!"); int select = sc.nextInt(); switch (select) { case 1: ApplyMgr.regUser();//学生报名 break; case 2: ApplyMgr.selectGame();//查询比赛项目 break; case 3: ApplyMgr.selectClass();// 按班级查询 break; case 4: ApplyMgr.dropUser();//取消报名 break; case 5: ApplyMgr.exitSys();//退出系统 return; default: System.out.println("输入错误!"); } } catch (Exception e) { //e.printStackTrace(); sc.nextLine(); System.out.println("信息输入错误,请重新输入:"); } ApplyMgr.showMune(); } } }

运动会报名系统的简易实现


推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
疯子zls_565
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有