Java图形化编程之JFrame疫苗接种系统详解

网友投稿 228 2022-09-27


Java图形化编程之JFrame疫苗接种系统详解

目录1.功能模块1.1登陆模块1.1.1思路:1.1.2核心代码:1.1.3运行效果:1.2信息展示模块(从txt文件中读取)1.2.1思路:1.2.2核心代码 :1.2.3运行效果:1.3新增记录模块(并更新txt)1.3.1思路:1.3.2核心代码1.3.3运行效果1.4删除记录(含多选删除并更新txt)1.5修改记录(并更新txt)1.6多条件查询总结

1.功能模块

1.1登陆模块

1.1.1思路:

利用JFrame弹出一个登陆界面,用户输入admin和123456表示正确否则登陆失败,给登陆按钮绑定一个点击事件(得到用户输入的内容进行比对如果正确就弹出信息展示模块的JFrame界面-VaccineJframe),给取消按钮绑定事件将两个文本框的内容置空。

1.1.2核心代码:

位置:/yimiao/src/com/jiefan/Application.java

package com.jiefan;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import com.jiefan.jframe.VaccineJframe;

public class Application extends JFrame {

/**

*

*/

private static final long serialVersionUID = 1L;

private JTextField username;//文本框

private JPasswordField password;//密码框

private JLabel label0;//标题

private JLabel label1;//用户名

private JLabel label2;//密码

private JButton loginButton;//登陆按钮

private JButton cancelButton;//取消按钮

/**

* 初始化窗口

*/

public Application() {

// 设置容器为空布局,绝对定位

this.setLayout(null);

// 创建标题字体对象

Font font = new Font("微软雅黑", Font.BOLD, 25);

// 创建颜色对象

Color color = new Color(128, 200, 128);

// 登陆界面标签

label0 = new JLabel("登陆界面");

label0.setBounds(200, 50, 150, 50);

label0.setFont(font);

label0.setForeground(color);

// 用户名标签

label1 = new JLabel("用户名:");

label1.setBounds(110, 110, 100, 20);

// 密码标签

label2 = new JLabel("密码:");

label2.setBounds(110, 160, 100, 20);

// 创建组件

username = new JTextField();

username.setBounds(180, 110, 200, 20);

// 密码框

password = new JPasswordField();

password.setBounds(180, 160, 200, 20);

//登陆按钮

loginButton = new JButton("登陆");

loginButton.setBounds(205, 200, 60, 20);

loginButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if(username.getText().equals("admin") && String.valueOf(password.getPassword()).equals("123456")) {

JOptionPane.showMessageDialog(null, "登陆成功");

//跳转到查看所有的疫苗界面(隐藏当前窗体)

Application.this.setVisible(false);//隐藏当前窗体

new VaccineJframe();

}else {

JOptionPsYoYERBane.showMessageDialog(null, "账号密码错误-默认账号admin密码123456");

}

}

});

//取消按钮

cancelButton = new JButton("取消");

cancelButton.setBounds(265, 200, 60, 20);

cancelButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

username.setText("");

password.setText("");

}

});

// 将组件加入到容器中

this.add(username);

this.add(password);

this.add(label0);

this.add(label1);

this.add(label2);

this.add(loginButton);

this.add(cancelButton);

// 设置标题

this.setTitle("疫苗管理系统");

// 设置窗口的关闭策略

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// 设置窗口大小

this.setSize(500, 300);

// 隐藏标题栏

this.setUndecorated(false);

// 设置不可调整窗口大小

this.setResizable(true);

// 设置窗口居中,放在窗口大小后面,null表示桌面

this.setLocationRelativeTo(null);

// 将窗口设置为显示,要写在最后一句

this.setVisible(true);

}

public static void main(String[] args) {

new Application();

}

}

1.1.3运行效果:

1.2信息展示模块(从txt文件中读取)

1.2.1思路:

从D盘下的txt文件用io流读取出来,并封装成list用jtable组件展示到界面上

1.2.2核心代码 :

位置1:/yimiao/src/com/jiefan/dao/VaccineDao.java

//查询所有的

public List getAll(){

try {

List vs=read.getList();//read是我自己封装的工具类

return vs;

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

上面的read是我自己封装的工具类(专门用来读文件的) 核心代码如下:

位置2:/yimiao/src/com/jiefan/tools/Read.java

/**

* 从txt文件中读取疫苗接种信息

* @return

* @throws IOException

*/

public List getList() throws IOException{

List vaccines=new ArrayList();

FileReader fr = new FileReader(Config.filePath);

BufferedReader br = new BufferedReader(fr);

String line = br.readLine();

for (int i = 0; line != null; i++) {

line = br.readLine();

String[] lineArr = null;

if (line != null) {

lineArr = line.split(" ");

Vaccine v=new Vaccine();

v.setId(Integer.valueOf(lineArr[0]));

v.setVname(lineArr[1]);

v.setUname(lineArr[2]);

v.setVdate(lineArr[3]);

v.setPhone(lineArr[4]);

v.setUnit(lineArr[5]);

vaccines.add(v);

}

}

br.close();

fr.close();

return vaccines;

}

1.2.3运行效果:

1.3新增记录模块(并更新txt)

1.3.1思路:

点击新增按钮弹出一个新的窗体,里面让用户输入一些必要信息(必填的和需要正则验证的都要做)。最后点击添加的时候保存到txt文件中(在文件内容末尾换行追加一行,每个字段之间空格隔开)。隐藏添加界面打开信息展示界面(重新从txt读取一遍)。

1.3.2核心代码

位置1:/yimiao/src/com/jiefan/dao/VaccineDao.java

//增

public void addV(Vaccine v) {

List vs=getAll();

if(v.getId() ==null) {

if(vs!=null&&vs.size()>0)v.setId(vs.get(vs.size()-1).getId()+1);

else v.setId(1);

}

write.appendV(v);//write是我自己定义的一个工具类-专门在最后一条记录追加

}

位置2:write工具类:/yimiao/src/com/jiefan/tools/Write.java

/**

* 新增一行疫苗信息数据

* @param v

*/

public void appendV(Vaccine v) {

BufferedWriter sYoYERBout=null;

//最后追加一行

try {

out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(Config.filePath, true)));

out.write("\r\n"+v.getId()+" "+v.getVname()+" "+v.getUname()+" "+v.getVdate()+" "+v.getPhone()+" "+v.getUnit());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

1.3.3运行效果

1.4删除记录(含多选删除并更新txt)

1.5修改记录(并更新txt)

1.6多条件查询

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:61-高级路由:IPv6 RIPng EIGRP OSPF(ipv6 二级路由器)
下一篇:60-高级路由:IPv6 静态路由(无线路由ipv6)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~