java+swing+jdbc个⼈记账管理系统的设计与实现
java+swing+jdbc个⼈记账管理系统的设计与实现(轻量版)
个⼈记账管理系统的主要功能如下:
(1)⽤户信息管理:⽤户信息管理需要实现新⽤户注册,⽤户登录,⽤户个⼈信息修改,密码修改四个基本功能。
(2)记账管理:记账管理需要实现收⽀记录的增删改查。⽀出信息(⽀出⾦额,⽀出使⽤的账户,⽀出消费的类别,⽀出发⽣⽇期,备注),收⼊信息(收⼊增加的账户,收⼊的来源科⽬,收⼊发⽣⽇期,备注)。需要注意的是:记账科⽬之间要实现收⽀平衡,⽀出科⽬增长(减少)的⾦额即资产账户余额减少(增长)的⾦额。例如,⽀出⾷物-蔬菜10元,使⽤账户饭卡⾥的余额,则⽀出⾷物-蔬菜类别⾦额增10,饭卡余额减10。记账过程中需调⽤已添加的资产账户和科⽬类别。
(3)账户管理:账户管理需要实现⽤户可对个⼈账户增删改查。⽤户需要在系统中添加新的个⼈账户,个⼈账户可以是暂时余额为零。⽤户可以对以后不再使⽤的账户进⾏清理,对添加有误的账户进⾏修改,查询已添加所有账户的功能。已添加的账户可以在记账功能,账志报表功能中被调⽤。
(4)科⽬管理:科⽬管理需要实现⽤户可对科⽬类别进⾏增删改查操作。⽤户需要根据个⼈需求在系统
内添加⾃定义科⽬,科⽬可以分为两级,⼀级是⼤类科⽬,⼆级是⼩类科⽬,⼤类科⽬包含⼩类科⽬。⽤户可以对添加错误或以后不再使⽤的科⽬进⾏删除或修改操作,⽤户可查询所有已添加的科⽬,并可以在记账中通过下拉框选择使⽤科⽬。
(5)账志报表管理:账志报表管理需要实现⽤户需要对已记录的账⽬信息进⾏查询,编辑、添加等操作功能。⽤户需要在系统中选择查询某⼀时间点或时间段的记账信息,其中信息要包括账户、收⼊、⽀出、科⽬类别,也可以对账表历史记录进⾏修改。
运⾏图
部分代码import*;
import*;
import DefaultTableModel;
import TableRowSorter;
import*;
import ActionEvent;
import ActionListener;
import*;
import ArrayList;
/**登录界⾯
*/
public class login extends JFrame implements ActionListener {
JLabel welcome =new JLabel("欢迎使⽤个⼈记账管理系统"); JLabel user, password;
JTextField username;
JPasswordField passwordField;
JButton loginButton;
JButton button;
CardLayout cardLayout =new CardLayout();
JPanel card;
JPanel cardPanel, cardPanel2, cardPanel3, cardPanel4;
JTabbedPane jTabbedPane, jTabbedPane2;
Users users;
javaswing实现购买//Font font = new Font("宋体", Font.BOLD | Font.ITALIC, 20); public login(){
init();
}
private void init(){
welcome.setFont(new Font("⽅正舒体", Font.ITALIC,30));
setTitle("个⼈记账管理系统");
setLayout(new BorderLayout());
user =new JLabel("⽤户名");
password =new JLabel("密码");
button =new JButton("注册");
card =new JPanel(cardLayout);
JPanel panel1 =new JPanel(new BorderLayout());
username =new JTextField();
passwordField =new JPasswordField();
loginButton =new JButton("Login!");
loginButton.addActionListener(this);
JPanel titlepanel =new JPanel(new FlowLayout());//标题⾯板 JPanel loginpanel =new JPanel();//登录⾯板
loginpanel.setLayout(null);
welcome.setBounds(250,100,400,40);
user.setBounds(340,170,50,20);
password.setBounds(340,210,50,20);
username.setBounds(390,170,120,20);
passwordField.setBounds(390,210,120,20);
loginButton.setBounds(340,250,80,25);
button.setBounds(430,250,80,25);
loginpanel.add(welcome);
loginpanel.add(user);
loginpanel.add(password);
loginpanel.add(username);
loginpanel.add(passwordField);
loginpanel.add(loginButton);
loginpanel.add(button);
panel1.add(titlepanel, BorderLayout.NORTH);
panel1.add(loginpanel, BorderLayout.CENTER);
//panel1.add(loginButton, BorderLayout.SOUTH);
card.add(panel1,"login");
//card.add(cardPanel, "info");
add(card);
setBounds(300,100,900,600);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener(){//为重置按钮添加监听事件
//同时清空name、password的数据
public void actionPerformed(ActionEvent arg0){
// TODO ⾃动⽣成⽅法存根
new zhuce();
}
});
}
public static void main(String[] args){
new login();
}
@Override
public void actionPerformed(ActionEvent e){
boolean flag =false;//⽤来标志⽤户是否正确
Source()== loginButton){
ArrayList<Users> list =new CheckUsers().getUsers();//获得所有⽤户信息
for(int i =0; i < list.size(); i++){//遍历所有⽤户信息,以此来判断输⼊的信息是否正确
users = (i);
String passwordStr =new Password());
Text().Name())&& passwordStr.Password())){
//Type();
//System.out.println("登录⼈员类别"+type);
JOptionPane.showMessageDialog(null,"欢迎(⽤户)"+ Text()+"登录","记账系统", JOptionPane.PLAIN_MESSAGE);
//当输⼊的信息正确时,就开始加载选项卡界⾯,并把选项卡界⾯加⼊到卡⽚布局器中
Cookm cookm=new Cookm(users);
CooUsers cooUsers=new CooUsers(users);
Coozj coozj=new Coozj(users);
Coozh coozh=new Coozh(users);
Coozzbb coozzbb=new Coozzbb(users);
Coozzbbs coozzbbs=new Coozzbbs(users);
cardPanel =new JPanel();
cardPanel2 =new JPanel();
cardPanel3 =new JPanel();
cardPanel4 =new JPanel();
jTabbedPane =new JTabbedPane(JTabbedPane.TOP);
jTabbedPane.add("⽤户信息管理", cooUsers);
jTabbedPane.add("记账管理", coozj);
jTabbedPane.add("账户管理", coozh);
jTabbedPane.add("科⽬管理",cookm);
jTabbedPane.add("账志报表管理",coozzbb);
jTabbedPane.add("账志报表时间段查询",coozzbbs);
cardPanel.add(jTabbedPane);
card.add(cardPanel,"info");
cardLayout.show(card,"info");//输⼊信息正确就显⽰操作界⾯,否则重新输⼊正确信息
flag =true;
break;//如果信息正确就退出遍历,提⾼效率
}
}
if(!flag){//信息不正确,重新输⼊
JOptionPane.showMessageDialog(null,"请输⼊正确的⽤户名或密码","警告", JOptionPane.WARNING_MESSAGE); username.setText("");
passwordField.setText("");
}
}
}
/**连接到SQL server
*/
public static class GetConnection {
private Connection con=null;
public Connection GetConnection(){
String URL="jdbc:mysql://localhost:3306/jizhang?&useSSL=false&serverTimezone=UTC";//数据库位置
String USER="root";
String KEY="root";
try{
Class.forName("sql.cj.jdbc.Driver");//加载驱动,连接数据库,
con= Connection(URL, USER, KEY);
}catch(Exception e){
// TODO ⾃动⽣成的 catch 块
e.printStackTrace();
}
return con;
}
}
public static class Users {
private String name;
private String password;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
}
public static class zhuce extends JFrame {
Connection connection =new GetConnection().GetConnection();
JLabel Uname, Upassword, Utype, SP;
JTextField UnameText, UpasswordText, UtypeText;
JButton seek, add, delete, edit;
public zhuce(){
setLayout(null);//整个采⽤流动式布局很好的适应了表格带来的影响
setBounds(300,100,900,600);
Uname =new JLabel("⽤户:");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论