以下报告为本人(闽师18软2班2号)Java课程设计功能详解,如有大面积借鉴或转载,烦请注明来源

视图模块

一、登陆

主要使用方法:
1、禁用frame装饰
即让Frame窗口失去边框和标题栏的修饰

JFrame f1 = new JFrame("家庭理财系统");
f1.setLayout(null);         //绝对布局
f1.setBounds(300, 200, 800, 600);
f1.setResizable(false);
f1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f1.setUndecorated(true);    //禁用frame装饰
f1.setVisible(true);

注意事项:
a、setUndecorated方法必须在setVisible之前被执行
b、确保Frame窗口是新建且没有做过任何显示,否则将抛出异常
2、设置背景为图片

URL resource = this.getClass().getResource("image/5.jpg");
ImageIcon icon = new ImageIcon(resource);
backgrounnd1.setIcon(icon);
backgrounnd1.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight());
f1.getContentPane().add(backgrounnd1);  //f1为上述代码的JFrame
f1.setVisible(true);         //前段代码需放在setVisible方式之前执行

二、主界面

整个界面的透明实现较为复杂,所以在Java专栏下另开一篇文章,戳这里查看swing界面透明

1、添加数据
主要使用方法,前文有写过的不再赘述,下文同理
1)金额数据限制

private boolean isNum(String str) {     //判断是否为数字try {double num = Double.valueOf(str);} catch (Exception e) {return false;}return true;
}
Double.valueOf(txt1.getText()).intValue() < 0.01  //判断是否大于0.01

2)日期正则

txt3.getText().matches("(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)")

3)二级联动下拉菜单

