数据库大作业--1.0设计总结

2020-11-25 数据库系统概论 软件工程实验报告 数据库设计与应用开发大作业数据库系统概论实验目的实验器材实验内容1.USE StudentMIS2.学生信息查询页面:3.授课信息查询页面:4.选课信息查询页面:5.任课教师查询页面:6.班级课程查询页面:在学生信息管理系统——教学模块的开发过程中,需要实现以下数据统计页面:1、班级人数统计页面:2、学生成绩统计页面:3、创建选课统计页面需要的视图:实验步骤: 实验目的 1.学会建立数据库的一般思路 2.深入的学习掌握数据库设计的各项过程和要求 3.熟练掌握SQL语句 阅读详情

大二下因为有一门专业必修课为数据库原理,于是在完成了该课程要求的大作业之后,重新审视一遍当初的设计思路,并进行一些总结。

开发环境

系统:Windows10(64位)家庭版
数据库:Mysql
开发语言及工具:Java,采用IDEA进行开发(IDEA本身具有优秀的集成环境和丰富的插件)。对于UI部分采用了IDEA的可视化UI开发插件——JFormDesigner

大作业要求及最终成品的功能描述

会议室预定及租借管理系统

该系统主要针对会议室租借管理而设计的方案,该方案包括了会议室的信息管理、预约与取消预约和设备管理系统。

数据库系统的业务描述
用户:管理员 普通用户
主要功能:
1、会议室借还
2、设备更新与维护
3、费用统计
系统边界或限制:
普通用户:
浏览会议室的预约情况与设备、人数
预定与取消预订(仅限本用户的订单)
登记预定信息
上报设备状况
付款
管理员:
浏览和修改会议室状态、设备与人数
预定与取消预订(所有的订单)
收取用户缴费并修改用户待缴费用

界面设计:
界面设计
本程序具有一定的缺陷,与实际的应用场景还存在着差距。但我个人认为能够在仅有的5天时间内从零开始搭建一个完整的应用程序,已经十分不易。这次大作业也是对我的一次锻练,在没有任何知识的情况下初步学习了数据库应用的一些简单结构和设计方式。对于后来在假期中的重构工作有非常大的帮助。

程序设计思路

简单来讲,数据库应用程序的核心在于:用户的UI界面所获取和修改的信息,如何与真正的后台的数据库进行交互。当前业界流行的BS设计架构,主要是把用户的操作限制在web网页端,因此程序通常由“web前端”和“server后端”组成。由于我们在当初开发时并没有任何的web编程基础,因此我们放弃了BS架构这个主流架构。但我们同时学习了这种分层的思想,在程序内部进行了“DB层——Service层——GUI层”的分层划分。

DB层:
负责数据库的连接、sql语句的传入与结果集的返还。

Service层:
负责实现程序的各种业务逻辑,并且初步处理数据库返还的结果集。

GUI层:
负责提供可视化界面,读取用户各种信息,将Service层初步处理的结果集进行进一步处理并呈现。

具体的项目结构如下,其中dal是DB层。Service层里,Appointment、Meetingroom、Requirement和User是简单的bean类,提供getter和setter方法;dao则是我们在程序层面实现的用户群体划分,Cuser是普通用户,仅拥有一些比较有限的读写权限,而Admin为管理员,拥有较为完整的读写权限。
特别的,Cuser和Admin其实是实现具体的业务操作的class,不同的读写权限对应不同的业务操作。从DBUtil传来的ResultSet也在这两个类的方法里实现了解析和格式转换,并且这些处理好的数据集将继续传给GUI层用以呈现。

在这里插入图片描述

具体代码实现

在第一次开发这个大作业的时候,我们组二人通过查阅资料后,决定采用JDBC来连接数据库并进行Mysql语句的操作。主要采用到Mysql-connector和Java.mysql的jdk包。

以下是DB层的代码,所有的sql语句都会以String类型的一个字符串传入这层,并将得到的查询结果以ResultSet返回给上层。

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.Connection;//连接数据库
import java.sql.DriverManager;//驱动管理
import java.sql.ResultSet;//结果集返还
import java.sql.SQLException;//异常处理
import java.sql.Statement;//输入并执行sql语句
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author Al Zhao
 */
