快递管理系统JavaI(连接数据库)

/*
	 * jdbc步骤
	 * 1、加载数据驱动
	 * 2、通过DriverManager获取数据库连接对象
	 * 3、通过Connection创建Statement对象1)creatStatement()基本创建2)prepareStatement(String sql)根据传入SQL语句创建预编译的Statement对象
	 * 4、使用Statement执行SQL语句1)execute可任何语句 比较麻烦2)executeUpdate()主要执行DML(受影响行数)、DDL语句(返回0)3)executeQuery只能执行查询语句,执行后返回代表查询的ResultSet对象
	 * 5、操作结果集,如果执行是查询语句,执行结果将返回一个Result对象,该对象保存sql语句查询结果
	 * 6、回收数据库资源
	 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.AttributedString;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.concurrent.CountDownLatch;
import java.util.jar.Attributes.Name;

import javax.management.loading.PrivateClassLoader;

public class Test {
    /*查询用Statement接口和executeQuery
     *修改用PreparedStatement子接口和executeUpdate
     */
	public static Connection mysqlConnection() throws SQLException{//抛出SQL类异常	 数据库连接方法
		final String url = "jdbc:mysql://localhost:3306/test_java?serverTimezone=GMT";//数据库url
		final Connection conn=DriverManager.getConnection(url, "root","ler210023");//DriverManager应用程序与数据库建立连接 尝试建立到给定的数据库url的连接
		return conn;}
	/*
	 * sql查询管理员名称是否已被注册
	 */
	public static boolean mysqlCheck1(String name) throws SQLException  {
		boolean flag=false;
		Connection conn=mysqlConnection();//调用方法 负责与特定的数据库连接
		Statement smt=null;//封装调用SQL语句对数据库进行访问的各类操作 提供执行SQL语句和获取数据库在执行完成后的返回结果
		smt=conn.createStatement();//coonnection方法创建一个 Statement 对象,封装 SQL 语句发送给数据库,通常用来执行不带参数的 SQL 语句。
		//mysql语句
		String sql="SELECT * FROM adminers";
		//将返回值传给rs
		ResultSet rs=smt.executeQuery(sql);//Statement的executeQuery()方法来下达select指令以查询数据库 返回一个ResultSet对象
		while(rs.next()) {//将光标从当前位置向前移动一行
			String name1=rs.getString("name");
			String password1=rs.getString("password");
			if(name1.equals(name)) {//输入正确
				return flag;//输入正确 返回false
			}
		}
		smt.close();
		rs.close();
		flag=true;
		return flag;//输入错误返回true
	}
	/*
	 * sql查询管理员 输入是否正确
	 */
	public static boolean mysqlCheck1(String name,String password) throws SQLException  {
		boolean flag=false;
		Connection conn=mysqlConnection();//调用方法
		Statement smt=null;
		smt=conn.createStatement();//创建一个 Statement 对象,封装 SQL 语句发送给数据库,通常用来执行不带参数的 SQL 语句
		//mysql语句
		String sql="SELECT * FROM adminers";
		ResultSet rs=smt.executeQuery(sql);//executeQuery()方法来下达select指令以查询数据库
		while(rs.next()) {
			String name1=rs.getString("name");
			String password1=rs.getString("password");
			if(name1.equals(name)&&password1.equals(password)) {//输入都正确
				return flag;//输入正确 返回false
			}
		}
		smt.close();
		rs.close();
		flag=true;
		return flag;//输入错误返回true
	}
	
	/*
	 * sql插入注册管理员
	 */
	public static void mysqlInsert1(String name,String password) throws SQLException {//抛出SQL类异常

		//连接数据库
		Connection conn=mysqlConnection();
		//PreparedStatement继承Statement prepareStatement对象防止sql注入的方式是把用户非法输入的单引号用\反斜杠做了转义,从而达到了防止sql注入的目的,安全性高
		//可执行带参数的SQL语句,用?代替,其后对其进行赋值
		PreparedStatement smt=null;
		//判断单号是否已被使用		
		String sql="insert into adminers(name,password)values(?,?)";//?会被作为参数传入
		smt=conn.prepareStatement(sql);//SQL 语句被预编译并存储在 PreparedStatement 对象中。
		smt.setString(1, name);//将指定的参数设置为给定参数的值
		smt.setString(2, password);

		int result=smt.executeUpdate();//executeUpdate()是PreparedStatement对象众多的抽象方法中的一个 返回受影响的记录条数 返回值为int
		if(result==1) {//判断插入数据成功
			System.out.println("注册成功!");
		}
		else {
			System.out.println("注册失败!");
		}
		smt.close();//关闭资源,释放内存
	}
	/*
	 * 注册管理员
	 */
	public static void add1() throws SQLException{
		Scanner input=new Scanner(System.in);
		System.out.println("请输入名字:");
		String name=input.next();
		System.out.println("请输入密码:");
		String password=input.next();
		boolean flag=mysqlCheck1(name);//检索名字是否被使用
		if(flag==false) {//重复 返回flase 
			System.out.println("你已注册,请登陆");
		}
		else{
			mysqlInsert1(name,password);
	}}

	/*
	 * sql查询用户名称是否已被注册
	 */
	public static boolean mysqlCheck2(String name) throws SQLException  {
		boolean flag=false;
		Connection conn=mysqlConnection();
		Statement smt=null;
		smt=conn.createStatement();
		//mysql语句
		String sql="SELECT * FROM users";
		//将返回值传给rs
		ResultSet rs=smt.executeQuery(sql);
		while(rs.next()) {
			String name1=rs.getString("name");
			if(name1.equals(name)) {//输入重复
				return flag;//返回false
			}
		}
		flag=true;
		return flag;//为重复返回true
	}
	/*
	 * sql查询用户输入是否正确
	 */
	public static boolean mysqlCheck2(String name,String password) throws SQLException  {
		boolean flag=false;
		Connection conn=mysqlConnection();
		Statement smt=null;
		smt=conn.createStatement();
		//mysql语句
		String sql="SELECT * FROM users";
		ResultSet rs=smt.executeQuery(sql);
		while(rs.next()) {
			String name2=rs.getString("name");
			String password2=rs.getString("password");
			if(name2.equals(name)&&password2.equals(password)) {//检索输入是否正确
				return flag;//输入正确返回false
			}
		}
		flag=true;
		return flag;//输入错误返回true
	}
	/*
	 * sql插入注册用户
	 */
	public static void mysqlInsert2(String name,String password) throws SQLException {//抛出SQL类异常
		Connection conn=mysqlConnection();
		PreparedStatement smt=null;
		String sql="insert into users(name,password)values(?,?)";//?会被作为参数传入
		smt=conn.prepareStatement(sql);
		smt.setString(1, name);//设置
		smt.setString(2, password);

		int result=smt.executeUpdate();//executeUpdate()是PreparedStatement对象众多的抽象方法中的一个 返回受影响的记录条数 返回值为1或0
		if(result==1) {//判断插入数据成功
			System.out.println("注册成功!");
		}
		else {
			System.out.println("注册失败!");
		}
		smt.close();//关闭资源,释放内存
	}


	/*
	 * 注册用户
	 */
	public static void add2() throws SQLException{
		Scanner input=new Scanner(System.in);
		System.out.println("请输入名字:");
		String name=input.next();
		System.out.println("请输入密码:");
		String password=input.next();
		boolean flag=mysqlCheck2(name);//调用方法 检索名字是否被使用
		if(flag==false) {//重复 返回flase 
			System.out.println("你已注册,请登陆");
		}
		else{
			mysqlInsert2(name,password);
	}
	}
	/*
	 * 查询快递表检索快递单号是否被使用
	 */
	public static boolean mysqlCheck(String number) throws SQLException  {
		boolean flag=false;
		Connection conn=mysqlConnection();
		Statement smt=null;
		smt=conn.createStatement();
		//mysql语句
		String sql="SELECT * FROM express";
		ResultSet rs=smt.executeQuery(sql);
		while(rs.next()) {
			String number1=rs.getString("number");
			if(number1.equals(number)) {//比较查询的单号与输入的单号判断单号是否已被使用
				flag=true;
				return flag;//已被使用返回true
			}
		}
		return flag;//未被使用返回flag
	}
	/*
	 * sql输入快递信息
	 */
	public static void mysqlInsert(String number,String a_date,String t_date,String K_name) throws SQLException {//抛出SQL类异常
		boolean flag=mysqlCheck(number);//调用方法 判断是否单号被使用
		if(flag) {//真,则已被使用
			System.out.println("该单号已被使用");
		}
		//未被使用
		else {
		Connection conn=mysqlConnection();
		//表示一条预编译过的 SQL 语句
		PreparedStatement smt=null;	
		String sql="insert into express(number,a_date,t_date,k_name)values(?,?,?,?)";//?会被作为参数传入
		smt=conn.prepareStatement(sql);
		smt.setString(1, number);//对参数进行设置
		smt.setString(2, a_date);
		smt.setString(3, t_date);
		smt.setString(4, K_name);
		int result=smt.executeUpdate();
		if(result==1) {//判断插入数据成功
			System.out.println("分配快递成功");
		}
		else {
			System.out.println("分配快递失败");
		}
		smt.close();//关闭资源,释放内存
	}
	}
	/*
	 * 添加快递信息
	 */
	public static void add() throws SQLException{
		Scanner input=new Scanner(System.in);
		while(true) {
		System.out.println("温馨提示:输入任意数字表示添加快递,0为不添加");
		if(input.nextInt()==0) {
			break;
		}
		else {	
		System.out.println("请输入快递单号:");
		String number=input.next();
		System.out.println("请输入快递到达时间:");
		String a_date=input.next();
		System.out.println("请输入快递提取时间:");
		String t_date=input.next();
		System.out.println("请输入快递的所属人的名称:");
		String k_name=input.next();
		mysqlInsert(number, a_date, t_date, k_name);
	}}}
	/*
	 * 查询所有快递
	 */
	public static void mysqlShow() throws SQLException {
		Connection conn=mysqlConnection();
		Statement smt=null;
		smt=conn.createStatement();
		String sql="SELECT * FROM express";
		ResultSet rs=smt.executeQuery(sql);
		//循环输出快递信息
		while(rs.next()) {
			System.out.println("单号:"+rs.getString("number")+"到达日期:"+rs.getString("a_date")+"提取日期"+rs.getString("t_date")+"姓名:"+rs.getString("k_name"));
		}
		rs.close();
		smt.close();
	}
	/*
	 * sql更新快递信息
	 */
	public static void mysqlUpdate(String number1,String number,String a_date,String t_date,String k_name) throws SQLException {
		Connection conn=mysqlConnection();
		PreparedStatement smt=null;
		String sql="update express set number=?,a_date=?,t_date=?,k_name=? where number=?";//?会被作为参数传入
		smt=conn.prepareStatement(sql);
		smt.setString(1, number);//输入修改信息
		smt.setString(2, a_date);
		smt.setString(3, t_date);
		smt.setString(4, k_name);
		smt.setString(5, number1);//原单号
		int result=smt.executeUpdate();
		if(result==1) {//判断插入数据成功
			System.out.println("快递修改成功");
		}
		else {
			System.out.println("快递修改失败");
		}
		smt.close();
	}

	/*
	 * 修改快递信息
	 */
	public static void alter() throws SQLException {
		Scanner input=new Scanner(System.in);
		System.out.println("请输入要修改的快递单号:");//原单号
		String number1=input.next();
		System.out.println("请输入新的快递单号:");//新单号
		String number=input.next();
		System.out.println("请输入快递到达时间:");
		String a_date=input.next();
		System.out.println("请输入快递提取时间:");
		String t_date=input.next();
		System.out.println("请输入快递的所属人的名称:");
		String k_name=input.next();
		mysqlUpdate(number1,number, a_date, t_date, k_name);//调用更新方法
	}
	/*
	 * sql中查看自己的快递
	 */
	public static void sqlFind(String name) throws SQLException {
		Connection conn=mysqlConnection();
		Statement smt=null;
		smt=conn.createStatement();
		String sql="SELECT * FROM express";
		ResultSet rs=smt.executeQuery(sql);
		//循环输出快递信息
		int  count=0;
		while(rs.next()) {
			String k_name=rs.getString("k_name");
			if(k_name.equals(name)) {
				System.out.println("请及时取件");
				System.out.println("单号:"+rs.getString("number")+"到达日期:"+rs.getString("a_date")+"提取日期"+rs.getString("t_date")+"姓名:"+rs.getString("k_name"));
				count++;
			}	
		}
		if(count==0) {
			System.out.println("暂无你的快递");
		}
		smt.close();
		rs.close();
		}
	/*
	 * 查询快递
	 */
	public static void findName() throws SQLException {
		Scanner input=new Scanner(System.in);
		System.out.println("请输入你的姓名");
		String name=input.next();
		sqlFind(name);
	}
	/*
	 * sql中删除自己的快递
	 */
	public static void sqlDelete(String number) throws SQLException {
		Connection conn=mysqlConnection();
		PreparedStatement smt=null;
		String sql="delete from express where number=?";//?会被作为参数传入
		smt=conn.prepareStatement(sql);
		smt.setString(1, number);
		int result=smt.executeUpdate();//对于CREATETABLE或DROPTABLE等不操作行的语句,executeUpdate的返回值总为零
		if(result!=0) {
			System.out.println("取件成功!");
		}
		else {
			System.out.println("取件失败!");
		}
		smt.close();
	}
	/*
	 * 领取快递
	 */
	public static void takeAway() throws SQLException {
		Scanner input=new Scanner(System.in);
		System.out.println("请输入你的快递单号");
		String number=input.next();
		sqlDelete(number);
	}
	
	
	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		/*
		 * 驱动
		 */
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (Exception e) {
			e.printStackTrace();//打印输出异常
		}
		Scanner input=new Scanner(System.in);
		Views v=new Views();
		//欢迎
		v.welcome();
		while(true) {
			//主菜单
			int menu=v.menu();
			switch (menu) {
			case 0://退出
				System.out.println("欢迎下次光临!");
				return;
			case 1://注册管理员
				add1();
				break;
				
			case 2://注册普通用户
				add2();
				break;
			case 3://管理员登陆
				System.out.println("登陆请输入姓名:");
				String n1=input.nextLine();
				System.out.println("请输入密码:");
				String p1=input.nextLine();
				boolean flag1=mysqlCheck1(n1,p1);//检索是否输入正确
				if(flag1) {//输入错误 返回true
					System.out.println("输入错误");
					break;
				}
				//输入正确
				else {
					System.out.println("登陆成功");
				while(true) {
					int gmenu=v.gMenu();
					switch(gmenu) {
					case 0://退出
						return;
					case 1://分配快递
						add();
						break;
					case 2://查看所有快递
						System.out.println("所有快递如下:");
						mysqlShow();
						break;
					case 3://修改快递
						alter();
						break;}
					if(gmenu==4)//返回上一步
						break;}
				}
				break;
			case 4://普通用户登录
				System.out.println("登陆请输入姓名:");
				String n2=input.nextLine();
				System.out.println("请输入密码:");
				String p2=input.nextLine();
				boolean flag2=mysqlCheck2(n2,p2);
				if(flag2) {//真,即输入错误
					System.out.println("输入错误");
					break;
				}
				//输入正确
				else{
					System.out.println("登陆成功");
				while(true) {
				int pmenu=v.pMenu();
				switch(pmenu) {
				case 0://退出
					return;
				case 1://查看快递
					findName();
					break;	
				case 2://取走快递
					takeAway();
					break;}
				if(pmenu==3)//返回上一步
					break;}
				}
				break;
			}



		}
}}	

