项目审核系统 ---(连接数据库---项目模拟)

本章主要是查询方法和修改方法

  1. 编写查询方法,查询所有项目审核信息并返回查询结果,需实现分页功能,注意必要的异常处理。
  2. 编写查询方法,根据项目编号查询指定项目的审核信息,注意必要的异常处理。
  3. 编写修改方法,修改指定项目的审核状态信息,注意必要的异常处理。

Mysql数据库

  •  project ----表内容

  • project ----设计表

  • entry 包 --- Projectinfo类

属性----必须与数据库里面,我们所调用的表一一对应!!!!

package projectinfo.entry;public class Projectinfo {/*** 项目编号* 项目名称* 项目开始日期* 项目结束日期* 项目申报状态  0--已申报; 1--审核中; 2--已审核*/private Integer pId;private String pName;private String startDate;private String endDate;private Integer status;public Projectinfo() {}public Projectinfo(Integer pId, String pName, String startDate, String endDate, Integer status) {this.pId = pId;this.pName = pName;this.startDate = startDate;this.endDate = endDate;this.status = status;}public Integer getpId() {return pId;}public void setpId(Integer pId) {this.pId = pId;}public String getpName() {return pName;}public void setpName(String pName) {this.pName = pName;}public String getStartDate() {return startDate;}public void setStartDate(String startDate) {this.startDate = startDate;}public String getEndDate() {return endDate;}public void setEndDate(String endDate) {this.endDate = endDate;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}@Overridepublic String toString() {return "Projectinfo{" +"pId=" + pId +", pName='" + pName + '\'' +", startDate='" + startDate + '\'' +", endDate='" + endDate + '\'' +", status=" + status +'}';}
}
  • util 包 --- DBhelper类

主要是提取出来的通用方法。

          加载数据库驱动类,获得连接对象

          关闭资源

          增删改  

          查询