public class DBUtil {

    static final String driver = "com.mysql.cj.jdbc.Driver";
    static final String URL = "jdbc:mysql://localhost:3306/roommanage?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai";
    //上面url为连接数据库,需根据具体情况来修改。
    private static Connection con = null;
    private static Statement smt = null;
    private static ResultSet rs = null;
    //定义一些连接参数,用作连接数据库、执行语句和返还结果。

    private static Connection createConnection() {    //建立连接,url为上面已经确定的数据库。
        try {

            Class.forName(driver);
            return DriverManager.getConnection(URL, "root", "123456");
        }
        //异常处理
        catch (SQLException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();//自动抛错
        } catch (java.lang.ClassNotFoundException e) {
            System.out.println("Can't load Driver");
        }
        return null;
    }


    public static int runUpdate(String sql) throws SQLException {//传入了一个string的sql语句,用作smt的执行
        int count = 0;
        if (con == null) {
            con = createConnection();
        }
        if (smt == null) {
            smt = con.createStatement();//connection创建statement对象,将smt实体化
        }

        count = smt.executeUpdate(sql);
/*方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,
  例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE语句的效果是修改表中零行或多行中的一列或多列。
  executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
*/
        if (smt != null) {
            smt.close();
            smt = null;
        }
        if (con != null) {
            con.close();
            con = null;
        }//释放对象空间
        return count;//这里会返还受影响的记录行数
    }

    //执行sql语句
    public static ResultSet runQuery(String sql) throws SQLException {
        if (con == null) {
            con = createConnection();
        }
        if (smt == null) {
            smt = con.createStatement();
        }
        return smt.executeQuery(sql);//执行单个sql语句,如select之类的
    }