/*
	 * 管理员菜单
	 */
	public int gMenu() {
		System.out.println("------你好,管理员-------");
		System.out.println("1.快递分配");
		System.out.println("2.查看所有快递");
		System.out.println("3.修改快递信息");
		System.out.println("4.返回上一步");
		System.out.println("0.退出");
		System.out.println("---------------------");
		System.out.println("请根据提示,选择业务");
		int c=input.nextInt();
		if(c<0||c>4) {//输入异常
			System.out.println("输入异常,请重新输入");
			return gMenu();
		}
		return c;
	}
	/*
	 * 用户菜单
	 */
	public int pMenu() {
		System.out.println("------你好,用户员-------");
		System.out.println("请根据提示,输入功能序号");
		System.out.println("1.查看有否有快递");
		System.out.println("2.取走快递");
		System.out.println("3.返回上一步");
		System.out.println("0.退出");
		System.out.println("---------------------");
		int c=input.nextInt();
		if(c<0||c>3) {//输入异常
			System.out.println("输入异常,请重新输入");
			return pMenu();
		}
		return c;
	}

}

附数据库
在这里插入图片描述

CREATE TABLE `adminers` (
  `name` varchar(10) NOT NULL COMMENT 'name',
  `password` varchar(10) DEFAULT NULL COMMENT 'password',
  PRIMARY KEY (`name`)
)
CREATE TABLE `express` (
  `number` varchar(10) NOT NULL COMMENT 'number',
  `a_date` varchar(10) DEFAULT NULL COMMENT 'a_date',
  `t_date` varchar(10) DEFAULT NULL COMMENT 't_date',
  `k_name` varchar(10) DEFAULT NULL COMMENT 'k_name',
  PRIMARY KEY (`number`)
) 

