java MySql题 求大神帮忙解答 ,万分感谢!

h85831762 2016-09-03 04:46:21
创建一个Student类,其中属性有name(姓名),age(年龄),id(学号),javaScore(java成绩),cScore(C语言成绩),ocScore(oc成绩)(困难)
a. 创建6个Student对象并且要通过有参构造赋值,将这个六个对象存放到集合中;
b. 模拟一个学生成绩查询系统
a) 在控制台上显示以下信息(括号里面内容不用显示)*主菜单*
1.将学生信息录入到数据库中(要求:从集合中获取数据存储到数据库中)
2.显示所有学生信息 (要求:输出格式为:姓名-年龄-学号-java成绩-C语言成绩-oc成绩,信息需要从数据库中查询出来显示)
3.根据学生学号查询该学生的总分 (要求:学号从控制台获取,显示格式:学生姓名-总分,数据要从数据库中获取)
4.导出所有学生的相关信息 (将所有学生的信息存放在当前项目studentInfo.txt中,
要求:从数据库中获取学生所有信息并将信息写入到指定文件中,写入格式为:姓名-年龄-学号-java成绩-C语言成绩-oc成绩)
5.退出
b) 根据用户输入的功能序号执行相应的功能,并且执行完后显示主菜单,可以接着操作,直到选择退出程序不再执行

PS: 假设已经存在student_info表,该表字段有 name age id javaScore cScore ocScore 其中成绩都是double类型,
年龄是int类型,姓名和学号是字符串类型
(IP为127.0.0.1数据库名为stdb,连接数据库的用户名和密码为root 和 123456)不能用DBUtils等工具类
...全文
583 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
哈哈哈 当时我怎么那么笨,没想起来这样。
zhaopeng2511 2016-09-08
  • 打赏
  • 举报
回复
厉害~
引用 3 楼 walkman_22 的回复:
第一步,建立Student类。

package com.yanzhen.september;
/**
 * 学生类信息
 * 包含:姓名;年龄;学号;JAVA成绩,C语言成绩,OC成绩
 * @围脖:皖西程序猿
 * @Email:walkman_28@163.com
 */
public class Student {
	
	private String name;
	
	private int age;
	
	private String number;
	
	private double javaLanguageScore;
	
	private double cLanguageScore;
	
	private double ocLanguageScore;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public double getJavaLanguageScore() {
		return javaLanguageScore;
	}

	public void setJavaLanguageScore(double javaLanguageScore) {
		this.javaLanguageScore = javaLanguageScore;
	}

	public double getcLanguageScore() {
		return cLanguageScore;
	}

	public void setcLanguageScore(double cLanguageScore) {
		this.cLanguageScore = cLanguageScore;
	}

	public double getOcLanguageScore() {
		return ocLanguageScore;
	}

	public void setOcLanguageScore(double ocLanguageScore) {
		this.ocLanguageScore = ocLanguageScore;
	}
	
	
}

第二步,在MYSQL中建立数据库

DROP TABLE IF EXISTS STUDENT;  
CREATE TABLE student (  
   name varchar(20) NOT NULL,  
   age int(3) NOT NULL,  
   num varchar(20) NOT NULL,  
   javaScore double(4,2) NOT NULL,
   cScore double(4,2) NOT NULL,
   ocScore double(4,2) NOT NULL,
  PRIMARY KEY (num)  
);
第三步,主函数

package com.yanzhen.september;

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.sql.*;

/**
 * 由控制台控制学生信息的输入,查询及保存的简单小系统。
 * @围脖:皖西程序猿
 * @Email:walkman_28@163.com
 */
public class StudentScoreQuery {
	
	private final static String TIP_MESSAGE = "学生成绩查询系统(新浪微博:皖西程序猿)";
	
	private final static String OPTION_ONE = "1 将学生信息录入数据库中";
	
	private final static String OPTION_TWO = "2 显示所有学生信息";
	
	private final static String OPTION_THREE = "3 根据学生学号查询该学生的总分";
	
	private final static String OPTION_FOUR = "4 导出所有学生的相关信息";
	
	private final static String OPTION_FIVE = "5 退出";
	