package projectinfo.util;import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;public class DBHelper {//提取1+2,获得连接对象public Connection getcon() {Connection con = null;try {Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://127.0.0.1:3306/project?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";//localhost也可以写成-----127.0.0.1String username = "root";String password = "root";//密码con = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}return con;}//关闭连接资源(提取第7步)public void closeAll(Connection con, PreparedStatement ps, ResultSet rs) {try {if (con != null) {con.close();}if (ps != null) {ps.close();}if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}}//通用的增删改方法:1-7在这里做汇总public int update(String sql, Object... arrs) {//4-5改Connection con = getcon();//1-2PreparedStatement ps = null;int count = 0;try {ps = con.prepareStatement(sql);//4  public int update(String sql,Object...arrs){for (int i = 0; i < arrs.length; i++) {//判断有几个问ps.setObject((i + 1), arrs[i]);//给第几个?赋值}count = ps.executeUpdate();//5} catch (SQLException e) {e.printStackTrace();}closeAll(con, ps, null);//7return count;}//通用的查询方法方法----查询所有表!!!public List query(String sql, Class cla, Object... arrs) {List list = new ArrayList<>();Connection con = getcon();//1-2  获得连接对象PreparedStatement ps = null;ResultSet rs = null;try {ps = con.prepareStatement(sql);//4.获得执行对象for (int i = 0; i < arrs.length; i++) {ps.setObject((i + 1), arrs[i]);}rs = ps.executeQuery();//5.//将rs里的数据存到list集合里去 ---反射while (rs.next()) {Object obj = cla.newInstance(); //实例化对象Field[] fs = cla.getDeclaredFields();//获得属性for (Field f : fs) {//赋值f.setAccessible(true);//允许暴力访问f.set(obj, rs.getObject(f.getName()));}list.add(obj);}} catch (SQLException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} finally {closeAll(con, ps, rs);}return list;}}
  • dao 包 --- ProjectinfoDao接口

package projectinfo.dao;import projectinfo.entry.Projectinfo;import java.util.List;public interface ProjectinfoDao {/*** 查询方法* 查询所有项目审核信息并返回审核结果** @return*/List<Projectinfo> selectAll();/*** 查询方法* 根据项目编号查询指定项目的审核信息,注意必要的异常处理** @param pId* @return*/Projectinfo selectByPId(Integer pId);/*** 修改方法* 修改指定项目的审核状态信息,注意必要的异常处理** @param projectinfo* @return*/int updateStatus(Projectinfo projectinfo);}
  • dao包 --- impl 包 --- ProjectinfoDaoImpl类

package projectinfo.dao.impl;import projectinfo.dao.ProjectinfoDao;
import projectinfo.entry.Projectinfo;
import projectinfo.util.DBHelper;import java.util.List;public class ProjectinfoDaoImpl implements ProjectinfoDao {private DBHelper db = new DBHelper();/*** 查询方法* 查询所有项目审核信息并返回审核结果** @return*/@Overridepublic List<Projectinfo> selectAll() {String sql = "select * from projectinfo";return db.query(sql, Projectinfo.class);}/*** 查询方法* 根据项目编号查询指定项目的审核信息,注意必要的异常处理** @param pId* @return*/@Overridepublic Projectinfo selectByPId(Integer pId) {String sql = "select * from projectinfo where pId=?";List<Projectinfo> list = db.query(sql, Projectinfo.class, pId);return list.size() > 0 ? list.get(0) : new Projectinfo();}/*** 修改方法* 修改指定项目的审核状态信息,注意必要的异常处理** @param projectinfo* @return*/@Overridepublic int updateStatus(Projectinfo projectinfo) {String sql = "update projectinfo set status=? where pId=?";Object[] obj = {projectinfo.getStatus(), projectinfo.getpId()};return db.update(sql, obj);}
}
  • service 包 --- ProjectinfoService接口

package projectinfo.service;import projectinfo.entry.Projectinfo;import java.util.List;public interface ProjectinfoService {/*** 查询方法* 查询所有项目审核信息并返回审核结果** @return*/List<Projectinfo> findAll();/*** 查询方法* 根据项目编号查询指定项目的审核信息,注意必要的异常处理** @param pId* @return*/Projectinfo findByPId(Integer pId);/*** 修改方法* 修改指定项目的审核状态信息,注意必要的异常处理** @param projectinfo* @return*/boolean modifyStatus(Projectinfo projectinfo);}
  • service 包 --- impl 包 --- ProjectinfoServiceImpl类

package projectinfo.service.impl;import projectinfo.dao.ProjectinfoDao;
import projectinfo.dao.impl.ProjectinfoDaoImpl;
import projectinfo.entry.Projectinfo;
import projectinfo.service.ProjectinfoService;import java.util.List;public class ProjectinfoServiceImpl implements ProjectinfoService {private ProjectinfoDao proDao = new ProjectinfoDaoImpl();/*** 查询方法* 查询所有项目审核信息并返回审核结果** @return*/@Overridepublic List<Projectinfo> findAll() {return proDao.selectAll();}/*** 查询方法* 根据项目编号查询指定项目的审核信息,注意必要的异常处理** @param pId* @return*/@Overridepublic Projectinfo findByPId(Integer pId) {return proDao.selectByPId(pId);}/*** 修改方法* 修改指定项目的审核状态信息,注意必要的异常处理** @param projectinfo* @return*/@Overridepublic boolean modifyStatus(Projectinfo projectinfo) {return proDao.updateStatus(projectinfo) >= 0;}
}
  • controller 包 --- ProjectinfoCotroller类

package projectinfo.cotroller;import com.sun.xml.internal.ws.api.ha.StickyFeature;
import projectinfo.entry.Projectinfo;
import projectinfo.service.ProjectinfoService;
import projectinfo.service.impl.ProjectinfoServiceImpl;import java.util.List;
import java.util.Scanner;public class ProjectinfoCotroller {private ProjectinfoService proService = new ProjectinfoServiceImpl();private Scanner input = new Scanner(System.in);/*** 主菜单*/public void mainMenu() {System.out.println("********************************************************************************");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.println("请选择:");int index = input.nextInt();switch (index) {case 1:System.out.println("<----全部项目---->");methodSelectAll();break;case 2:System.out.println("<----搜索项目---->");methodSelectByPId();break;case 3:System.out.println("<----修改项目状态---->");methodUpdate();break;case 4:System.out.println("谢谢使用!");System.exit(0);}/* System.out.println("********************************************************************************");System.out.println("输入0返回:");int num = input.nextInt();if (num == 0) {mainMenu();}*/}/*** 查询方法* 查询所有项目审核信息*/public void methodSelectAll() {try {List<Projectinfo> list = proService.findAll();System.out.println("********************************************************************************");System.out.println("项目编号 \t\t\t项目名称 \t\t\t项目开始日期 \t\t\t项目结束日期 \t\t\t项目申报状态");if (list.isEmpty()) {System.out.println("没有项目数据");} else {for (Projectinfo p : list) {String status = getStatys(p.getStatus());System.out.println(p.getpId() + "\t\t" +p.getpName() + "\t\t" +p.getStartDate() + "\t\t" +p.getEndDate() + "\t\t" +status);}}} catch (Exception e) {throw new RuntimeException(e);}System.out.println("********************************************************************************");System.out.println("1---搜索项目");System.out.println("2---修改项目状态");System.out.println("3---退出");System.out.println("请选择:");int index = input.nextInt();switch (index) {case 1:System.out.println("<----搜索项目---->");methodSelectByPId();break;case 2:System.out.println("<----修改项目状态---->");methodUpdate();break;case 3:System.out.println("谢谢使用!");System.exit(0);}}/*** status判断  0--已申报   1--审核中  2--已审核*/public String getStatys(int status) {switch (status) {case 0:return "已申报";case 1:return "审核中";case 2:return "已审核";default:return "未知状态";}}/*** 查询方法* 根据项目编号查询指定项目的审核信息,注意必要的异常处理*/public void methodSelectByPId() {System.out.println("********************************************************************************");System.out.println("请输入要查询的项目的编号(pId):");try {int pId = input.nextInt();Projectinfo p = proService.findByPId(pId);if (p != null) {System.out.println("项目编号 \t\t\t项目名称 \t\t\t项目开始日期 \t\t\t项目结束日期 \t\t\t项目申报状态");String status = getStatys(p.getStatus());System.out.println(p.getpId() + "\t\t" +p.getpName() + "\t\t" +p.getStartDate() + "\t\t" +p.getEndDate() + "\t\t" +status);}} catch (Exception e) {throw new RuntimeException(e);}System.out.println("********************************************************************************");System.out.println("1---全部项目");System.out.println("2---修改项目状态");System.out.println("3---退出");System.out.println("********************************************************************************");System.out.println("请选择:");int index = input.nextInt();switch (index) {case 1:System.out.println("<----全部项目---->");methodSelectAll();break;case 2:System.out.println("<----修改项目状态---->");methodUpdate();break;case 3:System.out.println("谢谢使用!");System.exit(0);}}/*** 修改方法* 修改指定项目的审核状态信息*/public void methodUpdate() {System.out.println("********************************************************************************");System.out.println("请输入要修改申报状态的项目编号:");int pId = input.nextInt();Projectinfo p = proService.findByPId(pId);if (p != null) {String status = getStatys(p.getStatus());System.out.println("当前项目的项目申报状态为" + "\t\t" + status);boolean b = proService.modifyStatus(p);System.out.println("请输入修改后该项目的申报状态(已申报//已审核//审核中):");String statusStr = input.next();int status1 = getStatus1(statusStr);if (status1 != -1) {if (status1 == p.getStatus()) {System.out.println("申报状态与原来一一致,不需要更改!即将回到主页面");System.out.println("================================================================================");mainMenu();} else {p.setStatus(status1);proService.modifyStatus(p);System.out.println("该项目申报状态已成功修改为" + "\t\t" + statusStr);System.out.println("即将回到主页面");System.out.println("================================================================================");mainMenu();}} else {System.out.println("输入错误,请重新操作");System.out.println("即将回到主页面");System.out.println("================================================================================");mainMenu();}}}/*** status1判断  0--已申报   1--审核中  2--已审核*/public int getStatus1(String status1) {switch (status1) {case "已申报":return 0;case "审核中":return 1;case "已审核":return 2;default:return -1;}}}
  • test 包 --- ProMain类

package projectinfo.test;import projectinfo.cotroller.ProjectinfoCotroller;public class ProMain {public static void main(String[] args) {ProjectinfoCotroller projectinfoCotroller = new ProjectinfoCotroller();projectinfoCotroller.mainMenu();}
}

  • 结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464929.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(十三)JavaWeb后端开发——MySQL2

目录 1.DQL数据查询语言 1.1基本查询 1.2条件查询 where关键字 1.3分组查询 1.4排序查询 1.5分页查询 2.多表设计 3.多表查询——联查 4.多表查询——子查询​ 5.MySQL 事务 6.MySQL 索引 1.DQL数据查询语言 分为五大基本查询语法 1.1基本查询 -- 查询特定字段 s…

【STL栈和队列】:高效数据结构的应用秘籍

前言&#xff1a; C 标准模板库&#xff08;STL&#xff09;为我们提供了多种容器&#xff0c;其中 stack&#xff08;栈&#xff09;和 queue&#xff08;队列&#xff09;是非常常用的两种容器。 根据之前C语言实现的栈和队列&#xff0c;&#xff08;如有遗忘&#xff0c;…

LWIP通信协议UDP发送、接收源码解析

1.UDP发送函数比较简短&#xff0c;带操作系统和裸机一样。以下是udp_sendto源码解析&#xff1b; 2.LWIP源码UDP接收数据 2.1.UDP带操作系统接收数据&#xff0c;以下是源码解析&#xff1b; 2.2.UDP裸机接收数据&#xff0c;以下是源码解析

小菜家教平台:基于SpringBoot+Vue打造一站式学习管理系统

前言 现在已经学习了很多与Java相关的知识&#xff0c;但是迟迟没有进行一个完整的实践&#xff08;之前这个项目开发到一半&#xff0c;很多东西没学搁置了&#xff0c;同时原先的项目中也有很多的问题&#xff09;&#xff0c;所以现在准备从零开始做一个基于SpringBootVue的…

【优选算法 — 双指针】双指针小专题

和为 s 的两个数 和为s的两个数 题目描述 解法一&#xff1a;暴力枚举 暴力枚举&#xff0c;先固定一个数&#xff0c;然后让这个数和另一个数匹配相加&#xff0c; 如果当前的数 所有剩余的数 target&#xff0c;则返回这两个数&#xff0c;否则固定下一个数&#…

轻松理解操作系统 - 轻松了解 inode 是如何管理文件的

Linux 由于其开源、比较稳定等特点统治了服务端领域。也因此&#xff0c;学习Linux 系统相关知识在后端开发等岗位中变得越来越重要&#xff0c;甚至可以说是必不可少的。 因为它的广泛应用&#xff0c;所以在程序员的日常工作和面试中&#xff0c;它都是经常出现的。它的开源特…

Vue(JavaScript)读取csv表格并求某一列之和(大浮点数处理: decimal.js)

文章目录 想要读这个表格&#xff0c;并且求第二列所有价格的和方法一&#xff1a;通过添加文件输入元素上传csv完整&#xff08;正确&#xff09;代码之前的错误部分因为价格是小数&#xff0c;所以下面的代码出错。如果把parseFloat改成parseInt&#xff0c;那么求和没有意义…

微信小程序-事件总线

一.事件总线的概念和作用 事件总线是对发布-订阅模式的一种实现&#xff0c;是一种集中式事件处理机制&#xff0c;允许不同组件之间进行彼此通信&#xff0c;常用于两个非父子组件和兄弟组件之间的通讯。 在日常开发过程中&#xff0c;我们可以使用第三方的发布订阅 JS 包来实…

成都郝蓉宜恺文化传媒:引领大数据应用新篇章

在信息化浪潮汹涌的今天&#xff0c;大数据被誉为新时代的“石油”&#xff0c;正在以前所未有的速度改变着我们的生活和工作方式。成都郝蓉宜恺文化传媒&#xff0c;作为大数据领域的领军企业&#xff0c;始终站在创新的前沿&#xff0c;引领着大数据应用的新篇章。 作为大数…

qt QDropEvent详解

1、概述 QDropEvent是Qt框架中用于处理拖放释放事件的一个类。它允许开发者在用户界面中更好地管理和处理拖放操作&#xff0c;从而实现交互式和响应式的应用程序。QDropEvent类提供了处理拖放释放事件所需的方法和信号&#xff0c;使得开发者能够轻松地实现拖放功能&#xff…

Kotlin的内置函数

Kotlin 提供了丰富的内置函数&#xff0c;它们极大简化了日常开发工作。常见内置函数包括 标准库函数&#xff08;let、apply、run 等&#xff09;&#xff0c;用于提高代码的简洁性和可读性。下面我们详细介绍这些函数的功能、用法以及它们之间的区别。 1. let 函数 let 通常…

Pod安装软件将CDN改为国内的镜像

1、碰到错误 在pod install的时候碰到以下的下载错误&#xff1a; 文字错误如下&#xff1a; CDN: trunk URL couldnt be downloaded: https://cdn.jsdelivr.net/cocoa/Specs/5/b/d/OpenCV/2.4.11/OpenCV.podspec.json Response: Timeout was reached CDN: trunk URL couldn…

Rockchip SoC AI 与视觉处理器路线图:赋能未来的 AI 驱动设备

随着人工智能&#xff08;AI&#xff09;和计算机视觉技术不断推动各行各业的创新&#xff0c;Rockchip 已成为提供强大系统级芯片&#xff08;SoC&#xff09;解决方案的领先厂商。该公司已开发出多款集成 AI 功能并支持先进多媒体与视觉技术的 SoC&#xff0c;非常适合用于 A…

尚庭公寓-小程序接口

7. 项目开发 7.4 移动端后端开发 7.4.1 项目初始配置 7.4.1.1 SpringBoot配置 1. 创建application.yml文件 在web-app模块的src/main/resources目录下创建application.yml配置文件&#xff0c;内容如下&#xff1a; server:port: 80812. 创建SpringBoot启动类 在web-app…

练习LabVIEW第三十八题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第三十八题&#xff1a; 创建一个VI&#xff0c;实现对按钮状态的指示和按钮“按下”持续时间简单计算功能&#xff0c;按…

HTMLCSS:3D 旋转卡片的炫酷动画

效果演示 这段代码是一个HTML和CSS的组合&#xff0c;用于创建一个具有3D效果的动画卡片。 HTML <div class"obj"><div class"objchild"><span class"inn6"><h3 class"text">我是谁&#xff1f;我在那<…

微控制器(MCU)如何运行存储在Flash的程序???

忙&#xff0c;太忙了&#xff01;&#xff01;&#xff01;忙完就好了。MCU运行不也就如此&#xff1f;在微控制器单元&#xff08;MCU&#xff09;中&#xff0c;我们所编写的程序时通常是存储在闪存&#xff08;Flash&#xff09;中。当MCU启动时&#xff0c;它会从闪存中读…

yolov8涨点系列之引入CBAM注意力机制

文章目录 YOLOv8 中添加注意力机制 CBAM 具有多方面的好处特征增强与选择通道注意力方面空间注意力方面 提高模型性能计算效率优化&#xff1a; yolov8增加CBAM具体步骤CBAM代码(1)在__init.pyconv.py文件的__all__内添加‘CBAM’(2)conv.py文件复制粘贴CBAM代码(3)修改task.py…

如何无缝更换WordPress主题:关键步骤详解

更换WordPress主题对于希望刷新网站外观或改善用户体验的站长来说&#xff0c;是一项常见但不容忽视的任务。无论是为了提升性能还是实现新的设计风格&#xff0c;在更换主题时&#xff0c;确保不遗漏任何重要细节至关重要。本文将详细介绍更换WordPress主题的关键步骤&#xf…

推荐一款PowerPoint转Flash工具:iSpring Suite

iSpring Suite是一款PowerPoint转Flash工具&#xff0c;使用iSpring Suite 8可以轻松的将PPT演示文档转换为对Web友好的Flash影片格式。软件界面简洁&#xff0c;使用方便。为什么要转换成flash格式呢?Flash格式的最大特点是体积小巧、易于分发&#xff0c;兼容所有的操作系统…