火车购票系统

前提,要安装数据库

import java.sql.*;

import java.util.Scanner; 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class T3{
     public static void main(String []args)
  {   
      while(true){
try{
          String sql; 
 Scanner figure=new Scanner(System.in);
  Scanner letter=new Scanner(System.in);
         String username="sa";
String userpassword="123456";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://localhost:1433;DatabaseName=kang";
Connection conn=DriverManager.getConnection(url,username,userpassword);  //连接数据库操作 ,连接了才能进行以下功能  
Statement stmt=conn.createStatement();
Statement stmt1=conn.createStatement();
Statement stmt2=conn.createStatement();
Statement stmt3=conn.createStatement();//便于后面的resultSet的嵌套操作使用
/*
sql="create table train (tno char(4),state char(8) ,finish char(8),statetime datetime,finishtime datetime,ballot int,cprice money )";  //在数据库中创建一个train表语句
         stmt.executeUpdate(sql);
sql="create table consumer (cname char(6),cpassword char(6),csex char(2),chome char(12),ctelephon char(12));";
stmt.executeUpdate(sql);
    sql="create table tc (cname char(6),tno char(4),cballot int,price money);" ;
stmt.executeUpdate(sql);*/
System.out.println("----------身份验证--------");
System.out.println();
        System.out.println("       (1)管理员");
        System.out.println("       (2)用户  ");
System.out.println("       (3)退出  ");
        System.out.println("-----------------------");
System.out.print("请选择:");
         int choice=figure.nextInt();
switch(choice){
case 1:
   boolean wo=true;
 while(wo){
 System.out.println("---------管理员菜单目录-----------");
 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("        (6)返回上一页          ");
              System.out.println("----------------------------------");
     System.out.print("亲,你的要操作的序号:");
 int choice2=figure.nextInt();
 switch(choice2)
 {
 case 1://添加列车信息  
     sql="insert into train(tno,state,finish,statetime,finishtime,ballot,cprice) values(?,?,?,?,?,?,?)";//进行数据插入
     PreparedStatement ps=conn.prepareStatement(sql);
     System.out.println("列车的型号:");
     String y=letter.nextLine();
     System.out.println("起点:");
     String y1=letter.nextLine();
 System.out.println("终点:");
 String y2=letter.nextLine();
 System.out.println("出发时间(yyyy-MM-dd HH:MM:ss格式):");
 String y3=letter.nextLine();
 System.out.println("到达时间(yyyy-MM-dd HH:MM:ss格式):");
 String y4=letter.nextLine();  
 System.out.println("票数:");
 String y5=letter.nextLine();
 System.out.println("价格:");
 String y6=letter.nextLine();
              ps.setString(1,y);
     ps.setString(2,y1);
 ps.setString(3,y2);
 ps.setString(4,y3);
 ps.setString(5,y4);
 ps.setString(6,y5);
 ps.setString(7,y6);
     ps.executeUpdate();
 System.out.println("******添加信息成功******");
     break;
        case 2://打印列车信息 
sql="select * from train";
ResultSet rs=stmt.executeQuery(sql);

while(rs.next()){
String s1=rs.getString("tno");
String s2=rs.getString("state");
String s3=rs.getString("finish");
String s4=rs.getString("statetime");
String s5=rs.getString("finishtime");
String s6=rs.getString("ballot");
String s7=rs.getString("cprice");
    System.out.println("列车名 起点     终点     出发时间              到达时间              票数 价格");
System.out.println(s1+"   "+s2+" "+s3+" "+s4+" "+s5+" "+s6+"   "+s7);
}
 
 break;
    case 3://删除列车信息
System.out.print("请输入你要删除的列车名:");
String Tno=letter.nextLine();
sql="delete from train where tno='"+Tno+"'";
stmt.executeUpdate(sql);
System.out.println("******成功删除!!!******:");
break;
case 4://修改列车信息 
       System.out.println("请写出你要修改信息的列车名:");
String rt=letter.nextLine();
       System.out.println("---------类别名列表----------");
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("6.票数");
System.out.println("7.单价");
System.out.println("-----------------------------");
System.out.print("请选择你要修改的类名:");
int choice3=figure.nextInt();
   System.out.print("请写出你要修改后的数据:");
   String revise=letter.nextLine();
switch(choice3){
     case 1:
             sql="update train set tno='"+revise+"' where tno='"+rt+"'";
 stmt.executeUpdate(sql); break;
 case 2: sql="update train set state='"+revise+"' where tno='"+rt+"'";
 stmt.executeUpdate(sql);break;
 case 3: sql="update train set finish='"+revise+"' where tno='"+rt+"'";
 stmt.executeUpdate(sql);break;
 case 4: sql="update train set statetime='"+revise+"' where tno='"+rt+"'";
 stmt.executeUpdate(sql);break;
 case 5: sql="update train set finishtime='"+revise+"' where tno='"+rt+"'";
 stmt.executeUpdate(sql);break;
 case 6: sql="update train set ballot='"+revise+"' where tno='"+rt+"'";
 stmt.executeUpdate(sql);break;
 case 7: sql="update train set cprice='"+revise+"' where tno='"+rt+"'";
 stmt.executeUpdate(sql);break;
 default:System.out.println("******对不起,没有该选项!!!******");


}
    sql="select * from train where tno='"+rt+"'";
  ResultSet ts=stmt.executeQuery(sql);
  while(ts.next()){
  String t1=ts.getString("tno");
  String t2=ts.getString("state");
  String t3=ts.getString("finish");
  String t4=ts.getString("statetime");
  String t5=ts.getString("finishtime");
  String t6=ts.getString("ballot");
                  String t7=ts.getString("cprice");
  System.out.println("******修改信息成功!!!******");
  System.out.println();
  System.out.println(t1+" "+t2+" "+t3+" "+t4+" "+t5+" "+t6+" "+t7);
  }
break;
case 5://查询注册用户信息 
       sql="select * from consumer";
        ResultSet cselect=stmt.executeQuery(sql);
while(cselect.next()){
String cs1=cselect.getString("cname");
String cs2=cselect.getString("cpassword");
String cs3=cselect.getString("csex");
String cs4=cselect.getString("chome");
String cs5=cselect.getString("ctelephon");
System.out.println();
  System.out.println(cs1+" "+cs2+" "+cs3+" "+cs4+" "+cs5);
}break;
case 6:wo=false;break;
default:System.out.println("******对不起,没有该操作!!!******");
}
 }break;
case 2:boolean wo1=true;
      while(wo1){
       System.out.println("---------用户界面菜单-----------");
       System.out.println();
System.out.println("        (1)注册新用户");
System.out.println("        (2)登陆");
System.out.println("        (3)忘记密码");
System.out.println("        (4)返回上一页");
System.out.println("--------------------------------");
System.out.print("请选择:");
int choice4=figure.nextInt();
switch(choice4){
case 1://注册新用户
      System.out.println("请输入注册的用户名:");
      String cn=letter.nextLine();
      System.out.println("请输入注册的密码:");
  String cp=letter.nextLine();
  System.out.println("请输入性别:");
  String cs=letter.nextLine();
  System.out.println("请输入所在的省份:");
  String ch=letter.nextLine();
  System.out.println("请输入电话号码:");
  String ct=letter.nextLine();
  sql="insert into consumer(cname,cpassword,csex,chome,ctelephon) values(?,?,?,?,?)";//进行数据插入
                      PreparedStatement c=conn.prepareStatement(sql);
   c.setString(1,cn);
                                c.setString(2,cp);
                   c.setString(3,cs);
                   c.setString(4,ch);
                   c.setString(5,ct);
                       c.executeUpdate();
                  System.out.println("******用户注册成功******");
  break;
case 2://登陆
      boolean entry=true;
      System.out.println("请输入用户名:");
      String lcn=letter.nextLine();
      System.out.println("请输入密码:");
  String lcp=letter.nextLine();
  sql="select * from consumer where cname='"+lcn+"' and cpassword='"+lcp+"'";
  ResultSet cse=stmt.executeQuery(sql);  
  while(cse.next()){  
  String c1=cse.getString("cname");
  String c3=cse.getString("csex");
  String c4=cse.getString("chome");
  String c5=cse.getString("ctelephon");
  System.out.println("-----------用户登录成功-------------");
   System.out.println();
  System.out.println("姓名:"+c1);
  System.out.println("性别:"+c3);
  System.out.println("家庭住址:"+c4);
  System.out.println("电话号码:"+c5);
  entry=false;
  }
 if(entry){System.out.println("******密码错误!!!请重新输入!!!******");}
 else
 {
 boolean choose1=true;
  while(choose1){
  System.out.println("---------用户操作界面-----------");
                  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.print("请选择:");
               int choice5=figure.nextInt();
               switch(choice5){
case 1://已购买的票
      boolean chance=true;
      sql="select tc.tno,state,finish,statetime,finishtime,cballot,price from tc,train where tc.tno=train.tno ";
  ResultSet stc=stmt.executeQuery(sql);
  while(stc.next()){
  String stc1=stc.getString("tno");
  String stc2=stc.getString("state");
  String stc3=stc.getString("finish");
  String stc4=stc.getString("statetime");
  String stc5=stc.getString("finishtime");
  String stc6=stc.getString("cballot");
  String stc7=stc.getString("price");
  System.out.println();
                                      System.out.println("列车名 起点     终点     出发时间              到达时间              票数 价格");
                  System.out.println(stc1+"   "+stc2+" "+stc3+" "+stc4+" "+stc5+"  "+stc6+"   "+stc7);
  chance=false;
  }
  System.out.println("******你还没有购买车票******");


break;
case 2://购票
      boolean buy_chance=true;
      System.out.println("请输入你要购票的列车名:");
  String buy=letter.nextLine();
  sql="select cprice from train where tno='"+buy+"'";
  ResultSet sbtc=stmt.executeQuery(sql);
  while(sbtc.next()){//在while(sbtc.next())里面定义的变量只能在里面使用
  String sbtc1=sbtc.getString("cprice");
  
  System.out.println("请输入你要购票的票数:");
  int buy1=figure.nextInt();
  sql="select ballot from train where tno='"+buy+"'";
  ResultSet b=stmt1.executeQuery(sql);//多设了个stmt1,防止结果集关闭
  while(b.next()){
  int b1=b.getInt("ballot");
  int b2=b1-buy1;
  if(b2<0){ System.out.println("******对不起,票已经售空了******"); }
  else
                                                   {
                                                   sql="update train set ballot='"+b2+"' where tno='"+buy+"'";
                                                           stmt2.executeUpdate(sql);//多设了个stmt2,防止结果集关闭
  sql="select cballot from tc where tno='"+buy+"'";
ResultSet stno=stmt2.executeQuery(sql);
        while(stno.next()){
int stno1=stno.getInt("cballot");
int stno2=stno1+buy1;
sql="update tc set cballot='"+stno2+"' where tno='"+buy+"'";
stmt3.executeUpdate(sql);
buy_chance=false;
}  
if(buy_chance){
  sql="insert into tc(cname,tno,cballot,price) values(?,?,?,?) ";
  PreparedStatement btc=conn.prepareStatement(sql);
  btc.setString(1,lcp);
  btc.setString(2,buy);
  btc.setInt(3,buy1);
  btc.setString(4,sbtc1);
  btc.executeUpdate();
}
  System.out.println("******购票成功******");
  }
  }
  }
   break;
case 3: //查询列车信息
                System.out.println("请输入起点:");
        String sp=letter.nextLine();
         System.out.println("请输入终点:");
 String fp=letter.nextLine();
 System.out.println("请输入出发日期(yyyy-MM-dd格式):");
         String x=letter.nextLine();
 System.out.println("--------------------");
 System.out.println("       (1)按时间排序");
 System.out.println("       (2)按价格排序");
 System.out.println("--------------------");
 int choice6=figure.nextInt();
 switch(choice6){
case 1:sql="select * from train where state='"+sp+"' and finish='"+fp+"' and datediff(day,statetime,'"+x+"')=0 order by statetime";
                   break;
case 2:sql="select * from train where state='"+sp+"' and finish='"+fp+"' and datediff(day,statetime,'"+x+"')=0 order by cprice";
       break;
     default:System.out.println("******对不起,没有该操作!!!******");
 }
 ResultSet spd=stmt.executeQuery(sql);
 while(spd.next()){
 String spd1=spd.getString("tno");
 String spd2=spd.getString("state");
                                             String spd3=spd.getString("finish");
                                             String spd4=spd.getString("statetime");
                                             String spd5=spd.getString("finishtime");
                                             String spd6=spd.getString("ballot");
                                             String spd7=spd.getString("cprice");
 System.out.println("列车名 起点     终点     出发时间              到达时间              票数 价格");
 System.out.println(spd1+"   "+spd2+" "+spd3+" "+spd4+" "+spd5+"  "+spd6+"   "+spd7);
               }
break;
case 4://退票
        boolean return_chance=true;
        System.out.println("请输入你要退票的列车名:");
String return_tno=letter.nextLine();
System.out.println("请输入你要退票的票数: ");
int return_ballot=figure.nextInt();
sql="select cballot from tc where tno='"+return_tno+"'";
ResultSet return_s=stmt.executeQuery(sql);
while(return_s.next()){
int return_s1=return_s.getInt("cballot");
int return_s2=return_s1-return_ballot;
if(return_s2<0){System.out.println("******你没有购买那么多数量的票******");}
else{
if(return_s2==0){
sql="delete from tc where tno='"+return_tno+"'";
stmt1.executeUpdate(sql);
}
else{
sql="update tc set cballot='"+return_s2+"' where tno='"+return_tno+"'"; 
stmt1.executeUpdate(sql);
}
sql="select ballot from train where tno='"+return_tno+"'";
 ResultSet return_ib=stmt1.executeQuery(sql);
 while(return_ib.next()){
 int return_ib1=return_ib.getInt("ballot");
 int return_ib2=return_ib1+return_ballot;
 sql="update train set ballot='"+return_ib2+"' where tno='"+return_tno+"'";
 stmt2.executeUpdate(sql);
 }
System.out.println("******退票成功******");
}
return_chance=false;
 
}
if(return_chance){System.out.println("******你没有购买该列车票******");}
 
break;
case 5:choose1=false;break;
}
  }
 }
  break;
case 3: //忘记密码
       boolean choose=true;
       System.out.println("请输入你的用户名:");
       String revisename=letter.nextLine();
       System.out.println("请输入你的电话号码:");
String revisetelephone=letter.nextLine();
sql="select * from consumer where cname='"+revisename+"' and ctelephon='"+revisetelephone+"'";
ResultSet rse=stmt.executeQuery(sql);
while(rse.next()){
System.out.println("******验证成功******");
choose=false;
}
if(choose){System.out.println("******用户名和电话号码不对应,验证失败******");}
else{
System.out.println("请输入密码:");
       String rpassword=letter.nextLine();
sql="update consumer set cpassword='"+rpassword+"' where cname='"+revisename+"' and ctelephon='"+revisetelephone+"'";
stmt.executeUpdate(sql);
System.out.println("******密码设置成功******");
}
break;
   case 4:wo1=false;break;
default:System.out.println("******对不起,没有该操作!!!******");
}
  }
      break;
case 3:return;
    default:System.out.println("对不起,没有该操作!!!!");


 }
            conn.close();
            stmt.close();
 
}

    catch(Exception e){                                                                                              
           e.printStackTrace();                                                                                                                                              
  }   
 }
  }
}

猜你喜欢

转载自blog.csdn.net/xdkprosperous/article/details/53907765