    //释放所有对象空间
    public static void realeaseAll() {
        if (rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (smt != null) {
            try {
                smt.close();
                smt = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con != null) {
            try {
                con.close();
                con = null;
            } catch (SQLException ex) {
                Logger.getLogger(DBUtil.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    //关闭连接
    public static void closeConnection(Connection conn) {
        System.out.println("...");
        try {
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

以下为Service层中的两个daoimpl的类,其中包含了主要的业务逻辑和具体操作,实现了封装sql语句和resultset结果集的解析和处理。

AdminImpl

import Service.Appointment;
import Service.Users;
import Service.dao.Admin;
import dal.DBUtil;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Adminimpl extends Users implements Admin {

    public Adminimpl() {
    }

    public Adminimpl(String uno, String uname, String phone, String mail, String password) {
        super(uno, uname, phone, mail, password);
    }

    public Adminimpl(String uno, String password) {
        super(uno, password);
    }

    @Override
    public boolean logIn() {
        String select = "select * from user where UNO='"+getUno()+"'and PW='"+getPassword()+"'and IDENTITY='admin';";
        boolean isCorrect;
        isCorrect = false;
        try{
            ResultSet rs = DBUtil.runQuery(select);
            if(rs!=null){
                isCorrect=rs.next();
                DBUtil.realeaseAll();
            }
        }catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return isCorrect;
    }

    @Override
    public void logOut() {
        DBUtil.realeaseAll();
    }

    @Override
    public Vector[] getAllmeetingroom() {
        String select = "select * from room;";
        Vector[] Data = new Vector[2];
        Vector data = new Vector();
        Vector colNames = new Vector();
        colNames.add("会议室号");
        colNames.add("设备状态");
        colNames.add("会议室状态");
        colNames.add("会议室位置");
        try {
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()){
                Vector row = new Vector();
                row.add(rs.getString("RNO"));
                row.add(rs.getInt("RESTD"));
                row.add(rs.getInt("RSTA"));
                row.add(rs.getString("ROA"));
                data.add(row);
            }
            DBUtil.realeaseAll();
            Data[0] = data;
            Data[1] = colNames;
            return Data;
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return null;
    }

    @Override
    public boolean setMeetingroomstd(String Rno, int std) {
        String update="update room set RSTA="+std+" where RNO='"+Rno+"';";
        try{
            DBUtil.runUpdate(update);
            return true;
        }catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public Vector[] getAppointmentbydate(String date) {
        String select = "select * from appointment where DATE='"+date+"';";
        Vector[] Data = new Vector[2];
        Vector data = new Vector();
        Vector colNames = new Vector();
        colNames.add("预约号");
        colNames.add("用户号");
        colNames.add("会议室号");
        colNames.add("开始时间");
        colNames.add("结束时间");
        colNames.add("日期");
        try{
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()){
                Vector row = new Vector();
                row.add(rs.getInt("ANO"));
                row.add(rs.getString("UNO"));
                row.add(rs.getString("RNO"));
                row.add(rs.getTime("STIME"));
                row.add(rs.getTime("ETIME"));
                row.add(rs.getDate("DATE"));
                data.add(row);
            }
            DBUtil.realeaseAll();
            Data[0] = data;
            Data[1] = colNames;
            return Data;
        } catch (SQLException se){
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return null;
    }

    @Override
    public boolean addAppointment(Appointment appointment) {
        String insert = "insert into appointment(UNO,RNO,STIME,ETIME,DATE) values('"
                +getUno()+"','"+appointment.getRno()+"','"+appointment.getStartTime()+"','"
                +appointment.getEndTime()+"','"+appointment.getDate()+"');";
        try{
            DBUtil.runUpdate(insert);
            return true;
        }catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public boolean removeAppointment(Appointment appointment) {
        int hours;
        int pri=0;
        int money;
        hours = countTime(appointment.getStartTime(),appointment.getEndTime());
        String delete = "delete from appointment where ANO="+appointment.getAno()+";";
        try{
            DBUtil.runUpdate(delete);
            ResultSet rs = DBUtil.runQuery("select RPRI from room where RNO = '"+appointment.getRno()+"';");
            while (rs.next()){
                pri = rs.getInt("RPRI");
            }
            DBUtil.realeaseAll();
            money = hours*pri;
            DBUtil.runUpdate("update user set MONY=MONY-"+money+" where UNO = '"+appointment.getUno()+"';");
            return true;
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public boolean setEqupmentstd(String Pno, int std) {
        String update = "update device set DAMAGE="+std+" where PNO='"+Pno+"';";
        try {
            DBUtil.runUpdate(update);
            return true;
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public boolean setUsermoney(String Uno, int ammount) {
        String update = "update user set MONY=MONY-"+ammount+" where UNO='"+Uno+"';";
        try {
            DBUtil.runUpdate(update);
            return true;
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public boolean setMeetingroomEqup(String Rno, int std) {
        String update = "update room set RESTD = "+std+" where RNO = '"+Rno+"';";
        try {
            DBUtil.runUpdate(update);
            return true;
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public boolean changePw() {
        String update="update user set PW='"+getPassword()+"' where UNO='"
                +getUno() +"';";
        try{
            DBUtil.runUpdate(update);
            return true;
        }catch (SQLException se){
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public Vector[] getAllEqupment() {
        String select = "select * from device;";
        Vector[] Data = new Vector[2];
        Vector data = new Vector();
        Vector colNames = new Vector();
        colNames.add("设备编号");
        colNames.add("会议室号");
        colNames.add("设备名字");
        colNames.add("损坏情况");
        try {
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()) {
                Vector row = new Vector();
                row.add(rs.getString("PNO"));
                row.add(rs.getString("RNO"));
                row.add(rs.getString("PNAME"));
                row.add(rs.getInt("DAMAGE"));
                data.add(row);
            }
            DBUtil.realeaseAll();
            Data[0] = data;
            Data[1] = colNames;
            return Data;
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return new Vector[0];
    }

    @Override
    public int showUsermonye(String Uno) {
        int money=0;
        String select = "select MONY from user where UNO='"+Uno+"';";
        try{
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()){
                money = rs.getInt("MONY");
            }
            DBUtil.realeaseAll();
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return money;
    }
}

CuserImpl

package Service.daoimpl;
import Service.*;
import Service.dao.Cuser;
import dal.DBUtil;

import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
import java.util.logging.*;

public class Cuserimpl extends Users implements Cuser {

    public Cuserimpl() {
    }

    public Cuserimpl(String uno, String uname, String phone, String mail, String password) {
        super(uno, uname, phone, mail, password);
    }

    public Cuserimpl(String uno, String password) {
        super(uno, password);
    }

    @Override
    public boolean signIn(){
        String insert = "insert into user values('"+getUno()+"','"+getUname()+"','"
                +getPhone()+"','"+getMail()+"','user','"
                +getPassword()+"',"+getMoney()+");";
        try{
            DBUtil.runUpdate(insert);
            return true;
        }catch (SQLException se){
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }
    //实现注册

    @Override
    public boolean logIn() {
        String select = "select * from user where UNO='"+getUno()+"'and PW='"+getPassword()+"';";
        boolean isCorrect = false;
        try{
            ResultSet rs = DBUtil.runQuery(select);
            if(rs!=null){
                isCorrect=rs.next();
                DBUtil.realeaseAll();
            }
        } catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return isCorrect;
    }

    @Override
    public void logOut() {

    }

    @Override
    public Vector[] select(Requirement requirement) {
        String select = "select room.*,DATE,STIME,ETIME from room left join appointment on room.RNO=appointment.RNO where RSTA=1";
        if(requirement.dateValid) {
            select = select.concat(" and DATE ='"+requirement.date+"'");
        }
        if(requirement.haveProjector) {
            select = select.concat(" and HPJT=1");
        }
        if(requirement.haveComputer) {
            select = select.concat(" and HCMP=1");
        }
        if(requirement.haveAudio) {
            select = select.concat(" and HADO=1");
        }
        if(requirement.maxPoeplenumValid) {
            select = select.concat(" and RCA="+requirement.maxPeoplenum);
        }
        if(requirement.pricePerhourValid) {
            select = select.concat(" and RPRI="+requirement.pricePerhour);
        }
        select = select.concat(";");
        Vector[] Data;
        Data = new Vector[2];
        Vector data = new Vector();
        Vector colNames = new Vector();
        colNames.add("会议室号");
        colNames.add("会议室位置");
        colNames.add("承担人数");
        colNames.add("价格");
        colNames.add("日期");
        colNames.add("预约开始时间");
        colNames.add("预约结束时间");
        try {
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()){
                Vector row = new Vector();
                row.add(rs.getString("RNO"));
                row.add(rs.getString("ROA"));
                row.add(rs.getInt("RCA"));
                row.add(rs.getInt("RPRI"));
                row.add(rs.getString("DATE"));
                row.add(rs.getString("STIME"));
                row.add(rs.getString("ETIME"));
                data.add(row);
            }
            DBUtil.realeaseAll();
            Data[0] = data;
            Data[1] = colNames;
            return Data;
        } catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return null;
    }

    @Override
    public boolean changePw() {
        //传进来的user是给Password赋值了的,Uno也是赋值了的。
        String update="update user set PW='"+getPassword()+"' where UNO='"
                +getUno() +"';";
        try{
            DBUtil.runUpdate(update);
            return true;
        }catch (SQLException se){
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public Vector[] getAllmeetingroom() {
        String select = "select * from room where RSTA = 1;";
        Vector[] Data = new Vector[2];
        Vector data = new Vector();
        Vector colNames = new Vector();
        colNames.add("会议室号");
        colNames.add("设备状态");
        colNames.add("会议室价格");
        colNames.add("会议室位置");
        colNames.add("是否有投影仪");
        colNames.add("是否有电脑");
        colNames.add("是否有音响");
        try {
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()){
                Vector row = new Vector();
                row.add(rs.getString("RNO"));
                row.add(rs.getInt("RESTD"));
                row.add(rs.getInt("RPRI"));
                row.add(rs.getString("ROA"));
                row.add(rs.getString("HPJT"));
                row.add(rs.getString("HCMP"));
                row.add(rs.getString("HADO"));
                data.add(row);
            }
            DBUtil.realeaseAll();
            Data[0] = data;
            Data[1] = colNames;
            return Data;
        } catch (SQLException se) {
            Logger.getLogger(Adminimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return null;
    }

    @Override
    public boolean book(Appointment appointment) {
        if(!isBooked(appointment.getRno(),appointment.getStartTime(),appointment.getEndTime(),appointment.getDate())) {
            String insert = "insert into appointment(UNO,RNO,STIME,ETIME,DATE) values ('"
                    +getUno()+"','"+appointment.getRno()+"','"+appointment.getStartTime()+"','"
                    +appointment.getEndTime()+"','"+appointment.getDate()+"');";
            int hours;
            int pri=0;
            int money;
            try{
                DBUtil.runUpdate(insert);
                hours = countTime(appointment.getStartTime(),appointment.getEndTime());
                ResultSet rs = DBUtil.runQuery("select RPRI from room where RNO = '"+appointment.getRno()+"';");
                while (rs.next()){
                    pri = rs.getInt("RPRI");
                }
                DBUtil.realeaseAll();
                System.out.println(hours);
                money = hours*pri;
                System.out.println(money);
                DBUtil.runUpdate("update user set MONY=MONY+"+money+" where UNO = '"+getUno()+"';");
                return true;
            } catch (SQLException se){
                Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
            }
        }
        return false;
    }




    @Override
    public Vector[] showApp() {
        String select = "select * from appointment where UNO='"+getUno()+"';";
        Vector[] Data = new Vector[2];
        Vector colNames = new Vector();
        colNames.add("预约号");
        colNames.add("工号");
        colNames.add("会议室号");
        colNames.add("开始时间");
        colNames.add("结束时间");
        colNames.add("日期");
        Vector data = new Vector();
        try{
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()) {
                Vector row = new Vector();
                row.add(rs.getInt("ANO"));
                row.add(rs.getString("UNO"));
                row.add(rs.getString("RNO"));
                row.add(rs.getTime("STIME").toString());
                row.add(rs.getTime("ETIME").toString());
                row.add(rs.getDate("DATE").toString());
                data.add(row);
            }
            DBUtil.realeaseAll();
            Data[0]=data;
            Data[1]=colNames;
            return Data;
        } catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return null;
    }

    @Override
    public boolean cancel(Appointment appointment) {
        int hours;
        int pri=0;
        int money;
        hours = countTime(appointment.getStartTime(),appointment.getEndTime());
        String delete = "delete from appointment where ANO=" + appointment.getAno() + " and UNO='" + getUno() + "';";
        try {
            DBUtil.runUpdate(delete);
            ResultSet rs = DBUtil.runQuery("select RPRI from room where RNO = '"+appointment.getRno()+"';");
            while (rs.next()){
                pri = rs.getInt("RPRI");
            }
            DBUtil.realeaseAll();
            money = hours*pri;
            DBUtil.runUpdate("update user set MONY=MONY-"+money+" where UNO = '"+appointment.getUno()+"';");
            return true;
        } catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }

    @Override
    public boolean report(Meetingroom meetingroom) {
        String update = "update room set RESTD=1 where RNO='"+meetingroom.getRno()+"';";
        try {
            int count;
            count = DBUtil.runUpdate(update);
            if(count>0)
                return true;
            else
                return false;
        } catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return false;
    }


    private boolean isBooked (String Rno, String stime, String etime, String date) {
        boolean isbooked = false;
        Date Stime = new Date();
        Date Etime = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        try{
            Stime = sdf.parse(stime);
            Etime = sdf.parse(etime);
        } catch (ParseException pe) {

        }
        Time s = new Time(Stime.getTime());
        Time e = new Time(Etime.getTime());
        System.out.println("s:"+s);
        System.out.println("e:"+e);
        String select = "select STIME, ETIME from appointment where RNO='"+Rno+"' and DATE = '"+date+"';";
        try {
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()){
                Time S = rs.getTime("STIME");
                Time E = rs.getTime("ETIME");
                if(!(s.after(E) || e.before(S))){
                    isbooked = true;
                }
            }
        } catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return isbooked;
    }


    @Override
    public int showMoney() {
        int money=0;
        String select = "select MONY from user where UNO='"+getUno()+"';";
        try{
            ResultSet rs = DBUtil.runQuery(select);
            while (rs.next()){
                money = rs.getInt("MONY");
            }
            DBUtil.realeaseAll();
        } catch (SQLException se) {
            Logger.getLogger(Cuserimpl.class.getName()).log(Level.SEVERE, null, se);
        }
        return money;
    }
}

GUI层的代码个人认为没有什么参考价值和意义。我们的设计思路是首先设计每个业务操作对应的UI界面,当这个界面设计好以后,我们设置各种按钮并设置监听事件和监听器。最后连接各个业务界面。下面仅提供一些界面参考。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MYSQL:餐厅点菜、管理员工的数据库。大学数据库课程大作业(初学者,入门,用的基础知识) 大二做的数据库课程大作业,作者是初学者,分享给大家参考,内容参考了很多篇数据库文章才拼凑出来,所以本数据库很粗糙,很简单,需要的同学复制粘贴然后自行修改交作业就行。作者使用软件sqlyog制作和测试。 阅读详情

相关推荐

数据库系统原理实验五/大作业:数据库设计与应用开发大作业

1、实验目的要求 掌握数据库设计基本方法及数据库设计工具; 掌握综合运用数据库原理、方法和技术进行数据库应用系统分析、设计和SQL实现关键功能的能力。 2、实验主要内容 掌握数据库设计基本步骤,包括数据库概念结构设计、逻辑结构设计,物理结构设计,数据库模式SQL语句生成。能够使用数据库设计工具进行数据库设计。 为某个部门或单位开发一个数据库应用系统,具体内容包括:对某个部门或单位业务和数据进行调查,系统分析,系统设计,数据库设计,数据库创建和数据加载,能够使用后台SQL语句编程实现所需功能,系统测试和分析,大作业汇报。 3、实验仪器设备 学生每人一台PC机 已安装SQL Server环境

数据库大作业总结

今晚,我们的数据库大作业就基本完工了。不过自己离真正熟练运用数据库还有一段好遥远的距离。 我们这次大作业是选择用网站的形式做一个宠物店管理系统。其实这不是我的最初的设想,我觉得如果只是做一个web的运用,没有什么意义,只是很辛苦地写很多代码,后来也证明了这一点。所以,我一开始的就想自己实现一个数据库,这样我们就能够深入的理解数据库的底层实现。但考虑到我们组员的实力与观点,最终还是选择了做一个we

liulingbo918 1万+

mysql大作业报告.docx

实现部门、职务、职称等信息的管理; 实现职工信息的管理; 实现职工学习经历和任职经历的管理; 实现职工家庭关系的管理; 实现奖惩信息的管理; 创建存储过程查询个部门各种职称的职工数量; 创建视图查询各职工的工号、姓名、部门、职务信息; 创建触发器当增加、删除职工和修改职工部门信息时自动修改相应部门 的职工人数。

数据库系统设计与开发大作业之本科生事务管理系统ER图

Wall的博客 4146

数据库系统设计与开发课程设计-结课大作业

采用基于实体联系的自底向上的规范化设计方法 需求描述:设计一个基于B/S的本科生事务管理系统,要求能够实现从数据收集到数据处理、数据发布等一系列功能,涵盖了学生信息管理、宿舍管理、课程管理、项目管理、教师管理等各个环节。学生事务管理系统主要是满足学校管理学生、学生选课以及相关的班级、课程、教师等信息的需求。

数据库设计大作业(完整版 )

本资源为大连理工大学软件学院的数据库设计大作业 背景为某一农产品网上商城系统的数据库设计 图表 说明 SQL语句详尽 各位学弟学妹们可以做以参考

HNU数据库原理数据库设计与应用开发大作业

文件下载 懒得复制了,直接下载吧↑

海棠的博客 572

YOLOv8实战:5分钟搞定Windows环境下的目标检测模型部署(附常见报错解决方案)

本文详细介绍了在Windows环境下快速部署YOLOv8目标检测模型的实战指南,包括环境配置、模型加载、快速验证及常见报错解决方案。通过5分钟快速入门教程,帮助开发者高效实现计算机视觉应用,特别适合需要快速上手的AI开发者。

weixin_30566063的博客 558

基于Uniapp实现的Android的校园二手商品交易平台App源码

管理员:卖家用户:个人中心、商品分类管理、商品信息管理、用户咨询管理、订单管理等普通用户:登录注册、查看首页、商品信息、用户咨询、信息提醒、我的等本系统功能完整,适合作为毕业设计、课程设计、数据库大作业。...

583

MarkDown简介(深度解析MarkDown用法)

欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I...

酷酷的旭 7344

CANoe VLAN配置的艺术:如何通过脚本自动化实现高效车载网络测试

本文深入探讨了CANoe VLAN配置的自动化实现,通过CAPL脚本与Python工具链的结合,提升车载网络测试效率。重点解析了硬件侧VLAN配置与软件侧VLAN配置的交互机制,并提供了实用的脚本开发示例和调试技巧,帮助工程师快速构建高效的自动化测试方案。

qqq44的博客 617

基于javaweb+SpringBoot的酒店宾馆管理系统(java+SpringBoot+html+layui+jQuery+maven+mysql)

功能介绍 springboot酒店宾馆管理系统。该系统为后管系统,无前台。主要分三种角色:管理者/工作人员/前台人员。 主要功能有: 客房:客房标准、房间信息; 订单:入住订单; 员工:员工信息; 事务:事务信息; 停车:车位信息; 财务:财务信息; 历史:订单历史、车库历史; 会员:会员信息; 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:To

m0_71015455的博客 338

android11-修改屏幕显示方向和触摸方向

参数0表示12点钟方向显示参数90表示3点钟方向显示参数180表示6点钟方向显示参数270表示9点钟方向显示。

Paper_Love的博客 2118

Uniapp+springboot疫情资讯信息管理系统App,计算机毕业设计项目,课程设计,大作业参考项目,优秀论文模板

这是基于Uniapp+springboot疫情信息管理系统App,优秀项目参考。

allen_857的博客 362

智能优化电池:基于单片机的电池管理系统

设计简介: 本设计是基于单片机的电池管理系统,主要实现以下功能: 可通过LCD1602显示温度、电压电流值; 可通过按键调整温度、电压和电流的阈值; 用ADC0832将模拟量转换为数字量。 标签:51单片机、LCD1602、ADC0832 效果图: 总体资料: 原理图: 软件设计流程: 系统框图: 本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成电动汽车的电池管理的整个系统,...

专注单片机实战教学,分享单片机学习资料 376

Figma到Axure一键转换:Axhub Extension保姆级教程(含常见问题解决)

本文提供Axhub Extension的保姆级教程,详细讲解如何将Figma设计稿一键转换为Axure高保真交互原型。教程涵盖环境准备、核心转换四步走流程,并重点解决JSON导入失败、样式错乱、复杂组件转换等常见问题,旨在打通Figma与Axure之间的数据孤岛,大幅提升设计师和产品经理的原型制作效率。

night的博客 1577

基于javaweb+SpringBoot的园区招商管理系统(java+SpringBoot+html+thymeleaf+maven+mysql)

项目介绍 园区招商管理系统。共分为三种角色,超级管理员、企业人员、高级用户。 超级管理员角色具有功能: 系统设置-用户管理、页面管理、角色管理; 招商管理-招商列表; 公司管理-公司列表、我的申请; 投诉管理-投诉列表、我的投诉; 合同管理-合同列表; 项目管理-项目列表、我的项目; 新闻管理-新闻列表; 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat

m0_71097188的博客 398

Arcgis中的模型构建器技术之按属性批量建库并对应输出

好久没更新了,之前我们已经介绍过四至点提取模型,前两天有同事问怎么样按属性批量建数据库并对应输出相关图斑。比如将一个县的永农数据按乡镇建立数据库并将对应乡镇的永农数据输出到相应的数据库里。今天就介绍一下相关的模型构建过程。

weixin_44671081的博客 518

基于javaweb+SpringBoot的课程管理自动排课系统(java+SpringBoot+html+layui+thymeleaf+redis+mysql)

项目介绍 课程自动排课系统,该系统分两种角色:管理员与普通用户; 主要功能包括: 首页:查看分课、查看课表、查看空教室; 班级设置:添加班级、分配课程、编辑、删除课程; 教室设置:添加教室、编辑、删除; 课程设置:添加课程、编辑、删除; 教师设置:添加教师、编辑、删除; 排课管理:调整排课、删除排课; 用户管理:添加用户、编辑、删除; 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推

m0_71015850的博客 741

基于Lumerical的1550 nm InGaAs/InP与InGaAs/InAlAs APD设计与功率饱和度优化

摘要 本研究利用Ansys Lumerical软件对1550 nm激光雷达应用的InGaAs/InP和InGaAs/InAlAs雪崩光电二极管(APD)进行仿真设计与优化。通过FDTD光学仿真获取光吸收分布,结合CHARGE模块的电学仿真分析暗电流、光电流及雪崩增益特性。重点研究了两种材料体系的性能差异,并针对近距离强反射导致的功率饱和问题提出结构优化方案。仿真结果表明,InGaAs/InAlAs APD具有更优的过量噪声特性,而优化的电荷层设计可显著提升器件的功率饱和阈值。研究提供了完整的仿真流程与代码实

huanghm88的专栏 97

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

基于javaweb+mysql的幼儿园管理系统(java+SpringBoot+thymeleaf+html+maven+mysql)

项目介绍 蓝天幼儿园管理系统,共分为三种角色,管理员、家长、教师。 管理员角色具有功能: 系统管理-用户管理、页面管理、角色管理, 校园管理-老师管理、工资管理、物资管理、菜谱管理、班级管理 班级管理-学生管理、公告管理、课程管理 考勤管理-老师考勤、学生考勤、老师考勤统计、学生考勤统计、签到签退 技术栈 Springboot html+thymeleaf 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclip

m0_71327314的博客 481

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数据库课程大作业——数据分析与数据管理系统实践

数据分析与数据管理系统实践 一、数据介绍 公司员工信息 ,Excel文件 提供 44 名员工 姓名、所在部门工作职务车的编号 公司员工的信用卡刷记录(两周) ,Excel 文件 约 1400 行信用卡刷记录,内容包括:员工姓名、地点称金额时间 二、大作业要求 1、根据自己所学数据库操作和管理知识,创建一个数据库,把两个Excel表导入这个数据库,并对应建立两个表;对两个表创建...

红蓝联盟的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[精品毕设]基于Uniapp+ssm客运自助售票小程序的设计与实现汽车票务购票

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功!

m0_73612711的博客 345

Android毕业设计源码丨基于Uniapp+SSM实现的Android的校园新闻管理系统实现的App

首页、个人中心、用户管理、新闻类型管理、新闻资讯管理、在线留言、系统管理等首页、新闻资讯、公告信息、在线留言、我的等本系统功能完整,适合作为毕业设计、课程设计、数据库大作业。......

745

MySQL大作业

机电 MySQL 大作业(20级) 本篇文章为20级MySQL期末大作业,仅限参考,禁止转载。 提示:借鉴完了请点个赞。 文章目录机电 MySQL 大作业(20级)前言一、此部分为school数据库创建部分二、插入数据1.S2.C3.SC总结 前言 一、使用create database命令创建教务管理数据库school。 二、选择school数据库,创建如下三个表: 1、使用create table命令创建S表,表结构如下: 表1:S表结构 2、使用create table命令创建C表,表结构如下:

weixin_48660253的博客 1万+

oracle数据库作业设计,Oracle数据库设计大作业含源代码、文档

【实例简介】Oracle数据库设计,用Oracle设计数据库,并通过实例进行实现,含有数据库操作的所有sql语句和注释。有java的源代码和大作业文档【实例截图】【核心代码】4e757f40-c312-41be-ac18-6309042b0cfa└── xxxOracle数据库设计大作业├── oracle脚本.~sql├── oracle脚本.sql├── StaffSystem│ ├── ...

weixin_29843603的博客 1711
上一篇: TCP/IP学习笔记——TCP/IP基础知识
下一篇: 数据库课设2.0——重构后端
ELucubrate
博客等级 码龄7年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值