	// 数据库操作部分
	//驱动程序名
	private final static String driver = "com.mysql.jdbc.Driver";
	//URL指向要访问的数据库名mydata
	private final static String url = "jdbc:mysql://localhost:3306/student";
	//MySQL配置时的用户名
	private final static String user = "root";
	//MySQL配置时的密码
	private final static String password = "test";

	public static void main(String[] args) {
		// (1)控制台上显示主菜单信息
		// 1 将学生信息录入数据库中 2 显示所有学生信息 3 根据学生学号查询该学生的总分 4 导出所有学生的相关信息 5 退出
		System.out.print(TIP_MESSAGE + "\t\n");
		System.out.print(OPTION_ONE);
		System.out.print(OPTION_TWO);
		System.out.print(OPTION_THREE);
		System.out.print(OPTION_FOUR);
		System.out.print(OPTION_FIVE + "\n");
		
		// 判断输入的数字,决定操作
		Scanner scan = new Scanner(System.in);
		int inputNumber = scan.nextInt();
		
		if (inputNumber == 1) {
			// 具体功能实现:1 将学生信息录入数据库中
			Student stu = getScannerInputInformations();
			saveStudentInfomationsIntoDatabase(stu);
		} else if (inputNumber == 2 ) {
			// 具体功能实现:2 显示所有学生信息
			showAllStudentInformations();
		} else if (inputNumber == 3 ) {
			// 具体功能实现:3 根据学生学号查询该学生的总分
			String num = scan.next();
			System.out.println("总分为:" + getSumScoreByNumber(num));
		} else if (inputNumber == 4 ) {
			// 4 导出所有学生的相关信息
			writeAllStudentInformationIntoFile();
		} else if (inputNumber == 5 ) {
			// 具体功能实现:5 直接退出程序
			System.exit(0);
		}
	}
	
	// 由控制台输入信息并生成Student类
	public static Student getScannerInputInformations() {
		Student stu = new Student();
		// 1 接收姓名
		System.out.println("请输入姓名");
		Scanner scan = new  Scanner(System.in);
		String getScanName = scan.nextLine();
		
		// 2 接收年龄
		System.out.println("请输入年龄");
		scan = new  Scanner(System.in);
		int getScanAge = scan.nextInt();

		// 3 接收学号
		System.out.println("请输入学号");
		scan = new  Scanner(System.in);
		String getScanNumber = scan.nextLine();
		
		// 4 接收JAVA成绩
		System.out.println("请输入JAVA成绩");
		scan = new  Scanner(System.in);
		double getScanJavaLanuageScore = scan.nextDouble();
		
		// 5 接收C语言成绩
		System.out.println("请输入C语言成绩");
		scan = new  Scanner(System.in);
		double getScanCLanuageScore = scan.nextDouble();
		
		// 6  接收OC成绩
		System.out.println("请输入OC语言成绩");
		scan = new  Scanner(System.in);
		double getScanOCLanuageScore = scan.nextDouble();
		
		// 7 组合Student对象
		stu.setName(getScanName);
		stu.setAge(getScanAge);
		stu.setNumber(getScanNumber);
		stu.setJavaLanguageScore(getScanJavaLanuageScore);
		stu.setcLanguageScore(getScanCLanuageScore);;
		stu.setOcLanguageScore(getScanOCLanuageScore);
		
		return stu;
	}
	
	// 具体功能实现:1 将学生信息录入数据库中
	public static void saveStudentInfomationsIntoDatabase (Student stu) {
		//声明Connection对象
		Connection con;
		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "insert into student values(?,?,?,?,?,?) ";  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);  
			  
			 pst.setString(1, stu.getName());  
			 pst.setInt(2, stu.getAge());
			 pst.setString(3, stu.getNumber());
			 pst.setDouble(4, stu.getJavaLanguageScore());
			 pst.setDouble(5, stu.getcLanguageScore());
			 pst.setDouble(6, stu.getOcLanguageScore());
			 
			 pst.executeUpdate();  
			 
