基于javafx的学生成绩管理系统
0.项目结构
0.0登陆界面
包含有标题栏、用户标签、密码标签、用户名输入文本框、密码输入文本框、注册按钮、登陆按钮
0.1注册界面
包含有标题栏、用户标签、密码标签、确认密码标签、邮箱标签、用户名输入文本框、密码输入文本框、确认密码输入文本框、邮箱输入文本框、确认注册按钮
0.2个人信息(学生)
包含有标题栏、个人信息按钮、查询成绩按钮、退出登陆按钮、退出系统按钮
0.3个人信息(管理员/教师)
包含有标题栏、个人信息按钮、上传成绩按钮、修改成绩按钮、退出登陆按钮
0.4查询成绩(学生)
包含有标题栏、课程号标签、课程号输入标签、课程成绩标签、查询按钮、查询成绩的文本框、返回上级按钮
0.5修改成绩(教师)
包含有标题栏、学号标签、课程号标签、需要修改的成绩标签、学号输入文本框、课程号输入文本框、需要修改的成绩文本框、确认修改成绩的按钮、返回按钮
0.6上传成绩(教师)
包含有标题栏、导入本地文件组建、确认上传按钮、返回按钮
1.环境配置
参考本博客的本文
但是需要注意的是,上文有一处没有提及的地方是
在VM options:选项中需要添加如下内容,javafx程序才能正常运行,直接复制粘贴即可。
1 | --module-path ${PATH_TO_FX} --add-modules javafx.controls,javafx.fxml |
2.UI
2.0 css的引用
关于界面的话,直接在Scene Builder中按照需要拖拽组件即可。以登录界面为例。
这个界面有两个pane(一个是带背景的,一个是灰色的),四个label,两个TextField用于接收账号和密码和两个按钮。
!由于机制的问题,灰色pane里的组件,继承父类,导致此图中的注册,登录按钮的字体发虚
单纯的组件构成的界面是十分的丑陋的。所以,我们需要简单的稍微设计一下。
美化组件主要通过css来实现,而在javafx中css导入方式有两种,一种如下格式
1 | // stylesheets="@../ css文件所在包名 /css文件名" |
另一种就是直接在使用Scene Builder构建时右边的layout工具栏里style里添加如下图
当然辣,如果不小心忘记给某个组件添加css的话,也不用紧张,在生成的fxml文件里,还可以自己手动添加的,如下图
在标签里添加css。
2.1 常用的css
添加圆角
1 | -fx-background-radius: 10px |
添加背景不透明度
1 | -fx-opacity: 0.7 |
添加背景颜色
1 | -fx-background-color: grey |
添加阴影
1 | -fx-effect: dropshadow(three-pass-box, black, 10, 0.5, 0, 0) |
添加背景图片
1 | -fx-background-image: url('file:/home/h4ck3r/IdeaProjects/StuManSys/img/bg.jpg') |
关于添加背景图片,为了更好的团队协作,最好使用相对路径。
关于背景颜色,推荐一个网站,本人觉得不错,国外的网站,搭个梯子会好一些
好了上述的css基本贯穿了整个项目。
3.fxml与controller之间的通信
整个项目的源码,在文章最后
参考之前的这篇文章,不一样的是,由于java没有全局变量的定义,在不同界面的通信时,如本项目的学生界面的个人信息按钮,跳转到个人信息页面,但是个人页面数据该如何获取呢?
解决办法:
在登录界面的时候执行一下数据库的查询,在LoginController类里定义
1 | public static String USER_ID; |
在后面的界面想要,调用数据的话,可以直接采用
1 | LoginController.USER_ID |
这种方式获取数据
在这个想到了做项目的是时候遇到的坑,在fxml的组件里需要添加
1 | fx:id |
在Controller里使用
1 |
|
来使用组件。单单的id是不够的
4.数据库
在连接数据库的时候
idea里添加jdbc驱动
其他的请参考我代码
5.项目结构
.
├── img
│ ├── bg.jpg
│ └── register.jpg
├── out
│ └── production
│ └── StuManSys
│ ├── META-INF
│ │ └── StuManSys.kotlin_module
│ └── sample
│ ├── ConnMysql.class
│ ├── LoginController.class
│ ├── loginWindow.fxml
│ ├── Main.class
│ ├── QueryScoreController.class
│ ├── RegisterController.class
│ ├── register.fxml
│ ├── ReviseScoreController.class
│ ├── ReviseScore.fxml
│ ├── StuInfoController.class
│ ├── StuMainPageController.class
│ ├── StuMainPage.fxml
│ ├── StuPersonInfoPage.fxml
│ ├── StuQueryScore.fxml
│ ├── TechInfoController.class
│ ├── techMainPage.fxml
│ ├── TechMianController.class
│ └── TechPersonInfoPage.fxml
├── src
│ └── sample
│ ├── ConnMysql.java
│ ├── LoginController.java
│ ├── loginWindow.fxml
│ ├── Main.java
│ ├── QueryScoreController.java
│ ├── RegisterController.java
│ ├── register.fxml
│ ├── ReviseScoreController.java
│ ├── ReviseScore.fxml
│ ├── StuInfoController.java
│ ├── StuMainPageController.java
│ ├── StuMainPage.fxml
│ ├── StuPersonInfoPage.fxml
│ ├── StuQueryScore.fxml
│ ├── TechInfoController.java
│ ├── techMainPage.fxml
│ ├── TechMianController.java
│ └── TechPersonInfoPage.fxml
└── StuManSys.iml
8 directories, 40 files
6.项目源码
6.1 ConnMysql.java
定义了一个数据库连接的类
1 | package sample; |
6.2 LoginController.java
与loginWindow.fxml之间控制通信
1 | package sample; |
6.3 loginWindow.fxml
登录界面UI
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.4 Main.java
主程序入口
1 | package sample; |
6.5 RegisterController.java
注册界面控制器
1 | package sample; |
6.6 register.fxml
注册UI
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.7 QueryScoreController.java
查询成绩控制器
1 | package sample; |
6.8 StuQueryScore.fxml
查询分数UI
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.9 ReviseScoreController.java
修改成绩控制器
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.10 ReviseScore.fxml
修改成绩UI
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.11 StuInfoController.java
学生个人信息控制器
1 | package sample; |
6.12 StuMainPage.fxml
学生的主界面
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.13 StuMainPageController.java
学生主页面控制器
1 | package sample; |
6.14 StuPersonInfoPage.fxml
学生个人信息UI
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.15 TechInfoController.java
教师信息控制器
1 | package sample; |
6.16 techMainPage.fxml
教师主界面UI
1 | <?xml version="1.0" encoding="UTF-8"?> |
6.17 TechMainController.java
教师主界面控制器
1 | package sample; |
6.18 TechPersonInfoPage.fxml
教师个人信息主界面UI
1 | <?xml version="1.0" encoding="UTF-8"?> |
版权声明:转载请注明出处!
文章说明: 文章如有不足或者纰漏之处,欢迎留言斧正!