CREATE TABLE `users` (
  `name` varchar(10) NOT NULL COMMENT 'name',
  `password` varchar(10) DEFAULT NULL COMMENT 'password',
  PRIMARY KEY (`name`)
) 
  • 4
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
JAVA, JSP, SSM, JQUERY, JQUERY EASYUI, MYSQL, HTML, CSS, JAVASCRIPT ⑴角色管理:系统通过角色管理对不同角色进行权限分配,实现不同角色的用户登录系统拥有不同的权限功能。系统分为超级管理员、订单管理员、车辆管理员。新注册用户登录系统没有任何操作权限,因为新注册用户没有被分配角色,这需要超级管理员给新用户分配相应角色使该用户拥有该角色的权限。同时超级管理员可进行新角色的创建,删除已有角色,修改角色功能。 ⑵用户管理:拥有用户信息管理权限的用户登录后可创建新用户,修改用户信息(密码、联系方式、邮箱等),删除用户,为用户分配角色。但用户列表中不会有超级管理员信息,因为超级管理员信息在系统中不应出现不能被修改,防止误操作。 ⑶配货管理:配货管理模块中分为发货管理、车源路线管理、订单管理子模块。发货管理,用户可进行订单的创建,系统自动生产15位的订单号(不可修改),用户填写下单人,下单人联系方式,下单人地址,下单日期,并添加此订单需要运送的货物,保存生成订单。同时可进行订单的修改,批量删除,按订单号查询操作。车源路线管理,用户可选择为还未分配运送车辆的订单分配运送车辆,指定行车路线。车辆处于维修状态的不出现在选择列表中,车辆载重小于货物总重量时通过消息提醒用户重新选择。订单确认,当运送完成时,用户可进行订单确认,确认该订单已完成。 ⑷车辆管理:车辆管理模块中分为车辆类型管理、车辆信息管理、行车路线管理子模块。车辆类型管理,用户可创建新的车辆类型,修改车辆类型信息,删除某种车辆类型,当系统中存在车辆属于该类型,则无法删除同时提醒用户。车辆信息管理,用户对车辆信息进行创建、修改、删除操作。行车路线管理,用户可创建新的行车路线,修改路线信息,删除已有的行车路线。 ⑸货物仓储管理:该模块主要实现库存分类管理、库存信息管理。库存分类管理,用户可创建新的货物类别,修改删除该货物类别或为该类别添加字类别,删除时库存中有属于该类别的商品则无法删除,系统给出提示消息。库存信息管理,用户可创建新的库存货物,为货物分配所属类型,修改库存信息,删除该货物,但删除是逻辑删除,不是物理删除,货物的状态栏显示该商品已被删除。同时提供分页以及按商品名称查询功能。 ⑹数据汇总统计:该模块实现按月度、季度或年度统计各路线的盈利或运货量情况,用户可选择以柱状图或饼图的方式显示。用户可依据统计结构来调整路线及车辆以获得最大化收益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值