			 con.commit();
			 pst.close();  
			 con.close(); 
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}

	// 具体功能实现:2 显示所有学生信息
	public static void  showAllStudentInformations() {
		//声明Connection对象
		Connection con;

		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "select * from student ";  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			 ResultSet rs = pst.executeQuery(sql);  
			
			 // 3.遍历查找数据库中数据
			 
			 while(rs.next()) {
				 System.out.println(rs.getString(1) + "|" + rs.getInt(2) +"|"+rs.getString(3)
				 		+ rs.getDouble(4) + "|" + rs.getDouble(5) + "|" + rs.getDouble(6));
			 }
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}  
		
	}
	
	// 具体功能实现:3 根据学生学号查询该学生的总分
	public static double   getSumScoreByNumber(String num)	 {
		//声明Connection对象
		Connection con;
		double sumScore = 0.0;
		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "select * from student where num="+ num;  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			 ResultSet rs = pst.executeQuery(sql);  
			
			 // 3.遍历查找数据库中数据
			 while(rs.next()) {
				 sumScore = rs.getDouble(4) + rs.getDouble(5) + rs.getDouble(6);
			 }
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}  
		return sumScore;
	}
	
	// 具体功能实现:4 导出所有学生的相关信息存放到studentInfo.txt中
	public static void writeAllStudentInformationIntoFile() {
		//声明Connection对象
		Connection con;
		String infomationForFile = "";
		File file = new File("d:\\student.txt");
		try {
			Class.forName(driver);
			// 1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url, user, password);

			// 2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);

			String sql = "select * from student ";
			PreparedStatement pst = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			ResultSet rs = pst.executeQuery(sql);

			// 3.遍历查找数据库中数据

			while (rs.next()) {
				String tempStr = (rs.getString(1) + "|" + rs.getInt(2) + "|" + rs.getString(3) + rs.getDouble(4) + "|"
						+ rs.getDouble(5) + "|" + rs.getDouble(6)) + "\n";
				infomationForFile = infomationForFile + tempStr;
			}
			
			PrintStream ps = new PrintStream(new FileOutputStream(file));
			ps.println(infomationForFile);
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
}


小灰狼 2016-09-08
  • 打赏
  • 举报
回复
引用 1 楼 sean_0xiao 的回复:
不是一来就要代码吧!你可以自己先写,有问题再来问!
引用 2 楼 qq_26682869 的回复:
同楼上,自己写写。。出错了就把你写的代码贴出来,我们来帮你纠错
大学刚开学,就来个求帮写作业的
tdy_nju 2016-09-07
  • 打赏
  • 举报
回复
给你贴一段DB类的代码吧,以后不要伸手了 package main; import java.sql.*; public class DB { private Connection conn = null; private Statement stmt = null; private String dataBase = "mysql"; private String username = "root"; private String passwd = "123456789"; /** * 构造方法 * @param dataBase * @param username * @param passwd */ public DB(String dataBase,String username,String passwd){ this.dataBase = dataBase; this.username = username; this.passwd = passwd; getConn(); getStatement(); } /** * 默认构造方法 */ public DB(){ getConn(); getStatement(); } /** * * @Description:获得链接 * @return:void * @time:2016年9月7日 下午5:48:52 */ private void getConn() { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/"+dataBase+"?user="+username+"&password="+passwd); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } private void getStatement() { try { if(conn != null) { stmt = conn.createStatement(); } } catch (SQLException e) { e.printStackTrace(); } } /** * * @Description:slect * @return:ResultSet * @time:2016年9月7日 下午7:04:41 */ public ResultSet find(String sql) { ResultSet rs = null; try { if(stmt != null) { rs = stmt.executeQuery(sql); } } catch (SQLException e) { e.printStackTrace(); } return rs; } /** * * @Description:update,add,remove * @return:void * @time:2016年9月7日 下午7:05:02 */ public void update(String sql) { try { if(stmt != null) { stmt.executeUpdate(sql); } } catch (SQLException e) { e.printStackTrace(); } } }
乐之者v 2016-09-06
  • 打赏
  • 举报
回复
有点讨厌伸手党。
walkman_22 2016-09-06
  • 打赏
  • 举报
回复
第一步,建立Student类。

package com.yanzhen.september;
/**
 * 学生类信息
 * 包含:姓名;年龄;学号;JAVA成绩,C语言成绩,OC成绩
 * @围脖:皖西程序猿
 * @Email:walkman_28@163.com
 */
public class Student {
	
	private String name;
	
	private int age;
	
	private String number;
	
	private double javaLanguageScore;
	
	private double cLanguageScore;
	
	private double ocLanguageScore;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public double getJavaLanguageScore() {
		return javaLanguageScore;
	}

	public void setJavaLanguageScore(double javaLanguageScore) {
		this.javaLanguageScore = javaLanguageScore;
	}

	public double getcLanguageScore() {
		return cLanguageScore;
	}

	public void setcLanguageScore(double cLanguageScore) {
		this.cLanguageScore = cLanguageScore;
	}

	public double getOcLanguageScore() {
		return ocLanguageScore;
	}

	public void setOcLanguageScore(double ocLanguageScore) {
		this.ocLanguageScore = ocLanguageScore;
	}
	
	
}

第二步,在MYSQL中建立数据库

DROP TABLE IF EXISTS STUDENT;  
CREATE TABLE student (  
   name varchar(20) NOT NULL,  
   age int(3) NOT NULL,  
   num varchar(20) NOT NULL,  
   javaScore double(4,2) NOT NULL,
   cScore double(4,2) NOT NULL,
   ocScore double(4,2) NOT NULL,
  PRIMARY KEY (num)  
);
第三步,主函数

package com.yanzhen.september;

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.sql.*;

/**
 * 由控制台控制学生信息的输入,查询及保存的简单小系统。
 * @围脖:皖西程序猿
 * @Email:walkman_28@163.com
 */
public class StudentScoreQuery {
	
	private final static String TIP_MESSAGE = "学生成绩查询系统(新浪微博:皖西程序猿)";
	
	private final static String OPTION_ONE = "1 将学生信息录入数据库中";
	
	private final static String OPTION_TWO = "2 显示所有学生信息";
	
	private final static String OPTION_THREE = "3 根据学生学号查询该学生的总分";
	
	private final static String OPTION_FOUR = "4 导出所有学生的相关信息";
	
	private final static String OPTION_FIVE = "5 退出";
	
	// 数据库操作部分
	//驱动程序名
	private final static String driver = "com.mysql.jdbc.Driver";
	//URL指向要访问的数据库名mydata
	private final static String url = "jdbc:mysql://localhost:3306/student";
	//MySQL配置时的用户名
	private final static String user = "root";
	//MySQL配置时的密码
	private final static String password = "test";

	public static void main(String[] args) {
		// (1)控制台上显示主菜单信息
		// 1 将学生信息录入数据库中 2 显示所有学生信息 3 根据学生学号查询该学生的总分 4 导出所有学生的相关信息 5 退出
		System.out.print(TIP_MESSAGE + "\t\n");
		System.out.print(OPTION_ONE);
		System.out.print(OPTION_TWO);
		System.out.print(OPTION_THREE);
		System.out.print(OPTION_FOUR);
		System.out.print(OPTION_FIVE + "\n");
		
		// 判断输入的数字,决定操作
		Scanner scan = new Scanner(System.in);
		int inputNumber = scan.nextInt();
		
		if (inputNumber == 1) {
			// 具体功能实现:1 将学生信息录入数据库中
			Student stu = getScannerInputInformations();
			saveStudentInfomationsIntoDatabase(stu);
		} else if (inputNumber == 2 ) {
			// 具体功能实现:2 显示所有学生信息
			showAllStudentInformations();
		} else if (inputNumber == 3 ) {
			// 具体功能实现:3 根据学生学号查询该学生的总分
			String num = scan.next();
			System.out.println("总分为:" + getSumScoreByNumber(num));
		} else if (inputNumber == 4 ) {
			// 4 导出所有学生的相关信息
			writeAllStudentInformationIntoFile();
		} else if (inputNumber == 5 ) {
			// 具体功能实现:5 直接退出程序
			System.exit(0);
		}
	}
	
	// 由控制台输入信息并生成Student类
	public static Student getScannerInputInformations() {
		Student stu = new Student();
		// 1 接收姓名
		System.out.println("请输入姓名");
		Scanner scan = new  Scanner(System.in);
		String getScanName = scan.nextLine();
		
		// 2 接收年龄
		System.out.println("请输入年龄");
		scan = new  Scanner(System.in);
		int getScanAge = scan.nextInt();

		// 3 接收学号
		System.out.println("请输入学号");
		scan = new  Scanner(System.in);
		String getScanNumber = scan.nextLine();
		
		// 4 接收JAVA成绩
		System.out.println("请输入JAVA成绩");
		scan = new  Scanner(System.in);
		double getScanJavaLanuageScore = scan.nextDouble();
		
		// 5 接收C语言成绩
		System.out.println("请输入C语言成绩");
		scan = new  Scanner(System.in);
		double getScanCLanuageScore = scan.nextDouble();
		
		// 6  接收OC成绩
		System.out.println("请输入OC语言成绩");
		scan = new  Scanner(System.in);
		double getScanOCLanuageScore = scan.nextDouble();
		
		// 7 组合Student对象
		stu.setName(getScanName);
		stu.setAge(getScanAge);
		stu.setNumber(getScanNumber);
		stu.setJavaLanguageScore(getScanJavaLanuageScore);
		stu.setcLanguageScore(getScanCLanuageScore);;
		stu.setOcLanguageScore(getScanOCLanuageScore);
		
		return stu;
	}
	
	// 具体功能实现:1 将学生信息录入数据库中
	public static void saveStudentInfomationsIntoDatabase (Student stu) {
		//声明Connection对象
		Connection con;
		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "insert into student values(?,?,?,?,?,?) ";  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);  
			  
			 pst.setString(1, stu.getName());  
			 pst.setInt(2, stu.getAge());
			 pst.setString(3, stu.getNumber());
			 pst.setDouble(4, stu.getJavaLanguageScore());
			 pst.setDouble(5, stu.getcLanguageScore());
			 pst.setDouble(6, stu.getOcLanguageScore());
			 
			 pst.executeUpdate();  
			 
			 con.commit();
			 pst.close();  
			 con.close(); 
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}

	// 具体功能实现:2 显示所有学生信息
	public static void  showAllStudentInformations() {
		//声明Connection对象
		Connection con;

		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "select * from student ";  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			 ResultSet rs = pst.executeQuery(sql);  
			
			 // 3.遍历查找数据库中数据
			 
			 while(rs.next()) {
				 System.out.println(rs.getString(1) + "|" + rs.getInt(2) +"|"+rs.getString(3)
				 		+ rs.getDouble(4) + "|" + rs.getDouble(5) + "|" + rs.getDouble(6));
			 }
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}  
		
	}
	
	// 具体功能实现:3 根据学生学号查询该学生的总分
	public static double   getSumScoreByNumber(String num)	 {
		//声明Connection对象
		Connection con;
		double sumScore = 0.0;
		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "select * from student where num="+ num;  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			 ResultSet rs = pst.executeQuery(sql);  
			
			 // 3.遍历查找数据库中数据
			 while(rs.next()) {
				 sumScore = rs.getDouble(4) + rs.getDouble(5) + rs.getDouble(6);
			 }
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}  
		return sumScore;
	}
	
	// 具体功能实现:4 导出所有学生的相关信息存放到studentInfo.txt中
	public static void writeAllStudentInformationIntoFile() {
		//声明Connection对象
		Connection con;
		String infomationForFile = "";
		File file = new File("d:\\student.txt");
		try {
			Class.forName(driver);
			// 1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url, user, password);

			// 2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);

			String sql = "select * from student ";
			PreparedStatement pst = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			ResultSet rs = pst.executeQuery(sql);

			// 3.遍历查找数据库中数据

			while (rs.next()) {
				String tempStr = (rs.getString(1) + "|" + rs.getInt(2) + "|" + rs.getString(3) + rs.getDouble(4) + "|"
						+ rs.getDouble(5) + "|" + rs.getDouble(6)) + "\n";
				infomationForFile = infomationForFile + tempStr;
			}
			
			PrintStream ps = new PrintStream(new FileOutputStream(file));
			ps.println(infomationForFile);
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
}


奔放老干部 2016-09-06
  • 打赏
  • 举报
回复
引用 3 楼 walkman_22 的回复:
第一步,建立Student类。

package com.yanzhen.september;
/**
 * 学生类信息
 * 包含:姓名;年龄;学号;JAVA成绩,C语言成绩,OC成绩
 * @围脖:皖西程序猿
 * @Email:walkman_28@163.com
 */
public class Student {
	
	private String name;
	
	private int age;
	
	private String number;
	
	private double javaLanguageScore;
	
	private double cLanguageScore;
	
	private double ocLanguageScore;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public double getJavaLanguageScore() {
		return javaLanguageScore;
	}

	public void setJavaLanguageScore(double javaLanguageScore) {
		this.javaLanguageScore = javaLanguageScore;
	}

	public double getcLanguageScore() {
		return cLanguageScore;
	}

	public void setcLanguageScore(double cLanguageScore) {
		this.cLanguageScore = cLanguageScore;
	}

	public double getOcLanguageScore() {
		return ocLanguageScore;
	}

	public void setOcLanguageScore(double ocLanguageScore) {
		this.ocLanguageScore = ocLanguageScore;
	}
	
	
}

第二步,在MYSQL中建立数据库

DROP TABLE IF EXISTS STUDENT;  
CREATE TABLE student (  
   name varchar(20) NOT NULL,  
   age int(3) NOT NULL,  
   num varchar(20) NOT NULL,  
   javaScore double(4,2) NOT NULL,
   cScore double(4,2) NOT NULL,
   ocScore double(4,2) NOT NULL,
  PRIMARY KEY (num)  
);
第三步,主函数

package com.yanzhen.september;

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.sql.*;

/**
 * 由控制台控制学生信息的输入,查询及保存的简单小系统。
 * @围脖:皖西程序猿
 * @Email:walkman_28@163.com
 */
public class StudentScoreQuery {
	
	private final static String TIP_MESSAGE = "学生成绩查询系统(新浪微博:皖西程序猿)";
	
	private final static String OPTION_ONE = "1 将学生信息录入数据库中";
	
	private final static String OPTION_TWO = "2 显示所有学生信息";
	
	private final static String OPTION_THREE = "3 根据学生学号查询该学生的总分";
	
	private final static String OPTION_FOUR = "4 导出所有学生的相关信息";
	
	private final static String OPTION_FIVE = "5 退出";
	
	// 数据库操作部分
	//驱动程序名
	private final static String driver = "com.mysql.jdbc.Driver";
	//URL指向要访问的数据库名mydata
	private final static String url = "jdbc:mysql://localhost:3306/student";
	//MySQL配置时的用户名
	private final static String user = "root";
	//MySQL配置时的密码
	private final static String password = "test";

	public static void main(String[] args) {
		// (1)控制台上显示主菜单信息
		// 1 将学生信息录入数据库中 2 显示所有学生信息 3 根据学生学号查询该学生的总分 4 导出所有学生的相关信息 5 退出
		System.out.print(TIP_MESSAGE + "\t\n");
		System.out.print(OPTION_ONE);
		System.out.print(OPTION_TWO);
		System.out.print(OPTION_THREE);
		System.out.print(OPTION_FOUR);
		System.out.print(OPTION_FIVE + "\n");
		
		// 判断输入的数字,决定操作
		Scanner scan = new Scanner(System.in);
		int inputNumber = scan.nextInt();
		
		if (inputNumber == 1) {
			// 具体功能实现:1 将学生信息录入数据库中
			Student stu = getScannerInputInformations();
			saveStudentInfomationsIntoDatabase(stu);
		} else if (inputNumber == 2 ) {
			// 具体功能实现:2 显示所有学生信息
			showAllStudentInformations();
		} else if (inputNumber == 3 ) {
			// 具体功能实现:3 根据学生学号查询该学生的总分
			String num = scan.next();
			System.out.println("总分为:" + getSumScoreByNumber(num));
		} else if (inputNumber == 4 ) {
			// 4 导出所有学生的相关信息
			writeAllStudentInformationIntoFile();
		} else if (inputNumber == 5 ) {
			// 具体功能实现:5 直接退出程序
			System.exit(0);
		}
	}
	
	// 由控制台输入信息并生成Student类
	public static Student getScannerInputInformations() {
		Student stu = new Student();
		// 1 接收姓名
		System.out.println("请输入姓名");
		Scanner scan = new  Scanner(System.in);
		String getScanName = scan.nextLine();
		
		// 2 接收年龄
		System.out.println("请输入年龄");
		scan = new  Scanner(System.in);
		int getScanAge = scan.nextInt();

		// 3 接收学号
		System.out.println("请输入学号");
		scan = new  Scanner(System.in);
		String getScanNumber = scan.nextLine();
		
		// 4 接收JAVA成绩
		System.out.println("请输入JAVA成绩");
		scan = new  Scanner(System.in);
		double getScanJavaLanuageScore = scan.nextDouble();
		
		// 5 接收C语言成绩
		System.out.println("请输入C语言成绩");
		scan = new  Scanner(System.in);
		double getScanCLanuageScore = scan.nextDouble();
		
		// 6  接收OC成绩
		System.out.println("请输入OC语言成绩");
		scan = new  Scanner(System.in);
		double getScanOCLanuageScore = scan.nextDouble();
		
		// 7 组合Student对象
		stu.setName(getScanName);
		stu.setAge(getScanAge);
		stu.setNumber(getScanNumber);
		stu.setJavaLanguageScore(getScanJavaLanuageScore);
		stu.setcLanguageScore(getScanCLanuageScore);;
		stu.setOcLanguageScore(getScanOCLanuageScore);
		
		return stu;
	}
	
	// 具体功能实现:1 将学生信息录入数据库中
	public static void saveStudentInfomationsIntoDatabase (Student stu) {
		//声明Connection对象
		Connection con;
		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "insert into student values(?,?,?,?,?,?) ";  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);  
			  
			 pst.setString(1, stu.getName());  
			 pst.setInt(2, stu.getAge());
			 pst.setString(3, stu.getNumber());
			 pst.setDouble(4, stu.getJavaLanguageScore());
			 pst.setDouble(5, stu.getcLanguageScore());
			 pst.setDouble(6, stu.getOcLanguageScore());
			 
			 pst.executeUpdate();  
			 
			 con.commit();
			 pst.close();  
			 con.close(); 
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}

	// 具体功能实现:2 显示所有学生信息
	public static void  showAllStudentInformations() {
		//声明Connection对象
		Connection con;

		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "select * from student ";  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			 ResultSet rs = pst.executeQuery(sql);  
			
			 // 3.遍历查找数据库中数据
			 
			 while(rs.next()) {
				 System.out.println(rs.getString(1) + "|" + rs.getInt(2) +"|"+rs.getString(3)
				 		+ rs.getDouble(4) + "|" + rs.getDouble(5) + "|" + rs.getDouble(6));
			 }
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}  
		
	}
	
	// 具体功能实现:3 根据学生学号查询该学生的总分
	public static double   getSumScoreByNumber(String num)	 {
		//声明Connection对象
		Connection con;
		double sumScore = 0.0;
		try {
			Class.forName(driver);
			//1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url,user,password);
			
			//2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);
			
			 String sql = "select * from student where num="+ num;  
			 PreparedStatement  pst = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			 ResultSet rs = pst.executeQuery(sql);  
			
			 // 3.遍历查找数据库中数据
			 while(rs.next()) {
				 sumScore = rs.getDouble(4) + rs.getDouble(5) + rs.getDouble(6);
			 }
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}  
		return sumScore;
	}
	
	// 具体功能实现:4 导出所有学生的相关信息存放到studentInfo.txt中
	public static void writeAllStudentInformationIntoFile() {
		//声明Connection对象
		Connection con;
		String infomationForFile = "";
		File file = new File("d:\\student.txt");
		try {
			Class.forName(driver);
			// 1.getConnection()方法,连接MySQL数据库
			con = DriverManager.getConnection(url, user, password);

			// 2.创建PreparedStatement类对象,用来执行SQL语句
			con.setAutoCommit(false);

			String sql = "select * from student ";
			PreparedStatement pst = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			ResultSet rs = pst.executeQuery(sql);

			// 3.遍历查找数据库中数据

			while (rs.next()) {
				String tempStr = (rs.getString(1) + "|" + rs.getInt(2) + "|" + rs.getString(3) + rs.getDouble(4) + "|"
						+ rs.getDouble(5) + "|" + rs.getDouble(6)) + "\n";
				infomationForFile = infomationForFile + tempStr;
			}
			
			PrintStream ps = new PrintStream(new FileOutputStream(file));
			ps.println(infomationForFile);
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
}


写的好详细,这样楼主要是不给分就太不应该了
今天晴 2016-09-06
  • 打赏
  • 举报
回复
三楼好牛逼啊,一看就应该上大四了不是上大一
小白白啊啊 2016-09-05
  • 打赏
  • 举报
回复
同楼上,自己写写。。出错了就把你写的代码贴出来,我们来帮你纠错
sean_0xiao 2016-09-03
  • 打赏
  • 举报
回复
不是一来就要代码吧!你可以自己先写,有问题再来问!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