zzuli大一实训——个人记账管理系统
目 录
前言
此项目用Java语言编写,利用mysql的jar包连接数据库。
同时利用maven构建工具添加以下4个jar包(也可以手动添加)
java源代码以及数据库代码跳转到:个人记账管理系统实训代码https://github.com/Rosen6663/Personal-bookkeeping-management-system
1 系统需求分析
移动互联网时代,移动支付成为人们不可分割的一部分。不知道从什么时候开始,现金支付方式已经式微,升级为了移动支付,基本上人们出门只要带一部手机,就能走遍大江南北了。从线上到线下,从家庭日常水电气话费支付到交通、旅游、酒店、餐饮,移动支付凭借其高效便捷的支付体验,打破了传统支付方式在空间上、时间上的局限性,不仅方便了百姓生活,推动了社会进步,还提升了中国的金融科技水平。虽然带来了许多的便利,但是也在不知不觉中让人们忘却真实金钱”状态和柴米油盐重量,时常感慨“钱都去哪了”,数字支付下的金钱“虚无感”逐渐成为人们的“通病”。为了减少这种情况,市场对个人记账软件的需求越来越大。
1.1 系统功能需求分析
1.1.1 额度警告功能
为了防止在不知不觉中花费的额度过多,因此个人记账系统需要有着月或周超额警告的功能。
1.1.2 多平台记账功能
如今支付方式越来越多,支付宝,微信,银行卡等众多支付方式,让人们不再满足单个平台记账,因此个人记账系统需要满足多平台记账统计。
1.1.3 人机交互界面
具有良好的人机交互界面,方便用户,高效便捷的使用
1.1.4 管理功能
能够对系统用户,账户,科目,记账记录以及记账本实现增删改查功能,让用户使用便利
1.2 系统非功能需求分析
1.能够对大量,复杂的数据进行却处理和查询。
2.能够支持打印出excel表格,导入导出功能
3.系统可以面向多名用户,将不同用户的数据隔离,保户支持多账户使用
4.系统应具有良好的拓展性和兼容性
2 系统设计
2.1 系统功能模块划分
本系统具有以下几个功能模块:用户登录模块、用户注册模块,记账管理模块、账户管理模块、收支科目管理模块、财务报表模块,超额预警模块、个人信息管理模块。系统总体框架如图2-1所示。
图2-1 系统总体框架
各模块具体的需求描述如下:
1.用户登录模块
实现用户登录,验证账户和密码是否正确。
2.用户注册模块
实现用户注册,添加到数据库,实现用户与用户之间信息隔离
3.记账管理模块
记账管理模块分为2个部分:支出信息,收入信息
支出信息:基本功能(增、删、改、查、导入和导出功能),支出信息(支出金额,支出使用的账户,支出消费的类别,支出发生日期,备注);
收入信息:基本功能(增、删、改、查、导入和导出功能),收入信息(收入增加的账户,收入的来源科目,收入发生日期,备注)
注意:记账科目之间要实现收支平衡,支出科目增长(减少)的金额即资产账户余额减少(增长)的金额。
4.账户管理模块
资金存放位置管理
账户类别的管理:账户类别有资金账户(现金,支付宝,微信)
、储蓄卡、信用卡、充值账户(饭卡、公交卡,各种店铺充值卡)、投资账户(比如股票账户、余额宝等)、债务(负债,债权)、自定义资产等。
对账户的对个人账户增、删、改、查、导入和导出,统计功能
5.收支科目管理模块
支出收入途径的管理
科目管理:增、删、改、查、导入和导出功能
科目管理分为:收入科目,支出科目
收入科目:工资收入、利息收入、加班收入、经营所得、奖金收入
支出科目:食品酒水(下设:早午晚餐、烟酒茶、水果零食等)、衣服饰品(下设:鞋帽包包、衣服裤子、化妆饰品等)、行车交通(下设:公共交通、打车租车、私家车等)、交流通讯(下设:手机费、上网费、座机费、邮寄费等)、休闲娱乐(下设:运动健身、腐败聚会、休闲玩乐、度假旅游等)、学习进修(下设:书报杂志、培训进修等)、人情往来(下设:送礼请客、孝敬家长、慈善捐助、还人钱物等)、医疗保健(下设:药品费、保健费、美容费、治疗费等)、居家物业(下设:日常用品、水电煤气、房租、物业管理、维修保养等)等、金融保险(按揭还款等)、其他(意外丢失等)。
6.财务报表模块
实现用户对已经记录的账目信息进行查询,编辑,添加,打印,导出等操作。
选择查询某一时间点或时间段的记账信息,其中信息要包括账户、收入、支出、科目类别,也可以对账表历史记录进行修改。
7.超额预警模块
当本月或本周等支出超过一定金额,给予提示
- 个人信息管理模块
实现修改个人信息,修改密码推出登录功能
2.2 数据库设计
个人记账管理系统在数据库设计上主要包含用户管理信息表、帐户信管理息表、科目管理表、收支流水信息管理表、超额警报管理表和财务报表信息表。E-R图如图1-1,1-2,1-3,1-4,1-5,1-6,1-7,1-8,1-9,1-10所示。
图1-1 用户的E-R图
图1-2 账户的E-R图
图1-3 收入记账的E-R图
图1-4 支出记账的E-R图
图1-5 收入大类科目的E-R图
图1-6 收入小类科目的E-R图
图1-7 支出大类科目的E-R图
图1-8 支出小类科目的E-R图
图1-9 账单的E-R图
图1-10 警告的E-R图
用户管理信息表主要用于维护系统操作人员数据,增添新用户和老用户隔离信息;帐户管理信息表主要用于管理不同类型的收支账户类型,账户管理信息维护者收支流水信息表的账户;科目管理表包含四张表收入大类表维护这收入小类表,收入小类表又维护着收入流水信息表的收入科目,支出大类表维护这支出小类表,支出小类表又维护着支出流水信息表的支出科目;收支流水信息管理表包含两张表收入记账信息,支出记账信息;超额警报管理表用于警告周或月的支出超额,财务报表记信息表用于统计周或月的收支记录;下面将逐一分析设计各信息表的表结构。
2.2.1 用户管理信息表
用户信息表使用来记录用户的账户,密码以及基本信息,其中用户表的uuserid在注册后会作为其他表的主码之一,让用户与用户之间的信息隔离,实现多用户正常使用。用户信息表的结构如表2-1所示。
表1-1 用户信息表user
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码 |
upassword | 登录密码 | char | 20 | |
uname | 用户名 | char | 20 | |
usex | 性别 | char | 2 | |
realname | 真实姓名 | char | 6 | |
createtime | 创建日期 | date |
2.2.2 帐户信息管理表
账户信息管理表用来记录用户在各个平台的账户信息,保证收支记账信息有可以使用的账户,以账户和账户名为主键,隔离账户,保证账户名不重复。账户类型以整型标识,1为现金,2为支付宝,3为微信,4为银行卡,5为股票,6为债务,7为充值卡,8为其他可其他添加账户。具有利率开始日期的信息,因为当转出金额时候,应该以转出金额的时间点重新开始计算利率积攒天数。账户管理信息表的结构如表2-1所示。
表2-1 账户信息表account
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码 |
accounttype | 账户类型 | int | ||
accountname | 账户名 | char | 20 | 主码 |
money | 本金 | double | ||
lilv | 利率 | double | ||
createdate | 创建日期 | date | ||
lilvstart | 利率开始计算日期 | date |
2.2.3 科目管理表
科目管理表为了将收入和支出的记账记录细分类别,存在大类存在小类,在注册账户时候会自动添加默认好的科目。而科目管理表又细分为收入大类科目,收如小类科目,支出大类科目,支出小类科目;收入大类科目结构如表3-1所示。收入小类科目结构如表3-2所示。支出大类科目结构如表3-3所示。支出小类科目结构如表3-4所示。
表3-1 收入大类科目表shourukemu
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码 |
bigkemu | 大类科目 | char | 20 | 主码 |
表3-2 收入科目表shouruzikemu
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码,外码 |
bigkemu | 大类科目 | char | 20 | 主码,外码 |
zikemu | 小类科目 | char | 20 | 主码 |
3-2的账户和大类科目外码约束3-1的账户和大类科目,保证大类科目存在才存在小类科目
表3-3 支出大类科目表zhichukemu
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码 |
bigkemu | 大类科目 | char | 20 | 主码 |
表3-4 收入科目表zhichuzikemu
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码,外码 |
bigkemu | 大类科目 | char | 20 | 主码,外码 |
zikemu | 小类科目 | char | 20 | 主码 |
3-4的账户和大类科目外码约束3-3的账户和大类科目,保证大类科目存在才存在小类科目
2.2.4 收支流水信息管理表
收支流水保存着每笔收支出记账的账户信息,金额,收支科目,收支时间,备注。并且与账户和科目表相约束,保证账户和科目都存在。收支流水信息又细分为收入记账表和支出记账表。收入记账表结构如表4-1所示,支出记账表结构如表4-2所示。
表4-1 收入记账表injizhang
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码,外码1,2,3 |
accountname | 账户名 | char | 20 | 外码1 |
bigkemu | 大类科目 | char | 20 | 外码2,外码3 |
zikemu | 小类科目 | char | 20 | 外码3 |
money | 金额 | double | ||
createdate | 收入时间 | datetime | 主码, | |
beizhu | 备注 | char | 20 |
由4-1表,账户,账户名作为外码1约束账户表中的账户和账户名。账户和大类科目作为外码2约束收入科目表中的用户名和大类科目。账户,大类科目,小类科目约束收入小类科目表的账户,大类科目,小类科目。
表4-2 支出记账表outjizhang
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码,外码1,2,3 |
accountname | 账户名 | char | 20 | 外码1 |
bigkemu | 大类科目 | char | 20 | 外码2,外码3 |
zikemu | 小类科目 | char | 20 | 外码3 |
money | 金额 | double | ||
createdate | 收入时间 | datetime | 主码 | |
beizhu | 备注 | char | 20 |
由4-2表,账户,账户名作为外码1约束账户表中的账户和账户名。账户和大类科目作为外码2约束支出科目表中的用户名和大类科目。账户,大类科目,小类科目约束支出小类科目表的账户,大类科目,小类科目。
2.2.5 超额警报管理表
超额警报管理表为了保证本周或本月支出的金额,不会超出预定金额。内部存储警告类型和警告金额,警告开关。超额警报管理表的结构如5-1表所示
表5-1 超额警报表jinggao
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码 |
money | 额度 | double | ||
kaiguang | 开关状态 | boolean | ||
type | 警报类型 | int | 主码 |
当类型为1时为月警告,2为周警告。在注册账户会自动为用户添加一行类型为1,一行类型为2的警告。
2.2.6 财务报表信息表
财务报表把一周或一个月或全部记账导出到一个表中,此表应该具有收支流水信息的大部分信息。财务报表的具体结构如表2-6所示
表6-1 财务报表信息表zhangdan
字段名 | 中文描述 | 数据类型 | 长度 | 备注 |
uuserid | 账户 | char | 20 | 主码 |
zahndanname | 财务报表名 | char | 20 | |
type | 报表类型 | char | 4 | 收入或支出 |
accountname | 账户名 | char | 20 | |
kemu | 科目 | char | 40 | |
money | 流水金额 | double | ||
createtiem | 创建日期 | datetime |
2.3 类和接口设计
2.3.1 注册类设计
1.首先连接数据库
2.将图形化界面做好,用JLable类和JTextfield组合,一个提示用户将自己的信息填入文本输入框内。在最后一个按钮点击确认。性别时利用jcombox类选择男或女。
3.逻辑设计:点击确认后获取各个文本框内容,判断账户和密码是否为空,为空则会出现账户和密码不能为框的提示框,否则再判断是否账户已经存在,存在则弹出用户已存在,否则
则将输入的用户信息传入数据库,添加到user表中。将已经预先设定好的科目传到数据库的科目表中,把周警告月警告初始化添加的警告表中。然后弹出注册成功,关闭注册页面,跳转到登录界面
2.3.2 登录类设计
1.首先连接数据库
2.将图形化界面做好,用JLable类和JTextfield组合,一个提示用户将账户和密码填入文本输入框内。在最后一个按钮点击确认。
3.逻辑设计:点击登录后,先获取文本框的账户和密码,先判断账户是否为空,为空弹出账户不能为空的提示。否则再判断密码是否为空,为空则弹出密码不能为空否则获取与数据库的账户和相比较,如果没有相同的弹出账户和密码错误,否则再验证该账户的密码是否相同,不同则弹出账户或密码错误,否则弹出欢迎***(账户名)进入系统。关闭登录页面,跳转到管理页面,并把账户传给管理界面。
2.3.3 管理页面设计
1.首先连接数据库
2.设置两个面板p1,p2。p1面板为管理面板,进入时候打开的时记账管理类,p2面板为跳转面板。p2面板为6个灰色颜色,不同图案按钮,每点击不同按钮p1全部移除打开对应的jpanel的子类添加显示。并且点击按钮后会把p2面板重新绘制,将点击的哪个按钮变成绿色。点击按钮1,显示记账管理类,点击按钮2,显示账户管理类,按钮3,显示科目管理类,按钮4,显示账单管理类,按钮5,显示警告管理类,按钮6,显示个人信息管理类.
3.打开管理面板后会开始警报线程。开始线程后查询数据库查询周警告和月警告是否开启,不停查询,当其中一个打开或者都打开时候,进入循环,查询数据库中的周警告和月警告的额度,并且判断本周支出和本月支出的是否超过,如果超过则会弹出对应警告,然后把对应警告的开关关闭。
2.3.4 记账管理类
继承JPanel类,作为管理页面设计的一个面板
- 连接数据库
- 设置上面的面板,上面有着背景,背景上JLable贴着总资产为**,债务为**,净资产为**。总资产需要获取数据库account里所有除债务以外的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。债务需要获取数据库account里所有债务的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。最后净资产时总资产-债务,最后显示
- 设置增删改查导入导出的按钮。
- 添加记账:点击添加一条记账先,先查询数据库所有账户,装入jcombox内,然后让你选择账户和流水方向。然后确认后会查询数据库对应流水方向的科目,放入jcombox中让你选择,选择后填入l流水金额,备注,就可以将填入和选择的信息传入数据库中,并且将对应账户的金额添加。并且添加时会是是以加过利率的金额加上(减去)添加的金额,再把利率计算日期设置本次转账的日期。然后刷新上面面板,刷新金额。
- 删除记账:首先选择收入记账还是支出记账,查询对应的记账,如果查询不到会弹出对不起,不存在记录,否则将再数据库查询的信息放入jcombox中,选择那一条记账记录,最后将对应的数据从数据库中删除。删除也会将对应账户的金额也会变化。然后刷新上面面板,刷新金额。
- 修改记账:首先选择收入记账还是支出记账,查询对应的记账,如果查询不到会弹出对不起,不存在记录,否则将再数据库查询的信息放入jcombox中,选择那一条记账记录,输入要修改的金额,点击确认后修改数据库对应记账记录的金额。修改也会将对应账户的金额也会变化。然后刷新上面面板,刷新金额。
- 查询记账:首先选择收入记账还是支出记账,查询对应的记账,如果查询不到会弹出对不起,不存在记录,否则将数据库查询的信息放入table中放入jscrollpane面板中显示出来。
- 导出:利用maven导入的poi的jar包,利用其中的HSSFWorkbook类创建一个excel,然后创建一个HSSFSheet对象即创建的一个表。获取第一行,把行获取的每一列写入表头。再把数据库收入的信息写入下面的行和列内。之后再为支出创建个表,用同样的方法写入支出信息
- 导入:利用maven导入的poi的jar包,输入想要导入excel文件的绝对路径,判断是否存在,如果不存在提示文件不存在,再判断改excel是否在使用如果在使用则提示excel打开了,正在使用,否则对该文件创建一个字节输入流,将字节输入流作为HSSFWorkbook类的参数获取本excel,然后用HSSFSheet获取收入表,之后用getlastrownum方法获取一共多少行,for循环把数据导入java,再导入数据库内。然后在于HSSFSheet的对象接受本excel的支出表,再用同样的方法导入数据库。然后刷新上面面板,刷新金额。
2.3.5 账户管理类
1.连接数据库
2.设置上面的面板,上面有着背景,背景上JLable贴着总资产为**,债务为**,净资产为**。总资产需要获取数据库account里所有除债务以外的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。债务需要获取数据库account里所有债务的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。最后净资产时总资产-债务,最后显示
3.设置增删改导入导出的按钮,再设计八个大按钮写着微信,支付宝等八个类型作为查询按钮,点击即可查询对应类型的账户类型
4.增加账户:弹出八个按钮,按钮图片变成对应账户的图片,点击后选择后会让你填写,名称(默认为账户类型名称),本金,利率(现金为0,无法修改)。确认后添加到数据库中。然后刷新上面面板,刷新金额。
5.删除账户,jcombox选择账户类型,点击确认后从数据库把对应账户的信息导入jcombox中选择后,点击确认后,因为数据库记账约束,如果记账中有这个账户将无法删除,否则把对应的数据删除。然后刷新上面面板,刷新金额。
6.修改数据:删除账户,jcombox选择账户类型,点击确认后从数据库把对应账户的信息导入jcombox中。如果没有数据则弹出账户不存在,否则选择后,点击确认把数据库中对应删除。然后刷新上面面板,刷新金额。
7.查询,点击想要查询账户的按钮,将数据库中对应数据类型的数据放在表格中,显示出来。
8.导出:利用maven导入的poi的jar包,利用其中的HSSFWorkbook类创建一个excel,然后创建一个HSSFSheet对象即创建的一个表。获取第一行,把行获取的每一列写入表头。再把数据库账户的信息写入下面的行和列内。
9.导入:利用maven导入的poi的jar包,输入想要导入excel文件的绝对路径,判断是否存在,如果不存在提示文件不存在,再判断改excel是否在使用如果在使用则提示excel打开了,正在使用,否则对该文件创建一个字节输入流,将字节输入流作为HSSFWorkbook类的参数获取本excel,然后用HSSFSheet获取收入表,之后用getlastrownum方法获取一共多少行,for循环把数据导入java,再导入数据库内。然后刷新上面面板,刷新金额。
2.3.6 科目管理类
1.连接数据库
2.设置上面的面板,上面有着背景,背景上JLable贴着总资产为**,债务为**,净资产为**。总资产需要获取数据库account里所有除债务以外的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。债务需要获取数据库account里所有债务的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。最后净资产时总资产-债务,最后显示
3.设置收入和支出大类科目的增删改查各四个按钮,设置收入和支出大类科目的小删改查各四个按钮。添加导入和导出的按钮。
4,增加科目
点击大类增加,输入添加大类后,点击后读取数据,传入大类科目数据库中。
点击小类增加后,首先查询数据库中存在的大类放入jcombox中,然后选择大类,输入小类名称,再点击确认,传入小类科目数据库中
5.删除科目
点击大类删除后,会查询数据库的大类名称,放入jcombox中,然后选择要删除的大类,因为数据库约束了,如果小类中用了此大类,则有小类在使用此大类,否则从数据库中删除
点击小类删除后,会查询小类数据库中的信息放入jcombox中,选择要删除的小类,因为数据库中约束了,如果小类被记账记录用了,则弹出一条记账记录正在使用此科目,否则从数据库中删除
6.修改科目
点击大类修改后,会查询数据库的大类名称,放入jcombox中,然后选择要修改的大类,输入要修改的名称,因为数据库约束了,如果小类中用了此大类,则弹出有小类在使用此大类,否则从数据库中修改
点击小类修改后,会查询小类数据库中的信息放入jcombox中,选择要修改的小类,输入要修改的小类名称,因为数据库中约束了,如果小类被记账记录用了,则弹出一条记账记录正在使用此科目,否则从数据库中修改
7.查询科目
将对应科目的数据查询放入table中显示出来
8.导出:利用maven导入的poi的jar包,利用其中的HSSFWorkbook类创建一个excel,然后创建一个HSSFSheet对象即创建的一个表。获取第一行,把行获取的每一列写入表头。再把数据库账户的信息写入下面的行和列内。同样支出科目在创建第二个表再台南佳
9.导入:利用maven导入的poi的jar包,输入想要导入excel文件的绝对路径,判断是否存在,如果不存在提示文件不存在,再判断改excel是否在使用如果在使用则提示excel打开了,正在使用,否则对该文件创建一个字节输入流,将字节输入流作为HSSFWorkbook类的参数获取本excel,然后用HSSFSheet获取收入表,之后用getlastrownum方法获取一共多少行,for循环把收入科目数据导入java,再导入数据库内,支出数据则获取本excel的第二个表即可。然后刷新上面面板,刷新金额。
2.3.7 账单管理类
1.首先连接数据库。
2.设置增删查导入导出的按钮。
3.添加账单:添加账单支持全部把记账记录导出为一个账单,也支持把本周记账记录导出为一个账单。利用sql语句的datetime的一些方法获取本周,上周等时间,再where中现在即可实现。
4.删除账单:将查询的账单名distinct后,如果没有则弹出不存在账单,否则放入jcombox中,然后选择后,删除。
5.查询账单:把查询的账单信息放入jtable中显示出来。
6.导出:利用maven导入的poi的jar包,利用其中的HSSFWorkbook类创建一个excel,然后创建一个HSSFSheet对象即创建的一个表。获取第一行,把行获取的每一列写入表头。再把数据库账单的信息写入下面的行和列内。
7.导入:利用maven导入的poi的jar包,输入想要导入excel文件的绝对路径,判断是否存在,如果不存在提示文件不存在,再判断改excel是否在使用如果在使用则提示excel打开了,正在使用,否则对该文件创建一个字节输入流,将字节输入流作为HSSFWorkbook类的参数获取本excel,然后用HSSFSheet获取收入表,之后用getlastrownum方法获取一共多少行,for循环账单数据导入java,再导入数据库内,。然后刷新上面面板,刷新金额。
2.3.8 警告管理类
1.连接数据库
2.设置上面的面板,上面有着背景,背景上JLable贴着总资产为**,债务为**,净资产为**。总资产需要获取数据库account里所有除债务以外的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。债务需要获取数据库account里所有债务的数据,再计算money+money*(1+利率/100)*(现在时间-利率开始计算时间)的所有和然后显示。最后净资产时总资产-债务,最后显示。
3.设置JLable月警告,周警告。每个下面有jlable:金额,开关:true(false)
获取数据库可以改变金额和开关的数值,再传递到管理界面中,一直执行线程。
每个金额和开关后有个按钮,点击金额后的按钮弹出界面中输入金额确认后,传入数据库,将此面板的金额移除后再重新加入实现刷新的效果。点击开关后的按钮直接将ture和false转变,传入数据库,实现开启警告和关闭警告。
2.3.9 个人信息管理类
将user类里面的信息查询,放在界面上,把密码内容变为*******展示。用户名,性别,真实姓名,密码后面添加修改按钮,点击后除了性别,其他弹出框,输入修改的值确认后,再remove方法实现刷新界面。点击修改性别,直接把男女转换,刷新。
2.3.10 美化类
1.NewButton类
将按钮变成彩色圆角矩形,继承Jbutton方法,构造方法:传入按钮名,绘图x,绘图y,(颜色)。然后使用paintcomponent和pointborder方法,分别绘画内容和边界彩色。
2.MyRoundJtextField类
将输入文本框变为椭圆形继承JTextField方法,使用paintcomponent和pointborder方法,分别绘画内容和边界为椭圆形。
3.MyRoundPasswordtextfield类
将输入密码框变为椭圆形继承JPasswodField方法,使用paintcomponent和pointborder方法,分别绘画内容和边界为椭圆形。
3 系统实现
3.1 注册界面实现
用户在第一次使用时,首先需要注册账户,账户和密码必须填入,其他可选择性填入,性别选择男女,默认为男。注册页面如图3-1所示。
图3-1 注册
当在账户和密码填写为空时候,点击注册会弹出提示框,账户和密码不能为空。弹出框1如图3-2所示。
图3-2 注册界面弹出框1
如果账户已经在数据库存在则会弹出用户已存在。弹出框2如图3-3所示。
图3-3 注册界面弹出框3
当账户和密码都不为空,且账户没有被注册过时,点击注册按钮则会弹出,注册成功的弹出框。然后跳转到登录界面。弹出框如图3-4所示。
图3-4 注册界面弹出框4
再点击login按钮也会跳转到登录界面。
3.2 登陆界面实现
当用户默认进入系统,打开就是登录界面。登录界面如图3-5所示。
图3-5 登录界面
注册的用户可以在登陆界面输入账户和密码以进入系统。当输入账户为空时,会弹出账户为空的弹出框。密码为空时,会弹出密码为空的弹出框,弹出框如图3-6,3-7所
示。
图3-6 登录界面弹出框1
图3-7 登录界面弹出框2
当账户和密码错误时候,会弹出,账户或密码错误。弹出框如图3-8所示
图3-8 登录界面弹出框3
等账户和密码都正确后,登录成功后,会弹出,欢迎***(注册的账户名)使用个人记账系统。然后跳转到管理页面的记账管理界面,弹出框如图3-9所示。
图3-9 登录界面弹出框4
3.3 记账管理界面实现
记账管理界面如图4-1所示。
图4-1 记账管理界面
点击添加一条新记账后,如果没有账户则会提示,没有账户可用来转账。提示如4-2所示。
图4-2 添加记账提示
当添加账户后,出现界面,让你选择用哪一个账户,是要支出还是收入。界面如图4-3所示。
图4-3 添加记账界面1
点击确认选择后,会弹出新界面,并把刚才界面关闭。新界面让你选择要转账的科目,写入金额,写入备注。新界面如图4-4所示。
图4-4 添加记账界面2
如果填写金额为空则会弹出提示,金额不能为空。提示如图4-5所示。否则弹出添加成功。如图4-6所示。
图4-5 添加记账提示1
图4-6 添加记账提示2
添加成功后,金额也会随着变化。如图4-7所示
图4-7 添加后界面所示
点击删除一条记账后弹出界面,选择删除支出还是收入的记账,界面如图4-8所示。若没有记账记录则会弹出没有记账记录。弹出提示如4-9所示。否则选择要删除的记账记录。选择界面如5-1所示。删除后弹出删除成功,弹出界面如5-2所示。同时主界面的金额也会随之变化。
图4-8 删除界面所示
图4-9 删除提示1
图5-1 删除选择记账记录
图5-2 删除成功提示
如果账户在记账信息中使用则为提示无法删除,该账户被流水记账绑定,如图5-3所示。
图5-3 删除提示界面
点击修改后与删除大致相同,但修改在第二个界面需要填写修改金额。界面如图5-4所示。且金额为空点击确认修改,会弹出金额不能为空的提示。
图5-4 记账修改界面
查询界面直接选择收入还是支出后弹出表格显示记账记录,表格如图5-5所示。
图5-5 记账查询表格
点击导出后会弹出导出成功的提示框,如图5-6所示。若excel已经被打开,则会弹出excel真正使用的提示,提示框如图5-7所示。出现一个excel,里面有收入和支出的两个表,收入记账excel表如图5-8所示。
图5-6 记账导出界面
图5-7 记账修改界面
图5-8 导出的excel表所示
导入时候需要输入要导入的excel表的绝对路径。如图5-9所示。如果文件不存在弹出文件不存在的弹出框,如果存在且成功,则弹出成功导入。如图6-1所示。当导入的记账记录其中的账户或科目本账户不存在或记账记录已经存在则会弹出提示,并且无法加入此行,其他行可加入。如图6-2所示。
图5-9 导入入界面
图6-1 导入成功界面
图6-2 无法导入此行界面
3.4 账户管理界面实现
账户管理界面如图6-3所示。
图6-3 账户管理界面
点击添加后弹出八个按钮,点击想要增加的账户类型。如图6-4所示。带你急红眼弹出输入本金,金额,利率。如6-5图片所示。点击后如果存在相同的账户名则会弹出账户已存在,否则弹出增加成功。
图6-4 账户添加界面1
图6-5 账户添加界面2
点击删除后选择要删除的类型,如图6-6所示。改类型不存在账户弹出不存在账户,否则弹出界面选择要删除的账户,点击删除后,显示删除成功。界面如图6-7所示。
图6-6 账户删除界面1
图6-7 账户删除界面2
修改与删除大致相同,但是在选择对象后填入要修改的余额。如图6-8所示。
图6-8 账户修改界面
点击主界面上各个类型的按钮,就会弹出此类型的信息表格。如图6-9所示。
图6-9 账户查询界面
导入导出与记账界面导入导出基本相同。Excel表如图7-1所示。
图7-1 账户导出excel表
3.5 科目管理界面实现
科目管理界面如图7-1所示
7-2 科目管理界面
当带点击收入支出增加大类,填入名称,即可成功。如图7-3所示。
7-3 大类科目增加界面
大类科目删除界面,选择要删除的大类,如果大类已经被小类绑定。如图7-5所示。则提示大类已经被小类绑定。如图7-5所示。否则就删除成功。
图7-4 大类科目删除界面
图7-5 大类科目无法删除提示
大类修改界面,选择大类修改,输入要修改的名字。如图7-6所示如果小类绑定了,大类也会无法修改,弹出图7-5的界面。
图7-6 大类科目修改界面
点击大类查,把大类的信息以表格的状态显示出来。如图7-7所示。
图7-7 大类科目查询界面
点击小类增加,界面要求选择大类,填入要输入小类名称。如图7-8所示。确认后弹出添加成功。
图7-8 小类科目添加界面
点击小类删除。界面要求选择大类小类。如图7-9所示。如果小类被记账信息绑定,无法删除,弹出提示,如图8-1所示。否则则弹出删除成功。
图7-9 小类科目删除界面
图8-1 小类科目无法删除提示
点击小类修改,弹出界面,选择要修改小类,输入要修改的小类名称。界面如图8-2所示。如果小类被记账信息绑定则无法修改,弹出提示框。如图8-3所示
图8-2 小类科目修改界面
图8-3 小类科目无法修改界面
点击小类查询,弹出表格界面,显示小类信息。界面如图8-4所示。
图8-4 小类科目查询界面
点击导出显示导出成功,点击导入,也需要写入绝对路径,与记账管理界面的导入导出的提示一样。导出的excel如图9-5所示。
图8-5 小类导出excel
3.6 账单管理界面实现
账单管理界面如图8-6所示。
图8-6 账单管理界面
点击添加账单如图8-7所示。
图8-7 账单添加界面
点击此界面的账单添加,输入账单名字。如图8-8所示。如果这段时间没有记账记录,则会弹出提示框,例如上周没有记账,如图8-9所示。否则他拿出添加成功。且当输入为空时,弹出输入不能为空。
图8-8 账单添加界面1
图8-9 账单不能添加提示
点击删除账单弹出界面,如图9-1所示,如果没有账单会弹出不存在账单。
图9-1 账单删除界面
点击查询账单,表格显示所有账单信息。显示界面如图9-2所示。
图9-2 账单删除
导出导入账单与记账管理的导入导出的界面相同,记账excel的表格如图9-3所示。
图9-3 账单excel查询
3.7 警报界面实现
警报界面如图9-4所示。
图9-4 警报界面
带警告金额后修改按钮,弹出输入框。界面如图9-5所示。点击警告开启状态后,flase会变成true,true会变成flase。输入后界面金额也会随着改变。改变界面如图9-6所示。
图9-5 修改警报金额
图9-6 警报金额修改点击后
3.8 用户管理界面实现
用户管理界面如图9-7所示。
图9-7 用户管理界面
用户名和真实姓名后点击修改后弹出界面,输入要修改的内容。界面如图9-8所示。点击性别后的修改按钮直接修改。出现修改密码的界面,界面如图9-9所示。点击密码修改按钮,输入原密码,若原密码错误,会弹出原密码错误,之后修改密码应该输入两次,输入弹出两次输入密码不同。点击退出登录回到登陆界面。
图9-8 用户修改信息界面
图9-9 用户修改密码界面
4 系统测试
(1)测试个人记账管理系统是否能够正常的运行,各个功能模块是否按需求开发完成。
(2)点击个人记账管理系统的各个功能模块,看各功能模块是否能正常运行,是否具有不错的用户交互性。
(3)对每个功能模块的数据验证,对功能模块进行增、删、改、查操作,看数据操作和显示是否正确,系统运行是否正常。
(4)测试系统的检索功能,看是否能否按照检索条件检索出满足条件的数据。
测试个人记账管理系统是否达到预期需求目标,系统的各个功能模块是否能够正常稳定的运行。个人记账管理系统测试用例如下表6-1所示。
表6-1 测试用例
序号 | 模块名称 | 用例描述 | 操作过程及数据 | 预期效果 |
1 | 用户注册 | 测试用户能否成功注册用户到数据库内 | 在注册界面输入账户密码及一些信息,点击注册 | 是否成功将账户加入数据库,且非法注册提示显示。 |
2 | 用户登录 | 测试用户能否成功登陆个人记账管理统 | 在用户登录界面,输入用户名、密码和验证码,点击登录。 | 登录验证合法 用户能登录进系统,非法用户显示用户名或密码不正确。 |
3 | 记账管理 | 测试是否能正确增删改查导入导出记账记录 | 增删改查导入导出记账记录,界面的金额也随之变化 | 正确的增删改查记账记录,对无账户,无科目,弹出提示。导入导出excel表是否成功,界面的金额也随之变化 |
4 | 账户管理 | 测试是否能正确增删改查导入导出账户 | 增删改查导入导出账户,界面的金额也随之变化 | 正确的增删改查账户,弹出提示。导入导出excel账户,界面的金额也随之变化,对于绑定记账的账户无法删除 |
5 | 科目管理 | 测试是否能正确增删改查导入导出大类,小类科目 | 增删改查导入导出大类小类科目 | 正确的增删改查科目,弹出提示。导入导出excel科目,界面的金额也随之变化,对于绑定记账的科目无法删除的提示 |
6 | 账单管理 | 测试是否能正确增删改查导入导出账单 | 增删查导入导出账单 | 正常增删改查科目,弹出提示。导入导出excel账单 |
7 | 警报实现 | 测试在开启警报后,支出金额后是否警报 | 设置金额,开启警报后,让支出大于设置金额看是否会有提示 | 设置金额,开启警报后,支出大于设置金额时有提示 |
8 | 用户管理界面 | 测试是否正常修改个人信息以及密码,是否能正常推出 | 点击修改后输入信息看是否成功,点击退出登录按钮 | 成功修改和成功退出。 |
5 实训总结
做项目首先要查找与项目有关的资料与信息,在借鉴已经存在的项目,做出需求分析的考虑后,满足项目需求上再补充新功能,全面考虑,对不同的非法行为及时做出提示和警告。在满足逻辑之后,美化前端界面,实现良好的人机交互界面。