Java+MySQL面向过程初级编程实战项目——无界面学生信息管理系统

Java+MySQL面向过程初级编程实战项目——无界面学生信息管理系统

  • 今天刚做完课程设计,通过Eclipse+SQLyog完成本次课设,小白一枚,第一次写这种技术博客,对本次课设来做一个小小的总结。

涉及到的技术参考链接汇总:

  • Java连接MySQL数据库——含详细步骤和代码,参考链接:https://www.cnblogs.com/town123/p/8336244.html
  • MySQL——Java 访问 MySQL 数据库 参考链接:https://blog.csdn.net/qq_41573234/article/details/80618303
  • Java 中的resultset详解 参考链接:https://www.cnblogs.com/cai662009/p/8046407.html

设计思路

Java+MySQL面向过程初级编程实战项目——无界面学生信息管理系统_第1张图片

Java完整代码

``
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class Student {
	//声明变量 用来保存数据库中的数据
	int sid;
	String sname;
	int sage;
	String smajor;
	//程序的主入口
	public static void main(String[] args) {
		//数据的url 用户名 密码
				String url="jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf-8";//本地ip:127.0.0.1;Mysql:3306;student库
				String username="root";//数据库默认用户名root
				String password="MYSQL";//mysql数据库密码
				//加载数据库驱动 使用java的反射原理
				try {
					Class.forName("com.mysql.jdbc.Driver");
				}catch (ClassNotFoundException e) {
					// TODO: handle exception
					e.printStackTrace();
				}
				Connection conn=null;//定义连接
		//解决操作者使用键盘输入为对应选择的问题
		//使用文本扫描
		Scanner input = new Scanner(System.in);
		boolean bool=true;//控制第一层循环节点
		while(bool) {
			System.out.println("=====欢迎来到**学院学员信息管理系统=====");
			System.out.println("*************请选择具体操作**************\n*\t\t1:登录\t\t\t*\n*\t\t2:注册\t\t\t*\n*\t\t3:退出\t\t\t*\n*\t\t其他:请重新选择\t\t*");
			System.out.println("*****************************************");
			System.out.println("请选择具体操作:");
			//使用文本扫描器,获取键盘输入的数据
			int innum=input.nextInt();//获取键盘输入的数字
			//根据选择执行不同操作
			switch (innum) {
			case 1:
				System.out.println("输入登录账号");
				//登录,用户名,密码为字符串
				//使用文本扫描器获取键盘输入的字符串 使用字符串类型的变量来保存
				System.out.println("请输入用户名");
				String user=input.next();
				System.out.println("请输入密码");
				String pass=input.next();
				/*判断输入用户名和密码是否正确 
				 * 将输入的用户名和密码放入user表中进行匹配
				 *  如果可以查到代表用户名正确*/
				String boolName=null;
					try {
						conn = DriverManager.getConnection(url, username, password);
						String sql="select * from user where username=? and password=md5(?)";//md5用来加密,数据库user表中password值为加密后的值
						PreparedStatement ps=conn.prepareStatement(sql);//
						ps.setString(1,user);
						ps.setString(2,pass);
						ResultSet rt =ps.executeQuery();//ResultSet:结果集
						//使用变量类检测是否查到对应的信息
						while (rt.next()) {
								boolName=rt.getString("username");	
							}
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					if(boolName==null) {
						System.out.println("你的用户名和密码不存在");
					}else {
						//在当前位置进行stu表的增删改查操作的循环
						boolean bool2=true;
						while(bool2) {
							System.out.println("========请选择你对学生信息执行什么样的操作=======");
							System.out.println("*		1、查看所有学生信息		*");
							System.out.println("*		2、通过学号修改信息		*");
							System.out.println("*		3、通过学号删除信息		*");
							System.out.println("*		4、增加一个学生信息		*");
							System.out.println("*		5、返回上级登录界面		*");
							System.out.println("*		'输入任意值退出程序'		*");
							System.out.println("=================================================");
							//使用文本扫描器获取管理员的选择(数字)
							int StuCaoZao=input.nextInt();
							switch (StuCaoZao) {
							case 1:
								System.out.println("1、查看所有学生信息");
								//连接数据库 将所有学生信息查询到,并输出到控制台
								//创建一个数组来保存数据库中的所有数据 以对象的形式保存
								Student[] stuArr=new Student[10];
								try {
									//查询数据库中所有数据的语句
									String sql="select * from stu";
									//预编译
									PreparedStatement ps= conn.prepareStatement(sql);
									//执行 之后获得结果集 结果集理解为容器
									ResultSet rt=ps.executeQuery();
									//遍历结果集中的数据
									System.out.println("编号"+"\t\t姓名"+"\t\t年龄"+"\t\t专业");
									while(rt.next()) {//蓄奴化一次表示有一行数据
										//循环获取数据库中的每一行数据中的每一个字段的值
										//每一次当得数据库中的一行有效数据 创建一个student对象来保存
										Student stu=new Student();
										stu.sid=rt.getInt("sid");
										stu.sname=rt.getString("sname");
										stu.sage=rt.getInt("sage");
										stu.smajor=rt.getString("smajor");
										//得到一行输出一行数据
						System.out.println(stu.sid+"\t\t"+stu.sname+"\t\t"+stu.sage+"\t\t"+stu.smajor);
									}
									ps.close();
									}catch (Exception e) {
									// TODO: handle exception
									e.printStackTrace();
									};
								break;
							case 2:
								System.out.println("2、根据学生学号修改学生姓名");
								System.out.println("请输入要修改学生的学号:");
								int sid=input.nextInt();
								System.out.println("请修改学生姓名:");
								String sname=input.next();
								try {
									//sql语句 
									String sql="UPDATE stu SET sname=?  WHERE sid=?";
									//预编译
									PreparedStatement ps= conn.prepareStatement(sql);
									//对占位符赋值
									ps.setString(1,sname);
									ps.setInt(2, sid);
									//获取执行结果
									int num=ps.executeUpdate();
									ps.close();
									if (num>0) {
										System.out.println("数据修改成功");	
									}else {
										System.out.println("数据修改失败");
									}
								}catch (Exception e) {
									// TODO: handle exception
									e.printStackTrace();
								};
								break;
							case 3:
								System.out.println("3、根据学生学号删除学生信息");
								System.out.println("删除该学生信息的学生学号:");
								int dsid=input.nextInt();
								try {
									//sql语句
									String sql="DELETE FROM stu WHERE sid=?";
									//预编译
									PreparedStatement ps= conn.prepareStatement(sql);
									//对占位符赋值
									ps.setInt(1,dsid);
									//获取执行结果
									int num=ps.executeUpdate();
									ps.close();
									if (num>0) {
										System.out.println("数据删除成功");	
									}else {
										System.out.println("数据删除失败");
									}
								}catch (Exception e) {
									// TODO: handle exception
									e.printStackTrace();
								};
								break;
							case 4:
								System.out.println("4、增加学生信息");
								System.out.println("请输入学生姓名:");
								String isname=input.next();
								System.out.println("请输入学生年龄:");
								int isage=input.nextInt();
								System.out.println("请输入学生专业:");
								String ismajor=input.next();
								try {
									//sql语句
									String sql="INSERT INTO stu(sname,sage,smajor) VALUES(?,?,?)";
									//预编译
									PreparedStatement ps= conn.prepareStatement(sql);
									//给占位符赋值
									ps.setString(1,isname);
									ps.setInt(2, isage);
									ps.setString(3, ismajor);
									//获取执行结果
									int num=ps.executeUpdate();
									ps.close();
									if (num>0) {
										System.out.println("数据添加成功");	
									}else {
										System.out.println("数据添加失败");
									}
								}catch (Exception e) {
									// TODO: handle exception
									e.printStackTrace();
								};
								break;
							case 5:
								System.out.println("返回上一级首页");
								//此处是返回到登录页面
								bool2=false;
								break;
							default:
								System.out.println("退出程序,欢迎下次使用");
								bool2=false;
								bool=false;
								break;
							}//switch
						}//while
					}//else
				break;
			case 2:
				System.out.println("请进行注册");
				System.out.println("请输入你注册的用户名:");
				String userName=input.next();
				System.out.println("请输入你注册的密码:");
				String userPass=input.next();
				//通过给user表增加数据来注册
				try {
					conn = DriverManager.getConnection(url, username, password);
					String sql="insert into  user(username,password) values(?,md5(?))";
					PreparedStatement ps=conn.prepareStatement(sql);
					ps.setString(1,userName);
					ps.setString(2,userPass);
					int insertUserNum=ps.executeUpdate();
					if (insertUserNum>0) {
						System.out.println("用户新增成功");	
					}else {
						System.out.println("用户新增失败");
					}
				}  catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				break;
			case 3:
				System.out.println("退出程序,欢迎下次使用");
				bool=false;
				break;
			default:
				System.out.println("输入错误,请重新选择");
				break;
			}//switch
		}//while
	}//main
}//class Student

数据库创建

  • 利用SQLyog创建database:student
  • 在student库下创建两张表:stu,user
  • sql语句:
#如果数据库存在就删除
DROP DATABASE IF EXISTS  stu ;
#创建数据库  stu   字符编码默认utf-8
CREATE DATABASE IF NOT EXISTS  stu DEFAULT CHARSET utf8;
USE stu;
#创建数据库中的表  user  和student 
#user 表中有UID字段 username  password字符(密码使用md5加密函数进行加密)
CREATE TABLE USER(
 uid INT AUTO_INCREMENT PRIMARY KEY ,
 username VARCHAR(30) NOT NULL,
 PASSWORD VARCHAR(100)
 ); 
#创建stu表  字段有  sid  sname  sage   smajor
CREATE TABLE student(
 sid INT AUTO_INCREMENT PRIMARY KEY ,
 NAME VARCHAR(20) NOT NULL,
 age INT  ,
 major VARCHAR(50)
 );  
#给user表中添加数据 用户名为admin  密码为123456 密码需要加密
INSERT INTO USER(username,PASSWORD) VALUES('admin',MD5('123456'));
#给student表添加数据
INSERT INTO student(NAME,age,sex,major) 
VALUES('张三',18,'男','计算机科学'),
('李四',20,'女','网络工程'),
('王五',22,'男','数学');
  • 创建后如图所示:
    Java+MySQL面向过程初级编程实战项目——无界面学生信息管理系统_第2张图片
    数据库中的stu表:数据库中的stu表
    数据库中的user表:Java+MySQL面向过程初级编程实战项目——无界面学生信息管理系统_第3张图片

你可能感兴趣的:(Java+MySQL面向过程初级编程实战项目——无界面学生信息管理系统)