Xxx饭堂系统 JAVA+SQL+JDBC完成一个小项目(下篇)
Xxx饭堂系统(下篇)
在上一篇我们已经把系统的基本框架已经搭建完成,接下看来我们的任务就是,吧Daoceng接口的实现类完成以及各功能窗口的实现
功能窗口的搭建
菜单类
/*** 菜单类框架*/ public class Menu {private static StudentCardDaoImpl studentCardDao = new StudentCardDaoImpl();private static ConsumptionDaoImpl consumptionDao = new ConsumptionDaoImpl();private static AdministratorDaoImpl administratorDao = new AdministratorDaoImpl();private static SuperAdministratorDaoImpl superadministratorDao = new SuperAdministratorDaoImpl();private static Scanner input = new Scanner(System.in);public static void menu() throws Exception {//主菜单//功能有:1.用户登录 2.用户注册 3.退出系统}public static void LogInMenu(int choose) throws Exception {//用户登录界面}public static void register(int choose) throws Exception {//用户注册页面}public static void exit() throws Exception {//退出系统功能}public static void towAdminMenu() throws Exception {//管理员二级菜单//功能有:1.查看所有学生饭卡信息 2.查看所有学生饭卡消费信息 3.查看指定月份学生消费总金额 4.查看 //指定月份学生充值总金额}public static void selectAllstuCardData() throws Exception {//管理员查看所有学生饭卡信息}public static void selectAllConsData() throws Exception {//管理员查看学生所有饭卡消费信息}public static String insertMonth(){//月份输入//因为有两个功能需要月份输入功能,在此打包,减少相同代码重复使用}public static void selectMonthAmount(String type,int status,String month) throws Exception {//查看指定月份学生 充值/消费 总金额//因为有两个功能需要对同一张表进行同样操作(只是传过来的参数不一样),对此我们封装成一个方法,便于调用}public static void selectMonthRechAmount() throws Exception {//查看指定月份学生充值总金额}public static void selectMonthConsAmount() throws Exception {//查看指定月份学生消费总金额}public static void towMenu(String id) throws Exception {//普通用户二级菜单//功能有:(1.饭卡充值2.余额查询3.信息查询4.饭卡消费5.查询银行卡余额6.修改信息7.用钱明细 8.退出登录)}public static void cardRecharge(String id) throws Exception {//饭卡充值}public static void balanceInquiry(String id) throws Exception {//余额查询}public static void selectStudent(String id) throws Exception {//信息查询}public static void stuConsumption(String id) throws Exception {//饭卡消费}public static void bankCardBalance(String id) throws Exception {//查询银行卡余额}public static void reviseStuData(String id) throws Exception {//修改学生信息}public static void expensesRecord(String id) throws Exception {//查询历史消费记录} }
主菜单
主菜单页面
public static void menu() throws Exception {System.out.println("**************欢迎使用Xxxx学校饭卡业务系统**************");System.out.println("1.用户登录\t2.用户注册\t3.退出系统");System.out.print("请选择:");int a = input.nextInt();while(true){if(a == 1){while (true) {System.out.println("请选择您的身份(1.普通用户 2.管理员)");int choose = input.nextInt();if (choose == 1) {LogInMenu(1);//如果输入1则进入普通用户登录界面break;} else if (choose == 2) {LogInMenu(2);//如果输入2则进入管理员用户登录界面break;} else{System.out.println("没有这个选项!!请重新输入");continue;}}break;}else if(a == 2){while (true) {System.out.println("请选择您要注册的身份(1.普通用户 2.管理员)");int choose = input.nextInt();if (choose == 1) {register(1);//如果输入1则进入普通用户注册页面break;} else if (choose == 2) {register(2);//如果输入2则进入管理员用户注册页面break;} else{System.out.println("没有这个选项!!请重新输入");continue;}}menu();break;}else if(a == 3){exit();//退出系统System.exit(0);}else {System.out.println("输入错误请重新输入!");menu();continue;}}}
用户登录界面
public static void LogInMenu(int choose) throws Exception {if(choose == 1) {//普通用户登录System.out.print("请输入你的学号:");String studentId = input.next();System.out.print("请输入您的密码:");String password = input.next(); StudentCard studentCard = new StudentCard();//根据id,密码获得对应对象studentCard = studentCardDao.LoginCheck(studentId, password);if (studentCard == null) {System.out.println("用户密码不存在!!");LogInMenu(choose);} else {System.out.println("登陆成功!!");towMenu(studentId);}}else {//管理员登录System.out.print("请输入您的用户名:");String username = input.next();System.out.print("请输入您的密码:");String password = input.next(); //根据id,密码获得对应对象Administrator administrator = administratorDao.LoginCheck(username,password);if (administrator == null) {System.out.println("用户密码不存在!!");LogInMenu(choose);} else {System.out.println("登陆成功!!");towAdminMenu();}}}
用户注册页面
public static void register(int choose) throws Exception {if(choose == 1) {//普通用户注册System.out.print("请输入学号:");String studentId = input.next(); System.out.print("请输入姓名:");String username = input.next(); System.out.print("请输入班级:");String classname = input.next(); System.out.print("请输入密码:");String psw = input.next(); System.out.print("请输入银行卡金额:");Double cardMoney = input.nextDouble(); StudentCard studentCard = new StudentCard();//将用户从控制台输入的信息从放到一个对象中studentCard.setSid(studentId);studentCard.setSanme(username);studentCard.setMoney(0.0);studentCard.setClassName(classname);studentCard.setPassword(psw);studentCard.setCardMoney(cardMoney); //把对象信息传入数据库int status = studentCardDao.addStudentCard(studentCard);if (status > 0) {//数据增删改返回的输一个int类型值,表示此操作影响多少行System.out.println("注册成功!!");}}else {//管理员注册while (true) {System.out.println("-------------超级管理员验证-------------");//管理员不是谁都能随便注册的,所以要经过超级管理员认证,认证成功方可注册System.out.print("请输入超级管理员的用户名:");String username = input.next();System.out.print("请输入超级管理员的密码:");String password = input.next(); //检测超级管理员账号密码是否正确SuperAdministrator superAdministrator = superadministratorDao.chechLogin(username, password);if (superAdministrator == null) {System.out.println("用户名密码错误,验证失败。。");continue;} else {System.out.println("验证成功!!");//towMenu(studentId);System.out.println("请输入您要注册的管理员信息");System.out.print("请输入用户名:");String username1 = input.next();System.out.print("请输入密码:");String password1 = input.next(); Administrator administrator = new Administrator();administrator.setUsername(username1);administrator.setPassword(password1);int status = administratorDao.addAdministrator(administrator);if (status > 0) {System.out.println("注册成功!");} else {System.out.println("注册失败。。");}break;}}}}
退出系统功能
public static void exit() throws Exception {System.out.print("关闭系统中");for (int i = 0; i < 5; i++) {Thread.sleep(380);System.out.print(".");}Thread.sleep(380);System.out.println();System.out.println("感谢使用,期待下次再会~");}
管理员
管理员二级菜单
public static void towAdminMenu() throws Exception {System.out.println("***************欢迎进入管理员系统***************");System.out.println("请选择以下业务");System.out.println("1.查看所有学生饭卡信息 2.查看所有学生饭卡消费信息 3.查看指定月份学生消费总金额 4.查看指定月份学生充值总金额 " +"5.退出登录");int choose = input.nextInt();while (true){if(choose == 1){selectAllstuCardData();break;}else if(choose == 2){selectAllConsData();break;}else if(choose == 3){selectMonthRechAmount();break;}else if(choose == 4){selectMonthConsAmount();break;} else if(choose == 5){menu();break;}else {System.out.println("没有这个选项");continue;}}}
查看所有学生饭卡信息
public static void selectAllstuCardData() throws Exception {List<StudentCard> studentCards = administratorDao.selectCardDataAll();for (StudentCard studentCard : studentCards) {System.out.println("学生学号:" + studentCard.getSid() + " 姓名:" + studentCard.getSanme() +" 班级:" + studentCard.getClassName() + " 饭卡余额:" + studentCard.getMoney());}towAdminMenu(); }
查看学生所有饭卡消费信息
public static void selectAllConsData() throws Exception {int status = Constant.CONSUMPTION;List<Consumption> consumptions = administratorDao.selectConDataAll(status);for (Consumption consumption : consumptions) {System.out.println("学号:" + consumption.getConsid() + " 于 " + consumption.getDate() + " 消费 " +consumption.getMoney() + " 元。");}towAdminMenu(); }
月份输入功能
public static String insertMonth(){String mo = null;while (true) {System.out.println("请输入您想查看的月数(1-12):");int month = input.nextInt();if (month >= 1 && month <= 12) {if (month <= 9) {mo = "0" + month;break;} else {mo = month + "";break;}}else {System.out.println("只能输入1-12的数字,请重新输入!!");continue;}}return mo; }
查看指定月份学生 充值/消费 总金额功能
public static void selectMonthAmount(String type,int status,String month) throws Exception {List<Consumption> consumptions = administratorDao.selectMonthData(month,status);double amount = 0.0;for (Consumption consumption : consumptions) {amount += consumption.getMoney();}System.out.println("本月学生" + type + "总金额为:" + amount + "元。");towAdminMenu(); }
查看指定月份学生充值总金额
public static void selectMonthRechAmount() throws Exception {String month = insertMonth();selectMonthAmount("消费",Constant.CONSUMPTION,month); }
查看指定月份学生充值总金额
public static void selectMonthConsAmount() throws Exception {String month = insertMonth();selectMonthAmount("充值",Constant.RECHARGE,month); }
普通用户
普通用户二级菜单
public static void towMenu(String id) throws Exception {System.out.println("***************欢迎使用饭卡服务系统***************");System.out.println("请选择以下业务:");System.out.println("(1. 饭卡充值 2.余额查询 3.信息查询 4.饭卡消费 5.查询银行卡余额 6.修改信息 7.用钱明细 8.退出登录)");int choose = input.nextInt();switch (choose){case 1:cardRecharge(id);break;case 2:balanceInquiry(id);break;case 3:selectStudent(id);break;case 4:stuConsumption(id);break;case 5:bankCardBalance(id);break;case 6:reviseStuData(id);break;case 7:expensesRecord(id);break;case 8:menu();break;default:System.out.println("输入错误");break;} }
饭卡充值
public static void cardRecharge(String id) throws Exception {Consumption consumption = new Consumption();//根据id获取学生卡信息StudentCard studentCard = studentCardDao.selectstudentCard(id);double cardMoney = studentCard.getCardMoney();double odlMoney = studentCard.getMoney(); System.out.print("请输入充值金额:");double money = input.nextDouble();if(money > cardMoney){System.out.println("银行卡余额不足,请重新输入充值金额");cardRecharge(id);}else {double newMoney = money + odlMoney;studentCard.setCardMoney(cardMoney - money);studentCard.setMoney(newMoney);} //把学生卡对象信息存入数据库int status = studentCardDao.UpDataStudentCard(studentCard);StudentCard studentCard1 = studentCardDao.selectstudentCard(id);System.out.println("饭卡余额为:" + studentCard1.getMoney());System.out.println("银行卡余额为:" + studentCard1.getCardMoney());if(status > 0){System.out.println("充值成功!"); consumption.setType(Constant.RECHARGE);consumption.setMoney(money);//获取当前时间SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date nowtime = new Date(System.currentTimeMillis());consumption.setDate(format.format(nowtime));consumption.setConsid(id);consumptionDao.addComData(consumption);}else {System.out.println("充值失败。。");}towMenu(id); }
余额查询
public static void balanceInquiry(String id) throws Exception {StudentCard studentCard = studentCardDao.selectstudentCard(id);System.out.println("当前饭卡余额为:" + studentCard.getMoney());towMenu(id); }
信息查询
public static void selectStudent(String id) throws Exception {StudentCard studentCard = studentCardDao.selectstudentCard(id);System.out.println("您的信息为:");System.out.println("学号:" + studentCard.getSid());System.out.println("姓名:" + studentCard.getSanme());System.out.println("班级:" + studentCard.getClassName());towMenu(id); }
饭卡消费
public static void stuConsumption(String id) throws Exception {StudentCard studentCard = studentCardDao.selectstudentCard(id);Consumption consumption = new Consumption();double money = studentCard.getMoney();//消费前余额Double amount = 0.0;while (true) {System.out.print("请输入你要消费的金额:");amount = input.nextDouble();//消费金额if (amount > studentCard.getMoney()) {System.out.println("余额不足,所剩余额为:" + studentCard.getMoney());continue;}else {break;}}double newMoney = money - amount;//消费后的余额studentCard.setMoney(newMoney);//把余额更新存到对象里studentCardDao.UpDataStudentCard(studentCard); StudentCard studentCard1 = studentCardDao.selectstudentCard(id);System.out.println("饭卡余额为:" + studentCard1.getMoney()); //把消费账单添加到记录中consumption.setType(Constant.CONSUMPTION);consumption.setMoney(amount); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date nowtime = new Date(System.currentTimeMillis());consumption.setDate(format.format(nowtime));consumption.setConsid(id);consumptionDao.addComData(consumption);towMenu(id); }
查询银行卡余额
public static void bankCardBalance(String id) throws Exception {StudentCard studentCard = studentCardDao.selectstudentCard(id);System.out.println("当前银行卡余额为:" + studentCard.getCardMoney());towMenu(id); }
修改学生信息
public static void reviseStuData(String id) throws Exception {//查询用户信息StudentCard studentCard = studentCardDao.selectstudentCard(id);String name = studentCard.getSanme();String className = studentCard.getClassName();String password = studentCard.getPassword();while (true) {System.out.println("请选择您要修改的信息(1.姓名 2.班级 3.密码 4.确认并修改)");int choose = input.nextInt();if (choose == 1) {System.out.print("请输入您修改后的名字:");name = input.next();continue;} else if (choose == 2) {System.out.print("请输入您修改后的班级:");className = input.next();continue;} else if (choose == 3) {System.out.print("请输入您修改后的密码:");password = input.next();continue;} else if (choose == 4) {System.out.print("正在为您更新信息");for (int i = 0; i < 5; i++) {Thread.sleep(300);System.out.print(".");}break;} else {System.out.println("没有这个选项!!请重新输入!!");continue;}}studentCard.setSanme(name);studentCard.setClassName(className);studentCard.setPassword(password);studentCard.setSid(id);int count = studentCardDao.UpDataStudentCard(studentCard);if(count > 0){System.out.println("修改成功!!");}else {System.out.println("修改失败...");}towMenu(id); }
查询历史消费记录
public static void expensesRecord(String id) throws Exception {Consumption consumption = new Consumption();consumption.setConsid(id);List<Consumption> consumptions = consumptionDao.selectAll(id);for (Consumption consumption1 : consumptions) {if(consumption1.getType() == Constant.CONSUMPTION) {//消费System.out.println("您于 " + consumption1.getDate() + " 消费了 " + consumption1.getMoney() + "元。");}else if(consumption1.getType() == Constant.RECHARGE){System.out.println("您于 " + consumption1.getDate() + " 充值了 " + consumption1.getMoney() + "元。");}}towMenu(id); }
Dao层接口实现类
AdministratorDaoImpl管理员
public class AdministratorDaoImpl implements AdministratorDao {@Override//管理员登录检测public Administrator LoginCheck(String username, String password) {String sql = "select * from tb_administrator where username = ? and password = ?;";List<Administrator> administrators = new ArrayList<>();try {administrators = JDBCUtil.executrDQL(sql,Administrator.class,username,password);} catch (Exception e) {e.printStackTrace();}return administrators == null || administrators.isEmpty() ? null:administrators.get(0);} @Override//注册管理员用户public int addAdministrator(Administrator administrator) {String sql = "insert into tb_administrator(username,password) values (?,?);";int status = 0;try {status = JDBCUtil.executrDML(sql,administrator.getUsername(),administrator.getPassword());} catch (Exception e) {e.printStackTrace();}return status;} @Override//查看所有学生饭卡信息public List<StudentCard> selectCardDataAll() {String sql = "select * from tb_meal_card;";List<StudentCard> studentCards = new ArrayList<>();try {studentCards = JDBCUtil.executrDQL(sql,StudentCard.class);} catch (Exception e) {e.printStackTrace();}return studentCards;} @Override//查看所有学生饭卡消费信息public List<Consumption> selectConDataAll(int status) {String sql = "select * from tb_consumption where type = ?;";List<Consumption> consumptions = new ArrayList<>();try {consumptions = JDBCUtil.executrDQL(sql,Consumption.class,status);} catch (Exception e) {e.printStackTrace();}return consumptions;} @Override//查看指定月份所有学生饭卡的 消费/充值 信息public List<Consumption> selectMonthData(String month,int status) {String sql = "select * from tb_consumption where date like concat('_____',?,'%') and type = ?;";List<Consumption> consumptions = new ArrayList<>();try {consumptions = JDBCUtil.executrDQL(sql,Consumption.class,month,status);} catch (Exception e) {e.printStackTrace();}return consumptions;} }
ConsumptionDaoImpl消费表
public class ConsumptionDaoImpl implements ConsumptionDao {//添加充值记录@Overridepublic int addComData(Consumption consumption) {String sql = "insert into tb_consumption (type,money,date,consid) values (?,?,?,?);";try {JDBCUtil.executrDML(sql,consumption.getType(),consumption.getMoney(),consumption.getDate(),consumption.getConsid());} catch (Exception e) {e.printStackTrace();}return 0;} @Override//查询参数ID的消费记录public List<Consumption> selectAll(String id) {String sql = "select * from tb_consumption where consid = ?;";List<Consumption> consumptions = new ArrayList<>();try {consumptions = JDBCUtil.executrDQL(sql,Consumption.class,id);} catch (Exception e) {e.printStackTrace();}return consumptions;} }
StudentCardDaoImpl学生饭卡
public class StudentCardDaoImpl implements StudentCardDao {@Override//普通用户登录检测public StudentCard LoginCheck(String id, String password) {String sql = "select * from tb_meal_card where sid = ? and password = ?;";List<StudentCard> studentCards = new ArrayList<>();try {studentCards = JDBCUtil.executrDQL(sql,StudentCard.class,id,password);} catch (Exception e) {e.printStackTrace();}return studentCards == null || studentCards.isEmpty() ? null:studentCards.get(0);} @Override//普通用户注册用户public int addStudentCard(StudentCard studentCard) {String sql = "insert into tb_meal_card(sid,sanme,className,money,password,cardMoney) values (?,?,?,?,?,?);";int status = 0;try {status = JDBCUtil.executrDML(sql,studentCard.getSid(),studentCard.getSanme(),studentCard.getClassName(),studentCard.getMoney(),studentCard.getPassword(),studentCard.getCardMoney());} catch (Exception e) {e.printStackTrace();}return status;} @Override//根据参数ID查询对应饭卡信息public StudentCard selectstudentCard(String id) {String sql = "select * from tb_meal_card where sid = ?;";List<StudentCard> studentCards = null;try {studentCards = JDBCUtil.executrDQL(sql,StudentCard.class,id);} catch (Exception e) {e.printStackTrace();}return studentCards == null || studentCards.isEmpty() ? null:studentCards.get(0);} @Override//根据参数ID修改对应学生饭卡信息public int UpDataStudentCard(StudentCard studentCard) {String sql = "update tb_meal_card set sanme = ?,className = ?,money = ?,password = ?,cardMoney = ? where sid = ?;";int status = 0;try {status = JDBCUtil.executrDML(sql,studentCard.getSanme(),studentCard.getClassName(),studentCard.getMoney(),studentCard.getPassword(),studentCard.getCardMoney(),studentCard.getSid());} catch (Exception e) {e.printStackTrace();}return status;} }
SuperAdministratorDaoImpl超级管理员
public class SuperAdministratorDaoImpl implements SuperAdministratorDao {/*** 超级管理员验证登录*/public SuperAdministrator chechLogin(String username,String password) {String sql = "select * from tb_super_administrator where username = ? and password = ?;";List<SuperAdministrator> superAdministrators = new ArrayList<>();try {superAdministrators = JDBCUtil.executrDQL(sql,SuperAdministrator.class,username,password);} catch (Exception e) {e.printStackTrace();}return superAdministrators == null || superAdministrators.isEmpty() ? null : superAdministrators.get(0);} }
系统基本框架及数据表的构建在上篇
http://t.csdn.cn/ZoPZJ
欢迎大家点赞、评论和收藏
Xxx饭堂系统 JAVA+SQL+JDBC完成一个小项目(下篇)相关推荐
- 基于javaweb的在线蛋糕商城系统(java+jsp+jdbc+mysql)
基于javaweb的在线蛋糕商城系统(java+jsp+jdbc+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/s ...
- 基于javaweb+mysql的学生选课系统(java+javaweb+jdbc)
基于javaweb+mysql的学生选课系统(java+javaweb+jdbc) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse ...
- 基于javaweb的学生选课系统(java+javaweb+jdbc)
基于javaweb的学生选课系统(java+javaweb+jdbc) 功能介绍: 用户菜单.学生管理.教师管理.课程管理.成绩排名查询 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 //验 ...
- java学习笔记(二十八)——开发一个小项目(VMeeting3.0)
上篇文章按照较规范的产品需求文档梳理了项目的逻辑,感觉开发起来明晰了很多:挂上一篇文章java学习笔记(二十七)--开发一个小项目(VMeeting2.0)_Biangbangbing的博客-CSDN ...
- 3年前的一个小项目经验,分享给菜鸟兄弟们(公文收发小软件:前期需求调查部分)...
两年前还在宁波时,我做过宁波教育局的一个小项目,一个部门内部使用的公文收发记录软件,这个项目当时是跟 他们的网络中心的老师洽谈的,网络中心负责此项目的老师,跟我们年龄差不多,30不到,可能要比我小上2 ...
- 三年前的一个小项目经验,分享给菜鸟兄弟们
原文地址 (公文收发小软件:前期需求调查部分) 日期:2009年1月1日 晚上 分类:项目开发经验 两年前还在宁波时,我做过宁波教育局的一个小项目,一个部门内部使用的公文收发记录软件.这个项目当时是 ...
- 做了一个小项目-PHP实现人生只有900个月
做了一个小项目-PHP实现人生只有900个月 起因当然是阮一峰老师那篇振聋发聩的博文<人生只有900个月>,几年前看到以后羞愧到无法自拔,想到自己曾经浪费多少时间,在一些无意义的事情上 ...
- c语言计算学生成绩的合格率,分享一个几年前刚学c的一个小项目。成绩的输入,查询,排序,插...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 分享一个几年前刚学c的一个小项目.成绩的输入,查询,排序,插入,删除,修改,求平均分总分.合格率的,对于初学者可以看看这种. #include void ...
- 通过一个小项目介绍Python3读写Access数据库(.mdb)的方法
1. 小项目功能介绍 本文通过一个小项目介绍Python3读写Access数据库(.mdb)的方法,该项目功能较简单,将mdb中的旧编码替换为新编码,新旧编码对照表放在1个excel(本文命名为新旧编 ...
最新文章
- c#json对象转数组_数组和对象的区别
- android 实现定时任务,Android 实现定时任务的过程详解
- hdu5389(DP)
- 项目整合一级缓存和二级缓存
- python get post区别_大话Python, webpy教程之GET和POST区别
- 使用spring的事务的三种方法
- python 模拟用户点击浏览器_Selenium(python版本)如何启动浏览器模拟点击网页链接或按钮?...
- 计算机屏幕地图是不是地图,地图软件 如何在截图时超出一个屏幕?
- 计算机相关专业EI及SCI国际会议及期刊汇总
- 【论文精读】TransE 及其实现
- 内网地址映射到公网地址
- 正版maya安装时,更改注册登录方式方法
- Linux系统管理员对普通用户的基本操作
- VT100 终端控制码
- java file exists用法_Java File exists()方法
- python编程题:天天向上的力量
- Excel快速下拉填充序列至10000行
- 西瓜错时上市销售,提高经济效益的背后是技术支持!
- TensorFlow入门教程:8:训练数据之Iris数据集
- 毕业季,作为程序员(it软件开发工程师),如何培养强大的解决问题的能力