📄 agendaservice.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package agendaservice1;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.sql.*;import java.util.Scanner;import java.text.DateFormat;import java.text.ParseException;public class Agendaservice { String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; String url = "jdbc:odbc:agenda"; //String user = ""; // String pwd = ""; Connection conn; Statement stmt; ResultSet rs; Agendaservice(){ } void connecte(){ //建立与数据库的连接 try{// 装载驱动 Class.forName(driver); } catch( ClassNotFoundException e ) { System.out.println( "加载数据库驱动时出错!" ); System.out.println( "错误信息:" + e.getMessage() ); } try { //建立连接 // conn = DriverManager.getConnection(url,user,pwd); conn = DriverManager.getConnection(url); stmt = conn.createStatement(); } catch (Exception e) { System.out.println(e); } /*try{ stmt = conn.createStatement(); } catch( SQLException e ) { System.out.println( "建立Statement时出错 !! " ); }*/ } void close(){//关闭与数据库的连接 try { //然后关闭查询操作 stmt.close(); //然后关闭链接 conn.close(); } catch( SQLException e ) { System.out.println( "数据库关闭出错 !!!" ); System.out.println( "错误信息: " + e.getMessage() ); } } void input(){ //命令行输入操作指令 String temp;//保存输入 int i=0;//保存命令参数 Scanner reader=new Scanner(System.in); while(true){//键盘输入一行非空命令,忽略用户未输入命令,而直接按回车的操作 System.out.print("$"); temp=reader.nextLine(); if(!temp.equals("")) break; } Scanner s=new Scanner(temp);//对输入命令进行处理,把参数存入command中 while(s.hasNext()) { command[i]=s.next(); if(command[i].equals(""))//忽略所有空格 continue; i++; } lenght=i; } void analyze() throws ParseException, SQLException//按照输入指令,执行相应操作 { if(command[0].equals("register")){ if(lenght==3) registerUser(); else System.out.println("输入命令参数有误"); } else if(command[0].equals("add")){ if(lenght==7) add(); else System.out.println("输入命令参数有误"); } else if(command[0].equals("query")){ if(lenght==5) query(); else System.out.println("输入命令参数有误"); } else if(command[0].equals("delete")){ if(lenght==4) delete(); else System.out.println("输入命令参数有误"); } else if(command[0].equals("clear")){ if(lenght==3) clearAll(); else System.out.println("输入命令参数有误"); } else if(command[0].equals("batch")){ if(lenght==2) batch(command[1]); else System.out.println("输入命令参数有误"); } else if(command[0].equals("quit")){ if(lenght==1) quit(); else System.out.println("输入命令参数有误"); } else { func=7; System.out.println("系统不支持此命令,请重新输入"); } } void registerUser() { //用户注册 connecte();//连接数据库 sql = "select * from person"; boolean exist=false; try{ rs = stmt.executeQuery( sql ); //从结果集中取出数据 while( rs.next() )//判断用户名是否已经存在,如果存在则提示错误并跳出注册操作 { String str=rs.getString("用户名"); if(str.equals(command[1])){ exist=true; break; } } } catch( SQLException e ) { System.out.println( "执行查询时出错 !! " ); System.out.println( "出错信息: " + e.getMessage() ); } if(exist){//提示用户名已经存在 System.out.println("该用户名已存在,请重新注册"); } else{//把用户名与密码添加进数据库 try{ stmt.executeUpdate("insert into person (用户名,密码) values ('"+command[1]+"','"+command[2]+"')"); rs=stmt.executeQuery("select * from person"); System.out.println("注册成功,请记住用户名与密码"); } catch(SQLException e){ System.out.println( "执行添加时出错 !! " ); System.out.println( "出错信息: " + e.getMessage() ); } } close(); } void add() throws ParseException{//添加会议 connecte(); String inStart=turnIntoDate(command[4]);//将输入的开始时间格式化 String inEnd=turnIntoDate(command[5]);//将输入的开始时间格式化 if(checkUserName()){//检测用户名与密码 boolean exit=false;//预约用户是否存在 boolean conflict=false; try {//确定存在预约用户 rs = stmt.executeQuery("select * from person"); while(rs.next()){ if(rs.getString("用户名").equals(command[3])){ exit=true; System.out.println("预约用户不存在"); return ; } } } catch (SQLException e) { System.out.println( "查询时出错 " ); System.out.println( "出错信息: " + e.getMessage() ); } try{//确定新建会议与之前的无冲突 rs=stmt.executeQuery("select * from meeting"); while(rs.next()){ if(rs.getString("创建者").equals(command[1])||rs.getString("预约用户").equals(command[3])){ if(rs.getString("会议标识").equals(command[6])){//新建会议与已有会议的标识是否冲突 conflict=true; System.out.println("已存在会议:"+command[6]); return; } else {//新建会议的参与者与之前会议无时间冲突 conflict = timeConflict(inStart, inEnd, rs.getString("开始时间"), rs.getString("结束时间")); if(conflict){ System.out.println("时间与会议"+rs.getString("会议标识")+"冲突"); return; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -