当前位置:文档之家› 课程信息管理系统

课程信息管理系统

package org.hxl.oracle.demo03;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;/** 课程信息管理系统,要求:* 1. 课程信息包括:Cno(课程号) ,Cname(课程名),period(课时数),term(上课学期), * property(课程性质)* 2.包括课程的增加,删除,修改* 查询(查询全部的课程信息,按关键字查询课程信息,按课程号查询课程信息)* 3.将所有的记录保存在oracle数据库中* *///vo类(与数据库中的一张表相对应,一个对象对应表中的一条记录,一个属性对应表中的一个字段)class Course implements Comparable<Course>{private int cno ; //课程号private String cname ; //课程名private int period ; //课时数private String term ; //上课学期private String property ; //课程性质public Course(){//无参构造函数}public Course(int cno,String cname,int period,String term,String property){o = cno ;ame = cname ;this.term = term ;this.period = period ;this.property = property ;}public void setCno(int cno){o = cno ;}public void setCname(String cname){ame = cname ;}public void setPeriod(int period){this.period = period ;}public void setTerm(String term){this.term = term ;}public void setProperty(String property){this.property = property ;}public int getCno(){return o ;}public String getCname(){return ame ;}public int getPeriod(){return this.period ;}public String getTerm(){return this.term ;}public String getProperty(){return this.property ;}@Overridepublic String toString(){return "课程号:" + this.getCno() + ",课程名:" + this.getCname() + ",课程的学时:" + this.getPeriod()+",上课学期:" + this.getTerm() + ",课程性质:" + this.getProperty();}@Overridepublic int compareTo(Course course) {if(o>o){return -1 ;}else if(o<o){return 1 ;}else{return 0 ;}}@Overridepublic int hashCode(){return o * super.hashCode() ;}@Overridepublic boolean equals(Object obj){if(obj==null){return false ;}if(this == obj){return true ;}if(!(obj instanceof Course)){return false ;}Course course = (Course)obj ;if(o==o){//课程号相同,则一定相同,课程号是唯一标识符return true ;}else{return false ;}}}//DatebaseConnection数据库连接与关闭class DatebaseConnection{//数据库驱动程序private final static String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;//数据库的连接地址private final static String DBURL = "jdbc:oracle:thin:@localhost:1521:MLDN" ;//数据库的用户名private final static String DBUER = "scott" ;//数据库的密码private final static String DBPASS = "tiger" ;//数据库的连接对象private Connection connection ;public DatebaseConnection() throws Exception{try{//1.加载驱动程序Class.forName(DBDRIVER) ;//2.建立数据库连接this.connection = DriverManager.getConnection(DBURL, DBUER, DBPASS) ;}catch(Exception e){throw e ; //将异常交给被调用处处理}}public Connection getConnection(){return this.connection ; //取得数据库连接对象的实例}public void close() throws Exception{try{if(this.connection!=null){ //关闭数据库连接对象this.connection.close() ;}}catch(Exception e){throw e ; //异常交给被调用处处理}}}interface ICourseDAO{/** 1.数据的增加操作,用于向数据库中添加一条课程记录* @param course:表示一个课程对象* @return boolean:是否添加成功* @throws Exception:异常交给被调用处处理* */public abstract boolean doCreate(Course course)throws Exception ;/** 2.数据的删除操作,用于删除数据库中的某条记录* @param cno:表示要删除的课程的课程号* @return boolean:删除是否成功* @throws Exception:异常交给被调用处处理* */public abstract boolean doRemove(int cno)throws Exception ;/** 3.数据的更新操作* @param cno:表示要更新的课程的课程号* @return boolean:更新是否成功* throws Exception:异常交给被调用处处理* */public abstract boolean doUpdate(int cno)throws Exception ;/** 4.查看数据库中的所有记录* @param void* @return List<Course>:将查询结果以链表的形式返回给被调用出* @throws Exception:异常交给被调用处处理* */public abstract List<Course> findAll()throws Exception ;/** 5.根据关键字查询* @param keyWord:查询的关键字* @return List<Course>:将查询的结果以链表的形式返回给被调用出* @throws Exception:异常交给被调用处处理* 函数的重载* */public abstract List<Course> findAll(String keyWord)throws Exception ;/** 6.根据课程号查询* @param cno:要查询的课程号* @return Course:将查询的结果返回给被调用处* @throws Exception:将异常抛出交给被调用处处理* */public abstract Course find(int cno)throws Exception ;/** 7.查询当前数据库中的记录数* @param void* @return int :将查询的记录数返回给调用处* @throws Exception:将异常抛出交给被调用处处理* */public abstract int getAllCount()throws Exception ;/** 8.得到根据关键字查询的记录数* @param keyWord:要查询的关键字* @return int : 将查询的记录数返回给被调用处* @throws Exception:将异常抛出交给被调用处处理* 函数的重载* */public abstract int getAllCount(String keyWord)throws Exception ;}//真是主题实现类,负责具体的操作class CourseDAOImpl implements ICourseDAO{private Connection conn ;private PreparedStatement pstmt ;public CourseDAOImpl(Connection conn){//接收外部的数据库连接对象完成数据库的连接this.conn = conn ;}@Overridepublic boolean doCreate(Course course) throws Exception {boolean flag = false ;String sql = "Insert into Course(Cno,Cname,period,term,property) Values(?,?,?,?,?)" ;this.pstmt = this.conn.prepareStatement(sql) ;this.pstmt.setInt(1, course.getCno()) ;this.pstmt.setString(2, course.getCname()) ;this.pstmt.setInt(3, course.getPeriod()) ;this.pstmt.setString(4, course.getTerm()) ;this.pstmt.setString(5, course.getProperty()) ;if(this.pstmt.executeUpdate()>0){flag = true ;}this.pstmt.close() ;return flag;}@Overridepublic boolean doRemove(int cno) throws Exception {boolean flag = false ;String sql = "Delete From Course Where Cno = ? " ;this.pstmt = this.conn.prepareStatement(sql) ;this.pstmt.setInt(1, cno) ;if(this.pstmt.executeUpdate()>0){flag = true ;}this.pstmt.close() ;return flag ;}@Overridepublic boolean doUpdate(int cno) throws Exception {boolean flag = false ;String sql = "Update Course Set Cname = ?,period = ?,term = ?,property = ? Where Cno = ?" ;this.pstmt = this.conn.prepareStatement(sql) ;System.out.println("输入你想要添加的课程的课程名:");String cname = new Scanner(System.in).next() ;System.out.println("输入你想要添加课程的学时:");int period = new Scanner(System.in).nextInt() ;System.out.println("输入你想要添加的课程的上课学期:");String term = new Scanner(System.in).next() ;System.out.println("请输入你想要添加的课程的课程性质:");String property = new Scanner(System.in).next() ;this.pstmt.setString(1, cname) ;this.pstmt.setInt(2, period) ;this.pstmt.setString(3, term) ;this.pstmt.setString(4, property) ;this.pstmt.setInt(5, cno) ;if(this.pstmt.executeUpdate()>0){flag = true ;}this.pstmt.close() ;return flag ;}@Overridepublic List<Course> findAll() throws Exception {List<Course> courses = new ArrayList<Course>() ;String sql = "Select Cno,Cname,period,term,property From Course" ;this.pstmt = this.conn.prepareStatement(sql) ;ResultSet rs = this.pstmt.executeQuery() ;while(rs.next()){Course course = new Course() ;course.setCno(rs.getInt(1)) ;course.setCname(rs.getString(2)) ;course.setPeriod(rs.getInt(3)) ;course.setTerm(rs.getString(4)) ;course.setProperty(rs.getString(5)) ;courses.add(course) ;}this.pstmt.close() ;return courses;}@Overridepublic List<Course> findAll(String keyWord) throws Exception {List<Course> courses = new ArrayList<Course>() ;String sql = "Select Cno,Cname,period,term,property From Course Where Cname like ?" +"OR term like ? OR property like ?" ;this.pstmt = this.conn.prepareStatement(sql) ;this.pstmt.setString(1, "%" + keyWord + "%") ;this.pstmt.setString(2, "%" + keyWord + "%") ;this.pstmt.setString(3, "%" + keyWord + "%") ;ResultSet rs = this.pstmt.executeQuery() ;while(rs.next()){Course course = new Course() ;course.setCno(rs.getInt(1)) ;course.setCname(rs.getString(2)) ;course.setPeriod(rs.getInt(3)) ;course.setTerm(rs.getString(4)) ;course.setProperty(rs.getString(5)) ;courses.add(course) ;}this.pstmt.close() ;return courses;}@Overridepublic Course find(int cno) throws Exception {Course course = new Course() ;String sql = "Select Cno,Cname,period,term,property From Course Where Cno = ?" ;this.pstmt = this.conn.prepareStatement(sql) ;this.pstmt.setInt(1, cno) ;ResultSet rs = this.pstmt.executeQuery() ;while(rs.next()){course.setCno(rs.getInt(1)) ;course.setCname(rs.getString(2)) ;course.setPeriod(rs.getInt(3)) ;course.setTerm(rs.getString(4)) ;course.setProperty(rs.getString(5)) ;}this.pstmt.close() ;return course ;}@Overridepublic int getAllCount() throws Exception {int count = 0 ;List<Course> courses = new ArrayList<Course>() ;String sql = "Select Cno,Cname,period,term,property From Course" ;this.pstmt = this.conn.prepareStatement(sql) ;ResultSet rs = this.pstmt.executeQuery() ;while(rs.next()){Course course = new Course() ;course.setCno(rs.getInt(1)) ;course.setCname(rs.getString(2)) ;course.setPeriod(rs.getInt(3)) ;course.setTerm(rs.getString(4)) ;course.setProperty(rs.getString(5)) ;courses.add(course) ;}count = courses.size() ;this.pstmt.close() ;return count;}@Overridepublic int getAllCount(String keyWord) throws Exception {int count = 0 ;List<Course> courses = new ArrayList<Course>() ;String sql = "Select Cno,Cname,period,term,property From Course Where Cname like ?" +"OR term like ? OR property like ?" ;this.pstmt = this.conn.prepareStatement(sql) ;this.pstmt.setString(1, "%" + keyWord + "%") ;this.pstmt.setString(2, "%" + keyWord + "%") ;this.pstmt.setString(3, "%" + keyWord + "%") ;ResultSet rs = this.pstmt.executeQuery() ;while(rs.next()){Course course = new Course() ;course.setCno(rs.getInt(1)) ;course.setCname(rs.getString(2)) ;course.setPeriod(rs.getInt(3)) ;course.setTerm(rs.getString(4)) ;course.setProperty(rs.getString(5)) ;courses.add(course) ;}count = courses.size() ;this.pstmt.close() ;return count ;}}//代理实现类,(帮助真是主题更好的完成操作,负责数据库的打开和关闭,并调用真实主题完成操作)class CourseDAOProxy implements ICourseDAO{private DatebaseConnection dbc = null ;private ICourseDAO dao ;public CourseDAOProxy() throws Exception{try {this.dbc = new DatebaseConnection() ;//为真实主体完成数据库的连接this.dao = new CourseDAOImpl(this.dbc.getConnection()) ;} catch (Exception e) {throw e ;}}public DatebaseConnection getDbc(){return this.dbc ;}@Overridepublic boolean doCreate(Course course) throws Exception {boolean flag = false ;try{if(this.dao.find(course.getCno()).getCname()==null){//要添加的课程号已经存在则不能添加//调用真是主题完成数据的增加操作flag = this.dao.doCreate(course) ;}}catch(Exception e){throw e ;}return flag ;}@Overridepublic boolean doRemove(int cno) throws Exception {boolean flag = false ;try{if(this.find(cno).getCname()!=null){ //要删除的课程的课程号存在,调用真实主题完成数据的删除操作flag = this.dao.doRemove(cno) ;}}catch(Exception e){throw e ;}return flag ;}@Overridepublic boolean doUpdate(int cno) throws Exception {boolean flag = false ;try{if(this.find(cno)!=null){//要更新的课程的课程好存在完成数据的更新操作flag = this.dao.doUpdate(cno) ;}}catch(Exception e){throw e ;}return flag ;}@Overridepublic List<Course> findAll() throws Exception {List<Course> courses = new ArrayList<Course>() ;try{courses = this.dao.findAll() ;}catch(Exception e){throw e ;}return courses;}@Overridepublic List<Course> findAll(String keyWord) throws Exception { List<Course> courses = new ArrayList<Course>() ;try{courses = this.dao.findAll(keyWord) ;}catch(Exception e){throw e ;}return courses;}@Overridepublic Course find(int cno) throws Exception {Course course = new Course() ;// Course course = null ;try{course = this.dao.find(cno) ;}catch(Exception e){throw e ;}return course;}@Overridepublic int getAllCount() throws Exception {int count = 0 ;try{count = this.dao.getAllCount() ;}catch(Exception e){throw e ;}return count;}@Overridepublic int getAllCount(String keyWord) throws Exception { int count = 0 ;try{count = this.dao.getAllCount(keyWord) ;}catch(Exception e){throw e ;}return count;}}//工厂类,解耦合class DAOFactory{//以接口为操作标注public static ICourseDAO getICourseDAOInstance() throws Exception{try{return new CourseDAOProxy() ;}catch(Exception e){throw e ;}}}//显示类,给出用户提示信息class Menu{public Menu(){//无参构造方法}public void disMenu(){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("[8].按关键字查询得到记录数");System.out.println("[0].退出系统");System.out.println("按提示操作");}public void selectMenu() throws Exception{int select = 1 ;System.out.println("请输入你想要的服务类型:");select = new Scanner(System.in).nextInt() ; ;switch(select){case 1: this.doCreate() ; break ;case 2: this.doDelete() ; break ;case 3: this.doUpdate() ; break ;case 4: this.find() ; break ;case 5: this.findAll() ; break ;case 6: this.findall() ; break ;case 7: this.getallCount() ; break ;case 8: this.getAllCount() ; break ;case 0:{//退出时关闭数据库连接try {new CourseDAOProxy().getDbc().close() ;} catch (Exception e) {throw e ;}System.exit(1) ;break ; //退出系统}default:System.out.println("请选择正确的操作"); break;}}public void doUpdate() throws Exception {System.out.println("请输入你想要更新的课程号:");int cno = new Scanner(System.in).nextInt() ;try {if(DAOFactory.getICourseDAOInstance().doUpdate(cno)){System.out.println("更新成功!!!");}else{System.out.println("更新失败!!!");}} catch (Exception e) {throw e ;}}public void getallCount() throws Exception{int count = 0 ;try {count = DAOFactory.getICourseDAOInstance().getAllCount() ;} catch (Exception e) {throw e ;}System.out.println("当前数据库中的记录数为:" + count);}public void getAllCount() throws Exception{System.out.println("请输入你想要查询的关键字:");String keyWord = new Scanner(System.in).next() ;int count = 0 ;try {count = DAOFactory.getICourseDAOInstance().getAllCount(keyWord) ;} catch (Exception e) {throw e ;}System.out.println("当前数据库中满足条件的记录数为:" + count);}public void findall() throws Exception {List<Course> courses = new ArrayList<Course>() ;try {courses = DAOFactory.getICourseDAOInstance().findAll() ;} catch (Exception e) {throw e ;}Iterator<Course> iter = courses.iterator() ;while(iter.hasNext()){System.out.println(iter.next().toString());}}public void findAll() throws Exception {System.out.println("请输入你想要查询的关键字:");String keyWord = new Scanner(System.in).next() ;List<Course> courses = new ArrayList<Course>() ;try {courses = DAOFactory.getICourseDAOInstance().findAll(keyWord) ;} catch (Exception e) {throw e ;}Iterator<Course> iter = courses.iterator() ;while(iter.hasNext()){System.out.println(iter.next().toString());}}public void find() throws Exception {System.out.println("请输入你想要查询的课程号:");int cno = new Scanner(System.in).nextInt() ;Course course = new Course() ;try {course = DAOFactory.getICourseDAOInstance().find(cno) ;} catch (Exception e) {throw e ;}System.out.println(course);}public void doDelete() throws Exception {System.out.println("请输入你想要删除的课程号:");int cno = new Scanner(System.in).nextInt() ;try {if(DAOFactory.getICourseDAOInstance().doRemove(cno)){System.out.println("删除成功!!!");}else{System.out.println("没能正确删除!!!");}} catch (Exception e) {throw e ;}}public void doCreate() throws Exception {System.out.println("输入你想要添加课程的课程号:");int cno = new Scanner(System.in).nextInt() ;System.out.println("输入你想要添加的课程的课程名:");String cname = new Scanner(System.in).next() ;System.out.println("输入你想要添加课程的学时:");int period = new Scanner(System.in).nextInt() ;System.out.println("输入你想要添加的课程的上课学期:");String term = new Scanner(System.in).next() ;System.out.println("请输入你想要添加的课程的课程性质:");String property = new Scanner(System.in).next() ;Course course = new Course() ;course.setCno(cno) ;course.setCname(cname) ;course.setPeriod(period) ;course.setTerm(term) ;course.setProperty(property) ;try{if(DAOFactory.getICourseDAOInstance().doCreate(course)){System.out.println("添加成功!!!");}else{System.out.println("添加失败!!!");}}catch(Exception e){throw e ;}}}public class SystemCourseDemo01 {public static void main(String[] args){Menu menu = new Menu() ;while(true){menu.disMenu() ;try {menu.selectMenu() ;} catch (Exception e) {e.printStackTrace();}}}}。

相关主题