//下拉菜单1
public static JComboBox iEBox= new JComboBox(new Object[] {"支出","收入"});```
//下拉菜单2
static String[][] type={{"餐饮","购物","学习","娱乐","医疗","其他"},{"工资","奖金","生意","其他"}};
public static JComboBox typesBox=new JComboBox(type[0]);
//注册监听器iEBox.addActionListener(this);
//事件处理实现二级联动
public void     addBoxEventHandler(){iEBox.addItemListener(new ItemListener() {public void itemStateChanged(ItemEvent e) {int index=iEBox.getSelectedIndex();typesBox.removeAllItems();for (int i = 0; i < type[index].length; i++) {typesBox.addItem(type[index][i]);}}});
}

2、修改数据

具体数据处理与添加数据类似

3、删除数据
直接采用JOptionPane传入待删除行编号
4、财务统计


5、修改密码
需输入密码,直接采用JOptionPane完成
6、操作提示

7、数据格式化
需输入密码,直接采用JOptionPane完成

实体类
从需求分析开始就要设计好数据结构(这点很重要)
IS(接口):财务数据接口
IEStatement:财务数据实体类(继承IS)
Password:密码数据实体类

控制层
财务数据操控部分用到了接口传参,整体比较简单,没啥可讲的,贴一段财务数据操控的代码

public class IEStatementController {public void addData(IS ies) {new IEStatementModel().addData(ies);}public void deleteData(int i) {new IEStatementModel().deleteData(i);}public void updateData(IS is) {new IEStatementModel().updateData(is);}public void formatData() {new IEStatementModel().formatData();}
}

模型
关于数据库存储过程的具体操作会在SQLServer专栏下另开文章

1、ConnectDataBase(接口)
为什么定义接口:定义重复行为规范(如连接数据库进行操作必定要打开资源和关闭资源,但不同数据库具体连接方式不一样,以下以SQLServer为例)

public interface ConnectDataBase {String url=null;String user=null;String password=null;void openConnection();void closeConnection();
}

2、ConnectSQLServer(抽象类)
为什么在抽象类中实现开闭资源方法:减少代码冗余,后续所有关于数据库的操作都必须进行资源开闭
为什么不定义增删改查的抽象方法:传入参数不同

public abstract class ConnectSQLServer implements ConnectDataBase{protected Connection conn;protected String url="jdbc:sqlserver://localhost:1433;DatabaseName=Financing";protected String user="sa";protected String password="123";public void openConnection() {try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");conn=DriverManager.getConnection(url,user,password);} catch (ClassNotFoundException e) {System.out.println("找不到数据库资源");e.printStackTrace();} catch (SQLException e) {System.out.println("数据库连接错误");e.printStackTrace();}}public void closeConnection() {try {conn.close();} catch (SQLException e) {System.out.println("数据库资源关闭错误");e.printStackTrace();}}
}

3、数据库操作具体实现
实现基本的增删改查和格式化操作,具体不作过多描述,届时可参考SQLServer专栏

自定义异常类
1、先写一个父类,继承Exception或RuntimeException
实现构造方法和getMessage方法

public abstract class BaseException extends Exception{private String message;public BaseException(String msg){this.message = msg;}public String getMessage() {return message;}}

2、自定义异常

public class MoneyFormatException extends BaseException{public MoneyFormatException(String msg) {super(msg);}    public static class unNumExecution extends BaseException{//非数字public unNumExecution(String msg) {super(msg);}public String getMessage(String msg){return msg;}}}

3、具体调用

try {if (!isNum(txt1.getText())) {throw new MoneyFormatException.unNumExecution("输入非数字金额,有误!");} catch (unNumExecution e1) {System.out.println(e1.getMessage());}

整个项目大致就是这样,编程菜鸟,如有不妥,烦请指教

Java课程设计--理财系统相关推荐

  1. java课程设计 考试系统,java课程设计考试系统.

    java课程设计考试系统.Tag内容描述: 1.目 录 第一章第一章 引言引言 3 1 1目的 3 1 2名词解释 3 1 3参考资料 3 1 4文档结构 3 第第 2 章章远景远景 4 2 1项目概 ...

  2. Java课程设计抽奖系统

    Java学习笔记(四) 经过前期环境的搭建,和能够对eclipse的熟练使用 而且在学习了for.while.do-while等循环.if语句.switch语句.数组.String类之后,现在开始创建 ...

  3. Java课程设计——家庭理财管理系统(SpringMVC+Mybatis+LayUI)

    Java课程设计--家庭理财管理系统SpringMVC+Mybatis+LayUI 1 前言 2 需求与功能分析 3 概要设计 4 数据库设计 4.1 E-R图 4.2 数据库的模型图 4.3 各表的 ...

  4. java中国象棋网络对弈,java课程设计---中国象棋对弈系统

    java课程设计---中国象棋对弈系统 1 目目 录录 摘要 1 关键字 1 正文 2 1.程序设计说明. 2 1.1 程序的设计及实现 2 1.1.1搜索引擎的实现(engine包) . 2 1.1 ...

  5. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc

    JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...

  6. ## 大一java课程设计_航班查询系统(我是小白)

    大一java课程设计_航班查询系统(我是小白) 备注:第一个java程序有借鉴别人的成分,因为忘了在哪个大佬上面借鉴的,所以在此备注,如有侵权,请联系删除,(仅用于学习使用,并未想盈利) 框体介绍 一 ...

  7. 用java做小学数学系统_小学生数学练习题目自动生成系统——java课程设计

    <小学生数学练习题目自动生成系统--java课程设计>由会员分享,可在线阅读,更多相关<小学生数学练习题目自动生成系统--java课程设计(37页珍藏版)>请在金锄头文库上搜索 ...

  8. 【Java课程设计】商品仓库管理系统jsp+servlet+mysql仓库管理系统

    软件环境 idea,jdk8,mysql8,tomcat8 技术栈 后端:jsp+servlet+jdbc 前端:html+js+css+layui 拓展 本项目虽然是导入在webapp/WEB-IN ...

  9. 简易抽奖系统(Java课程设计/大作业)

    简易抽奖系统(Java课程设计/大作业) package 简易抽奖系统; import java.awt.*; import java.awt.event.ActionEvent; import ja ...

最新文章

  1. 深入Jetty源码之Servlet框架及实现(AsyncContext、RequestDispatcher、HttpSession)
  2. paddleocr 训练自己的数据
  3. 详解Paint的各种set方法
  4. java 生成缩略图类_JAVA生成【缩略图】方法
  5. jvm内存模型和java内存模型_JVM运行时内存模型综述
  6. javascript入门_您需要一个JavaScript入门工具包
  7. resnet结构_来聊聊ResNet及其变种
  8. NYOJ--218--Dinner(含题目意思)
  9. C# 编程指南-事件
  10. 如何做好信息化和数字化建设,看这一篇就够了--童亚斋
  11. 很火的清新PHP在线扒站程序源码
  12. react视频教程经典大全
  13. 史上最全人工智能英文原版PDF教材1.03G资源包Artificial Intelligence
  14. 学习笔记【机器翻译评测指标】
  15. 计算机专业的优秀学长寄语大一新生,学长对大一新生的寄语
  16. 公司新产品之我见(1)——智能家居中的无线充电/供电设备
  17. 安装caffe中间遇到的一些问题
  18. 一家之言:说说 JavaScript 的类成员的访问控制
  19. 新手解决Connections could not be acquired from the underlying database!Java代码上传到服务器连接不上数据库
  20. T-SQL 基础学习 01

热门文章

  1. Android---仿QQ空间动态九宫格图片预览(一)
  2. metronic php 后台,发一个自己写的通用后台(Yii2+metronic_v4.5.6)
  3. AccessHelper.cs
  4. 服务器芯片输出接口,服务器内存接口芯片
  5. 上海亚商投顾:沪指失守3100点 教育板块逆势大涨
  6. PC端、移动端响应式布局的常用解决方案对比(媒体查询、百分比、rem和vw/vh)
  7. Hibernate最新英文资料翻译整理
  8. 时间序列预测07:如何开发LSTM实现时间序列预测详解 01 Univariate LSTM
  9. x86具体指的是什么呢?
  10. 软考考完了,如何评职称?