今天我们继续来开发这个项目。
代码层级规划
根据代码的功能,我们需要提前把代码的包等结构确定下来。由于这个项目是小型的,所以可以分为以下几部分:
- 前端窗体
- 后端逻辑
- 全局变量存放类
- 工具类
- 第三方外部库
- 资源文件夹
其中,本次用到的库有我自己编写的tools-v2.1.2.jar和Google的gson-2.8.0.jar。那么,以下就是项目目录:
正式开干
首先,我们需要一个登录窗口,输入管理员密码才能修改一些借书信息,例如借书还书,而非管理员只能查询自己的借书信息。登录窗口需要被Start主程序调用,并返回一个bool值,代表了是否是管理员登录。所以我们先创建Start类,只有这个了才能有main函数。
我们在com.rimu包下新建一个main包,Start类就在里面。
目前的Start类代码如下:
Start.java
package com.rimu.main;
public class Start {
public static void main(String[] args) {
}
}
然后,先写出登录窗口的GUI,再写登录的代码。我们需要把Login类放在GUI包里。
写一半突然想起来没放字体文件,直接从系统文件夹拷个微软雅黑放在resources/fonts/
文件夹里。
Login.java
package com.rimu.GUI;
import com.rimu.main.Start;
import swing.FastJButton;
import swing.FastJLabel;
import value.Values; //这三个是我自己的jar里的工具类
import javax.swing.*;
public class Login extends JFrame {
JPanel panel = new JPanel(null);
JTextField passwordF;
public Login(){
setBounds(Values.SW/2-250,Values.SH/2-200,500,300);
setTitle("登录");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
init();
}
private void init(){
JLabel title = new FastJLabel(0,0,500,80,"登录",Values.FB);
panel.add(title);
JLabel text = new FastJLabel(10,130,70,40,"密码:",Values.FS);
panel.add(text);
passwordF = new JTextField();
passwordF.setBounds(80,130,340,40);
panel.add(passwordF);
JButton adminB = new FastJButton(90,200,120,30,"管理员登录",Values.FSS);
adminB.addActionListener(e -> Start.loginState = whenButtonPress(1));
panel.add(adminB);
JButton userB = new FastJButton(290,200,120,30,"普通登录",Values.FSS);
userB.addActionListener(e -> Start.loginState = whenButtonPress(2));
panel.add(userB);
add(panel);
}
private int whenButtonPress(int num){
int ans;
if(num == 1){//点击了管理员登录
if(passwordF.getText().equals(Start.password)){
ans = 1;//代表管理员登录
}else{
ans = 0;//代表密码错误
}
}else if(num == 2){//点击了普通登录
ans = 2;//代表普通登录
}else{
throw new IndexOutOfBoundsException();//虽然这么写但是一般(绝对)不会出现这种情况
}
//TODO 在这里启动主界面
if(ans != 0) setVisible(false);
return ans;
}
}
相应的,Start类修改成这样:
Start.java
package com.rimu.main;
import com.rimu.GUI.Login;
public class Start {
public static String password = "admin";
public static int loginState;
public static void main(String[] args) {
Login login = new Login();
login.setVisible(true);
}
}
这个项目完成后,我会把源代码开源在GitHub上,到时候会把我自制的包一并放进去。
那么我们今天的研究就到这里,大家可以在评论区提出对我的代码的修改意见,谢谢大家。
相关文章:
Java简易图书管理系统开发全过程 (1)