个人原创,需要全部代码私聊QQ;987046009
摘 要
随着科技的进步与发展,现在的企业越来越庞大,要管理的资金数目也越来越多,以前古老的人工财务管理已经远远无法满足现代企业的财务管理需求,人工统计效率低下,还特别容易出错,同时很多账目难以查询,想查看账目的出入比较困难,而且纸质版的账目容易丢失损坏,对于账目的保存也特别麻烦。随着科技的发展,计算机开始应用于各大企业,大大提高了工作效率,降低了错误发生几率,同时也增强了企业内部的沟通,让企业运营起来也更加顺畅。
本系统的开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。本系统使用MySQL建立数据库后台,使用JavaFX、JAVA进行前台界面和处理程序的开发,前者建立成数据一致性和完整性强、数据安全性好的数据库,而后者具有应用程序功能完备,易使用等特点。实现了的对财务数据的增删改查等基本功能。
关键词:公司财务管理;Java;MySQL
目 录
第2章 系统需求分析...................................................................................... 2
2.1开发环境和软件..................................................................................... 2
2.3 MYSQL数据库...................................................................................... 2
2.4系统功能分析......................................................................................... 2
3.1系统功能结构设计................................................................................. 2
3.2数据库概念结构设计............................................................................. 2
3.3数据库逻辑结构设计............................................................................. 2
4.1用户登录界面......................................................................................... 2
4.2主要功能界面......................................................................................... 2
4.2.1功能选择界面............................................................................... 2
4.2.2添加界面....................................................................................... 2
4.2.3添加界面具体情况....................................................................... 2
4.2.4修改界面....................................................................................... 2
4.2.5修改界面具体情况....................................................................... 2
4.2.6删除界面....................................................................................... 2
4.2.7删除界面具体情况....................................................................... 2
4.2.8查询界面....................................................................................... 2
第1章 绪论
1.1研究背景
随着当今科学技术的飞速发展,尤其是计算机技术的出现,使得人类进入了信息化社会,利用计算机,可以代替人进行很多复杂劳动,从而节省大批的人力,可以大大提高工作效率,而且计算机有更高的准确性和更安全的保密措施。计算机技术凭着自己无与伦比的优越性,已经迅速成为各个领域不可或缺的工具。在各行各业中离不开数据处理,这正是计算机被广泛应用于数据库管理系统的环境。计算机的最大好处在于利用它能够进行数据管理。使用计算机进行数据控制,不仅提高了工作效率,而且大大的提高了其安全性。
近年来,IT行业迅猛发展,计算机应用程序深入各行各业,而企业中,财务管理系统已经是企业不可缺少的得力助手,在企业单位中,内部成员之间的信息沟通变得快速简洁,大大提高了工作效率。所以企业财务管理系统在各个企业中的管理中扮演着越来越重要的角色,渐渐的起到了不可替代的核心作用。那么怎样在现有经营模式下选择最好的财务管理模式,使用最合适的财务管理系统,实现公司的高效管理目标,适应公司信息化发展的需要,是一个值得研究和探讨的问题。
1.2开发意义
中小企业在我国经济发展中具有重要地位,目前我国的中小企业数量较多、地区分布广泛、行业分布跨度大,随着全球经济一体化的发展及中国加入WTO,中小企业将面临外资企业和国外产品与服务的严峻挑战。比较而言,外资企业具有更为雄厚的资金实力、丰富的管理经验和先进的技术手段,因此,如果我国的中小企业不借助先进的管理思想转变经营观念、使用信息化提高企业的管理水平和工作效率,将很难在今后的国际竞争中取胜。然而企业管理在很多方面、很大程度上都必须借助信息化来完成,而我国中小企业的信息化水平还很低,与外资企业相比,还处于起步阶段。
随着企业业务的拓展,财务管理系统会变得越来越复杂,用传统的管理方法极易造成不必要的错误,由此带来的损失无法估量。因此实现财务管理的自动化势在必行。财务管理系统的开发不仅可以减少员工的工作量,还可以为企业节约许多的人力物力财力,可以使企业向科学化、现代化、规范化的方向发展,提高企业的生产效率。
第2章 系统需求分析
2.1开发环境和软件
(1) 操作系统:Windows 10
(2) 数据库软件:MySQL
(3) 开发工具:IDEA
2.2 JavaFX与JAVA
JavaFX是用于构建富互联网应用程序的Java库。 使用此库编写的应用程序可以跨多个平台一致运行。使用JavaFX开发的应用程序可以在各种设备上运行,如台式计算机,手机,电视,平板电脑等。要使用Java编程语言开发GUI应用程序,程序员依赖于诸如高级窗口工具包(AWT)和Swings之类的库。在JavaFX出现之后,这些Java程序开发就可以有效地利用丰富的类库来开发GUI应用程序。
要开发具有丰富特性的客户端应用程序,程序员过去依赖于各种库来添加诸如媒体,UI控件,Web,2D和3D等功能。JavaFX将所有这些功能包括在单个库中。除了这些,开发人员还可以访问Java库的现有功能。
JavaFX提供了一组丰富的图形和媒体API,并通过硬件加速图形利用现代图形处理单元。JavaFX还提供了接口,开发人员可以使用它们组合图形动画和UI控件。
可以使用JavaFX和基于JVM的技术,如Java,Groovy和JRuby。 如果开发人员选择JavaFX,没有必要学习额外的技术,因为任何上述技术的先前知识将足以开发使用JavaFX的RIA。
2.3 MYSQL数据库
数据库技术是计算机软件的一个重要分支,它产生于20世纪60年代,最早是由IBM公司推出的IMS数据库系统。数据库技术从开始到现在大致经历了三个阶段,分别是:人工管理阶段、文件管理阶段和数据库管理阶段。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
MySQL是一个快速、多线程、多用户的SQL数据库服务器,其出现虽然只有短短的数年时间,但凭借着“开放源代码”的东风,它从众多的数据库中脱颖而出,成为PHP的首选数据库。除了因为几乎是免费的这点之外,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等都是PHP选择MySql的主要原因。下面,就让我们来看看MySql数据库的主要特征。
MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySQL能很容易充分利用CPU。
MySQL可运行在不同的操作系统下。简单地说,MySQL可以支持Windows95/98/NT/2000以及UNIX、Linux和SUN OS等多种操作系统平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。
MySQL有一个非常灵活而且安全的权限和口令系统。当客户与MySQL服务器连接时,他们之间所有的口令传送被加密,而且MySQL支持主机认证。
MySQL支持ODBC for Windows。MySQL支持所有的ODBC 2.5函数和其他许多函数,这样就可以用Access连接MySQL服务器,从而使得MySQL的应用被大大扩展。
MySQL支持大型的数据库。虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySQL可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,MySQL可以针对不同的应用进行相应的修改。
MySQL拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。事实上,MySQL的稳定性足以应付一个超大规模的数据库。
强大的查询功能。MySQL支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。
MYSQL的缺点:
MYSQL是小型数据库,既然是小型就有他根本的局限性:
(1)MYSQL难担当大系统的数据仓库,运行速度慢
(2)不够稳定,有掉线的情况。
2.4系统功能分析
公司财务管理系统,可用于公司财务的信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用java语言编写,用MySQL数据库作为后台的数据库进行信息的存储,用SQL语句完成各个部门的信息的添加,查询,修改,删除的操作以及拨款通知单、财务核算表的录入,修改,删除等。用JDBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,安全性好。MySQL数据库高效安全,两者结合可相互利用各自的优势。
该系统实现的大致功能:
用户登陆界面。在该界面,用户通过唯一的账号密码进入程序,系统自动与数据库的用户名和密码比对,无误后可进入系统。
添加界面:对数据库中的各个实体实现添加功能,能实现反复添加,各实体对应的编号ID是数据库自动获取,避免了主键的重复。
修改界面:该界面中通过输入实体的编号后获取实体的全部信息,管理员通过对相应的数据进行修改后再将数据重新写入数据库。
删除界面:该界面中用户首先点击查询该实体的全部信息,然后可通过输入要删除信息的编号来完成数据的删除。
查询界面:用户首先点击全部查询,在相应的窗口会显示该实体的全部信息。也可以输入要查询信息的编号来查询单个信息。
第3章 系统设计
3.1系统功能结构设计
公司财务管理系统在登录界面输入正确的账号和密码后即可进入系统,首先是功能选择界面,功能选择界面分为添加、修改、删除和查找。选择不同功能后可进入相应界面再次选择具体要修改的表进行操作,具体流程图如下:
图3.1 系统功能结构图
3.2数据库概念结构设计
图3.2数据库概念结构图
3.3数据库逻辑结构设计
财务部表包含职位名称、职位编号、职位领导、职位薪资、职位人数、出纳员编号、核算员编号、分析员编号、各属性具体情况如下:
表3.1 财务部表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
de_name | Varchar(5) | 非空 | 职位名称 | |
de_id | int | 非空 | PK | 职位编号 |
de_leader | Varchar(5) | 非空 | 职位领导 | |
de_salary | int | 非空 | 职位薪资 | |
de_number | int | 非空 | 职位人数 | |
ca_id | int | FK | 出纳员编号 | |
ac_id | int | FK | 核算员编号 | |
an_id | int | FK | 分析员编号 |
出纳员表包含出纳员姓名、出纳员编号、出纳员电话、通知单编号。出纳员编号是主键,通知单编号是外键,具体情况如下:
表3.2 出纳员表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
ca_name | Varchar(5) | 非空 | 出纳员姓名 | |
ca_id | int | 非空 | PK | 出纳员编号 |
ca_phone | int | 非空 | 出纳员电话 | |
no_id | int | FK | 通知单编号 |
会计核算员表包含核算员姓名、核算员编号、核算员电话、核算表编号。其中核算员编号是主键,核算表编号是外键,具体情况如下:
表3.3 会计核算员表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
ac_name | Varchar(5) | 非空 | 核算员姓名 | |
ac_id | int | 非空 | PK | 核算员编号 |
ac_phone | int | 非空 | 核算员电话 | |
fa_id | int | FK | 核算表编号 |
报表分析员表包含分析员姓名、分析员编号、分析员电话、财务总结编号、财务报表编号。其中分析员编号是主键,财务总结编号和财务报表编号是外键,具体情况如下:
表3.4 报表分析员表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
an_name | Varchar(5) | 非空 | 分析员姓名 | |
an_id | int | 非空 | PK | 分析员编号 |
an_phone | int | 非空 | 分析员电话 | |
fs_id | int | FK | 财务总结编号 | |
st_id | int | FK | 财务报表编号 |
拨款通知单表包含通知单编号、通知单时间、通知单账款,其中通知单编号是主键,具体情况如下:
表3.5拨款通知单表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
no_id | int | 非空 | PK | 通知单编号 |
no_time | datetime | 非空 | 通知单时间 | |
no_money | int | 非空 | 通知单账款 |
财务核算表包含核算表编号、核算表时间,其中核算表编号是主键,具体情况如下:
表3.6财务核算表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
fa_id | int | 非空 | PK | 核算表编号 |
fa_time | datetime | 非空 | 核算表时间 |
财务总结表包含财务总结编号、财务总结时间,其中财务总结编号是主键,具体情况如下:
表3.7财务总结表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
fs_id | int | 非空 | PK | 财务总结编号 |
fs_time | datetime | 非空 | 财务总结时间 |
财务报表包含财务报表编号、财务报表时间,其中财务报表编号是主键,具体情况如下:
表3.8财务报表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
st_id | int | 非空 | PK | 财务报表编号 |
st_time | datetime | 非空 | 财务报表时间 |
表3.8财务报表
字段名称 | 数据类型 | NULL | 键 | 字段描述 |
st_id | int | 非空 | PK | 财务报表编号 |
st_time | datetime | 非空 | 财务报表时间 |
3.4数据库实现
数据表的创建:
(1)会计核算员表创建:
CREATE TABLE `accountant` (
`ac_name` varchar(5) DEFAULT NULL,
`ac_id` int(11) NOT NULL AUTO_INCREMENT,
`ac_phone` int(11) DEFAULT NULL,
`fa_id` int(11) DEFAULT NULL,
PRIMARY KEY (`ac_id`),
KEY `fa_id` (`fa_id`),
CONSTRAINT `fa_id` FOREIGN KEY (`fa_id`) REFERENCES `financial_accounting` (`fa_id`)
)
(2)财务部表创建:
CREATE TABLE `accounting_department` (
`de_name` varchar(5) NOT NULL,
`de_id` int(11) NOT NULL AUTO_INCREMENT,
`de_leader` varchar(5) NOT NULL,
`de_salary` int(11) NOT NULL,
`de_number` int(11) NOT NULL,
`ca_id` int(11) DEFAULT NULL,
`ac_id` int(11) DEFAULT NULL,
`an_id` int(11) DEFAULT NULL,
PRIMARY KEY (`de_id`),
KEY `ca_id` (`ca_id`),
KEY `ac_id` (`ac_id`),
KEY `an_id` (`an_id`),
CONSTRAINT `ac_id` FOREIGN KEY (`ac_id`) REFERENCES `accountant` (`ac_id`),
CONSTRAINT `an_id` FOREIGN KEY (`an_id`) REFERENCES `analyst` (`an_id`),
CONSTRAINT `ca_id` FOREIGN KEY (`ca_id`) REFERENCES `cashier` (`ca_id`)
)
(3)会计核算员表创建:
NOT NULL AUTO_INCREMENT,
`an_phone` int(11) DEFAULT NULL,
`fs_id` int(11) DEFAULT NULL,
`st_id` int(11) DEFAULT NULL,
PRIMARY KEY (`an_id`),
KEY `fs_id` (`fs_id`),
KEY `st_id` (`st_id`),
CONSTRAINT `fs_id` FOREIGN KEY (`fs_id`) REFERENCES `financial_summary` (`fs_id`),
CONSTRAINT `st_id` FOREIGN KEY (`st_id`) REFERENCES `financial_statements` (`st_id`)
)
(4)拨款通知单表创建:
CREATE TABLE `appropriation_notice` (
`no_id` int(11) NOT NULL AUTO_INCREMENT,
`no_time` datetime DEFAULT NULL,
`no_money` int(11) DEFAULT NULL,
PRIMARY KEY (`no_id`)
)
(5)出纳员表创建:
CREATE TABLE `cashier` (
`ca_name` varchar(5) DEFAULT NULL,
`ca_id` int(11) NOT NULL AUTO_INCREMENT,
`ca_phone` int(11) DEFAULT NULL,
`no_id` int(11) DEFAULT NULL,
PRIMARY KEY (`ca_id`),
KEY `no_id` (`no_id`),
CONSTRAINT `no_id` FOREIGN KEY (`no_id`) REFERENCES `appropriation_notice` (`no_id`)
)
(6)财务核算表创建:
CREATE TABLE `financial_accounting` (
`fa_id` int(11) NOT NULL AUTO_INCREMENT,
`fa_time` datetime DEFAULT NULL,
PRIMARY KEY (`fa_id`)
)
(7)财务报表创建:
CREATE TABLE `financial_statements` (
`st_id` int(11) NOT NULL AUTO_INCREMENT,
`st_time` datetime DEFAULT NULL,
PRIMARY KEY (`st_id`)
)
(8)财务总结表创建:
CREATE TABLE `financial_summary` (
`fs_id` int(11) NOT NULL AUTO_INCREMENT,
`fs_time` datetime DEFAULT NULL,
PRIMARY KEY (`fs_id`)
)
第4章 系统实现
4.1用户登录界面
登录界面用户输入正确的账号和密码可顺利进入系统,界面具体情况如图:
图4.1系统登录界面
4.2主要功能界面
4.2.1功能选择界面
功能选择界面有增删改查四种功能选择,用户选择后进入相应界面操作。界面具体情况如图:
4.2.2添加界面
添加界面可对各个表进行添加操作,选择相应的表后会出现具体添加视图。界面具体情况如图:
图4.3 添加界面1
4.2.3添加界面具体情况
各表的具体添加界面,在输入框内根据提示加入对应的信息,点击确认后即可成功添加。界面具体情况如下:
图4.4添加界面2
4.2.4修改界面
修改界面可对规定的表进行修改操作,选择相应的表后会出现具体修改视图。界面具体情况如图:
图4. 5 修改界面1
4.2.5修改界面具体情况
各表的具体修改界面,输入要修改的信息编号后点击获取信息,可在界面显示所有信息的详情,用户可修改相应信息。界面具体情况如下
图4.6修改界面2
4.2.6删除界面
删除主界面中选择相应需要删除的表即可弹出具体的删除界面:
图4.7删除界面1
4.2.7删除界面具体情况
在删除界面点击全部显示按钮可在文本显示区域显示该表全部信息,在输入框输入要删除信息的对应编号即可删除信息:
图4.8删除界面2
4.2.8查询界面
用户在查询界面,用户点击左侧按钮可在文本显示区域显示对应表的全部信息。在输入框输入编号可单独显示对应的信息:
图4.9查询界面
第5章 课设总结
十多天的课程设计即将结束,在老师的指导和自己的努力下我的课程设计也完成了。公司财务管理系统的功能已经基本实现,在设计过程中,老师指引我们将理论知识与实践想结合起来,从可行性研究、需求分析、总体设计到详细设计,到代码实现,这其中遇到很多问题,有的是界面设计上的,有的是代码实现上的,在解决这些问题的过程中,我深深的领悟到了软件开发的奥妙,也使我对软件开发有了浓厚的兴趣。
从开始开发公司财务管理系统,我就遇到了很多很棘手的问题,比如数据库的选择,以及各种新知识的学习。考虑到管理系统的数据增长和变化都是巨大的,最后还是选择了关系型数据库MySQL,其中的乐趣却是他人不能体会的。开发设计的初级阶段,我对公司财务管理系统管理方面的知识了解的并不多,通过外出考察和查阅相关书籍,我对公司财务管理系统的开发有了初步的认识。随着设计的深入,逐步加深对该系统的认识和对编程语言的熟悉和理解。同时,我也阅读大量的资料了解现在应用中的公司财务的一些特点。课程设计是对所学知识的应用,理论联系实际让我对学过的知识有了更加深刻的理解。通过程序的编写、调试、修改、维护的过程,不但掌握了编程语言,也掌握了相关数据库的基本操作。
通过此次课程设计,使我更加扎实的掌握了有关数据库方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我掌握的知识不再是纸上谈兵。
在这段时间里的学习,我也了解到了很多知识,也对软件开发的过程有了一个更深的了解,并且对程序的基本设计思路有了较深的认识,学会并掌握了前台软件界面与后台数据库的连接方法,加深了对数据库使用的熟练程度,对SQL编程语言的用法以及编码规范有了更深的认识,对数据库的设计方法也照以前有了很大改进。
参考文献
- 黄文娟.基于Java和MySQL的公司财务信息化管理系统设计[J].电子设计工程. 2019(02)
- 罗谦.试谈Java语言的Mysql数据库连接实现与处理[J].民营科技. 2014(08)
- 李世川.Java连接MySQL解决方案[J].网络与信息. 2011(06)
- 孟永东,田斌.基于Java和MySQL的虚拟现实动态场景构建方法[J].系统仿真学报. 2005(09)
- 周永宏,肖国政.基于Servlet的在线财务管理系统设计[J].科技风. 2019(21)
- 游哲钫.加强图书馆信息化建设的对策探讨[J].中国教育信息化. 2020(23)
- 王春晖.“互联网+”时代下高校图书馆信息化建设探究[J].信息记录材料. 2021(01)
- 于浩.高校图书馆信息化建设关键因素分析[J].辽宁高职学报. 2021(02)
- 蒋达明.试论图书馆信息化管理存在的问题和解决策略[J].采写编. 2021(02)
附 录
部分主要代码
由于篇幅有限,所以只附上主要功能的代码:
1、登陆界面与主功能界面:
public class face0 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(15, 15, 15, 15));
gridPane.setVgap(5);
gridPane.setHgap(5);
Label label1 = new Label("登录");
label1.setStyle("-fx-font-family: 'KaiTi';-fx-font-size: 20;-fx-font-weight: bold;");
label1.setPrefWidth(70);
Label label2 = new Label("账\t号:");
Label label3 = new Label("密\t码:");
TextField textField = new TextField();
textField.setPrefWidth(150);
textField.setPromptText("请输入账号!!!");
PasswordField passwordField = new PasswordField();
passwordField.setPrefWidth(150);
passwordField.setPromptText("请输入密码!!!");
Button button1 = new Button("确认");
button1.setPrefWidth(80);
Button button2 = new Button("取消");
button2.setPrefWidth(80);
gridPane.add(label1, 1, 0);
gridPane.add(label2, 0, 1);
gridPane.add(label3, 0, 2);
gridPane.add(textField, 1, 1, 2, 1);
gridPane.add(passwordField, 1, 2, 2, 1);
gridPane.add(button1, 0, 3);
gridPane.add(button2, 2, 3)
Scene scene = new Scene(gridPane);
primaryStage.setTitle("公司财务管理系统");
primaryStage.setScene(scene);
primaryStage.show();
String number = "root";
String password = "rootroot";
button1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String st1 = textField.getText();
String st2 = passwordField.getText();
if (number.equals(st1) && password.equals(st2)) {
Stage face = new Stage();
try {
new face0_1().start(face);
} catch (Exception e) {
e.printStackTrace();
}
} else {
show.showTimedDialog(3000, "账号或者密码错误!!!");
}
}
});
button2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
hint.hint(button2);
}
});
}
}
public class face0_1 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Button[] bt = new Button[4];
FlowPane rootNode = new FlowPane();
rootNode.setOrientation(Orientation.VERTICAL);
rootNode.setPadding(new Insets(15, 15, 15, 15));
rootNode.setHgap(5);
rootNode.setVgap(5);
HBox hBox = new HBox();
Label label = new Label("功能选择");
label.setStyle("-fx-font-family: 'KaiTi';-fx-font-size: 20;-fx-font-weight: bold;");
hBox.getChildren().add(label);
hBox.setAlignment(Pos.CENTER);
rootNode.getChildren().addAll(hBox);
bt[0] = new Button("添加");
bt[0].setPrefSize(315, 50);
rootNode.getChildren().add(bt[0]);
bt[1] = new Button("修改");
bt[1].setPrefSize(315, 50);
rootNode.getChildren().add(bt[1]);
bt[2] = new Button("删除");
bt[2].setPrefSize(315, 50);
rootNode.getChildren().add(bt[2]);
bt[3] = new Button("查找");
bt[3].setPrefSize(315, 50);
rootNode.getChildren().add(bt[3]);
Scene scene = new Scene(rootNode, 340, 500);
primaryStage.setTitle("公司财务管理系统");
primaryStage.setScene(scene);
primaryStage.show();
bt[0].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Stage face = new Stage();
try {
new face1_0().start(face);
} catch (Exception e) {
e.printStackTrace();
}
}
});
bt[1].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Stage face = new Stage();
try {
new face2_0().start(face);
} catch (Exception e) {
e.printStackTrace();
}
}
});
bt[2].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Stage face = new Stage();
try {
new face3_0().start(face);
} catch (Exception e) {
e.printStackTrace();
}
}
});
bt[3].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Stage face = new Stage();
try {
new face4_0().start(face);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
2、添加信息界面重要代码:
button1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
PreparedStatement ps = null;
Connection ct = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/finance", "root", "rootroot");
ps = ct.prepareStatement("insert into accounting_department(de_name,de_leader,de_salary,de_number,ca_id,ac_id,an_id) values(?,?,?,?,?,?,?)");
ps.setString(1, textField1.getText());
ps.setString(2, textField2.getText());
ps.setInt(3, Integer.parseInt(textField3.getText()));
ps.setInt(4, Integer.parseInt(textField4.getText()));
ps.setInt(5, Integer.parseInt(textField5.getText()));
ps.setInt(6, Integer.parseInt(textField6.getText()));
ps.setInt(7, Integer.parseInt(textField7.getText()));
ps.executeUpdate();
textField1.setText("");
textField2.setText("");
textField3.setText("");
textField4.setText("");
textField5.setText("");
textField6.setText("");
textField7.setText("");
show.showTimedDialog(3000,"添加成功");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (ps != null) ps.close();
if (ct != null) ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
});
button2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
hint.hint(button2);
}
});
}
}
3、修改信息界面重要代码:
button1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
PreparedStatement ps = null;
Connection ct = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/finance", "root", "rootroot");
ps = ct.prepareStatement("UPDATE `accounting_department` SET `de_name`=?,`de_leader`=?,`de_salary`=?,`de_number`=?,`ca_id`=?,`ac_id`=?,`an_id`=? WHERE `de_id`=?");
ps.setString(1, textField1.getText());
ps.setString(2, textField2.getText());
ps.setInt(3, Integer.parseInt(textField3.getText()));
ps.setInt(4, Integer.parseInt(textField4.getText()));
ps.setInt(5, Integer.parseInt(textField5.getText()));
ps.setInt(6, Integer.parseInt(textField6.getText()));
ps.setInt(7, Integer.parseInt(textField7.getText()));
ps.setInt(8, Integer.parseInt(textField0.getText()));
ps.executeUpdate();
textField0.setText("");
textField1.setText("");
textField2.setText("");
textField3.setText("");
textField4.setText("");
textField5.setText("");
textField6.setText("");
textField7.setText("");
show.showTimedDialog(3000, "修改成功啦!!!");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (ps != null) ps.close();
if (ct != null) ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
});
button2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
hint.hint(button2);
}
});
button4.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
PreparedStatement ps = null;
Connection ct = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/finance", "root", "rootroot");
ps = ct.prepareStatement("SELECT * FROM `accounting_department`where de_id=?");
ps.setInt(1, Integer.parseInt(textField0.getText()));
rs = ps.executeQuery();
rs.next();
String name = rs.getString("de_name");
String leader = rs.getString("de_leader");
int salary = rs.getInt("de_salary");
int number = rs.getInt("de_number");
int id1 = rs.getInt("ca_id");
int id2 = rs.getInt("ac_id");
int id3 = rs.getInt("an_id");
textField1.setText(name);
textField2.setText(leader);
textField3.setText(String.valueOf(salary));
textField4.setText(String.valueOf(number));
textField5.setText(String.valueOf(id1));
textField6.setText(String.valueOf(id2));
textField7.setText(String.valueOf(id3));
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (ps != null) ps.close();
if (ct != null) ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
});
}
}
4、删除信息界面重要代码:
button1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
PreparedStatement ps = null;
Connection ct = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/finance", "root", "rootroot");
ps = ct.prepareStatement("SET FOREIGN_KEY_CHECKS = 0");
ps.executeUpdate();
ps = ct.prepareStatement("DELETE FROM `appropriation_notice` WHERE `no_id`=?");
ps.setInt(1, Integer.parseInt(textField.getText()));
ps.executeUpdate();
textField.setText("");
show.showTimedDialog(3000,"删除成功啦!!!!");
ps = ct.prepareStatement("SET FOREIGN_KEY_CHECKS = 1");
ps.executeUpdate();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (ps != null) ps.close();
if (ct != null) ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
});
}
}
5、查询信息界面重要代码:
buttons[0].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String string = "职业名称" + "\t " + "编号" + "\t " + "职业领导"+"\t \t" +"职位薪资"+"\t "+"职位人数"+"\t "+"出纳员编号"+"\t "+"核算员编号"+"\t "+"分析员编号"+"\n";
PreparedStatement ps = null;
Connection ct = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/finance", "root", "rootroot");
ps = ct.prepareStatement("SELECT * FROM `accounting_department`");
rs = ps.executeQuery();
while(rs.next()){
String name = rs.getString("de_name");
int id = rs.getInt("de_id");
String leader = rs.getString("de_leader");
int salary = rs.getInt("de_salary");
int number = rs.getInt("de_number");
int id1 = rs.getInt("ca_id");
int id2 = rs.getInt("ac_id");
int id3 = rs.getInt("an_id");
string = string + name + " \t " + id + " \t " + leader + " \t "+salary+" \t "+number+" \t\t "+id1+" \t\t "+id2+" \t\t "+id3+"\n";
}
textArea.setText(string);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (ps != null) ps.close();
if (ct != null) ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
buttons[8].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String string0 = "职业名称" + "\t " + "编号" + "\t " + "职业领导"+"\t \t" +"职位薪资"+"\t "+"职位人数"+"\t "+"出纳员编号"+"\t "+"核算员编号"+"\t "+"分析员编号"+"\n";
PreparedStatement ps = null;
Connection ct = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
ct=DriverManager.getConnection("jdbc:mysql://localhost:330 /finance", "root", "rootroot");
ps = ct.prepareStatement("SELECT * FROM `accounting_department`WHERE`de_id`=?");
ps.setInt(1, Integer.parseInt(textField.getText()));
rs = ps.executeQuery();
rs.next();//指针指向下一行
String name = rs.getString("de_name");
int id = rs.getInt("de_id");
String leader = rs.getString("de_leader");
int salary = rs.getInt("de_salary");
int number = rs.getInt("de_number");
int id1 = rs.getInt("ca_id");
int id2 = rs.getInt("ac_id");
int id3 = rs.getInt("an_id");
string0 = string0 + name + " \t " + id + " \t " + leader + " \t "+salary+" \t "+number+" \t\t "+id1+" \t\t "+id2+" \t\t "+id3+"\n";
textArea.setText(string0);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (ps != null) ps.close();
if (ct != null) ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
textField.setText("");
}
});
}
});