Java的家庭记账本程序(A)

 日期:2019.2.1

博客期:028

星期五

       其实我早就开始开发“家庭记账本”的软件了,只不过写博客写的有点晚,我是打算先做web的!因为Android Studio的教程,还是要对应版本,好多问题我都没来得及处理。那么,先说一下,这一个星期以来,我的完成度吧!其实,就是每天开发一点儿,我好像做麻烦了。

  第一天:(1.23)

  我先制作了基本的JavaBean,如下图:

  

       basic是作为基本的文件夹,其中包括了我们整个项目中需要用到的基础类,Account也有账单的意思,这里并不是账户,而Manager和Member才是内部的成员!大家可以看出我是非常喜欢分文件夹的,这样处理起大项目来,就会方便许多。

       第二天:(1.24)

  我完成了对于表的设计

  

  account、member分别存账单数据和成员数据

  basic呃~那时候还没有想好

  补充了一写数据用于测试数据库连接情况

  第三天:(1.25)

   编写mysql的连接DOC层代码:

  

  

  1 package sql.mysql;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.PreparedStatement;
  6 import java.sql.ResultSet;
  7 import java.sql.SQLException;
  8 import java.sql.Statement;
  9 
 10 import basic.account.Account;
 11 
 12 public class MySqlForAccounts {
 13     //=======================================================================================【数据区】
 14     //JDBC 驱动名
 15     private final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
 16     //数据库 URL
 17     private final String DB_URL = "jdbc:mysql://localhost:3306/familycash?useSSL=false";
 18     //用户名
 19     private final String USER = "root";
 20     //密码
 21     private final String PASS = "123456";
 22     //构造器
 23     private Connection conn = null;
 24     private Statement stmt = null;
 25     private PreparedStatement pstmt = null;
 26     private ResultSet rs = null;
 27     //=======================================================================================【方法区】
 28     //-------《返回是否存在名称为name的数据》
 29     public boolean exist(String name){
 30         ReSetResult("SELECT customname from account");
 31         try {
 32             while(rs.next())
 33             {
 34                 String t = rs.getString("name");
 35                 if(name.compareTo(t)==0)
 36                     return true;
 37             }
 38         } catch (SQLException e) {
 39             System.out.println("爷爷!你的数据库连接出现问题啦!");
 40         }
 41         return false;
 42     }
 43     //-------《返回是否存在型号为n的数据》
 44     public boolean exist(int code){
 45         ReSetResult("SELECT code from account");
 46         try {
 47             while(rs.next())
 48             {
 49                 String t = rs.getString("code");
 50                 if(code==Integer.parseInt(t))
 51                     return true;
 52             }
 53         } catch (SQLException e) {
 54             System.out.println("爷爷!你的数据库连接出现问题啦!");
 55         }
 56         return false;
 57     }
 58     //-------《重设rs》
 59     public void ReSetResult(String sql){
 60         try {
 61             stmt = conn.createStatement();
 62             rs = stmt.executeQuery(sql);
 63         } catch (SQLException e) {
 64             System.out.println("爷爷!你的数据库连接出现问题啦!");
 65         }
 66     }
 67     //-------《增删改查》
 68     //添加一个用户的数据
 69     public void Add(Account x){
 70         try {
 71             pstmt = (PreparedStatement) conn.prepareStatement("insert into account values (?,?,?,?,?,?,?)");
 72             pstmt.setInt(1, x.getCode());
 73             pstmt.setString(2, x.getItems());
 74             pstmt.setDouble(3, x.getBalance());
 75             pstmt.setInt(4, x.getNum());
 76             pstmt.setString(5, x.getCustomname());
 77             pstmt.setString(6, x.getDate());
 78             pstmt.setString(7, x.getInform());
 79             pstmt.executeUpdate();
 80             pstmt.close();
 81             } catch (SQLException e) {
 82                 System.out.println("爷爷!你的数据库连接出现问题啦!");    
 83         }
 84     }
 85     //清空用户数据
 86     public void cleanAll(){
 87         int l = MaxCode();
 88         for(int i=1;i<=l;++i)
 89             Delete(i);
 90     }
 91     //删除一个用户的数据
 92     public void Delete(int code){
 93         try {
 94             pstmt = (PreparedStatement) conn.prepareStatement("delete from account where code=?");
 95             pstmt.setInt(1,code);
 96             pstmt.executeUpdate();
 97         } catch (SQLException e) {
 98             System.out.println("爷爷!你的数据库连接出现问题啦!");
 99         }
100     }
101     //更新一个用户的数据
102     public void Renew(int code,Account x){
103         try {
104             Class.forName(JDBC_DRIVER);
105             conn = DriverManager.getConnection(DB_URL,USER,PASS);
106             stmt = conn.createStatement();
107             pstmt = (PreparedStatement) conn.prepareStatement("update account set code=?, items=?, balance=?, num=?, customname=? ,date=? , inform=? where code=?");
108             pstmt.setInt(1, x.getCode());
109             pstmt.setString(2, x.getItems());
110             pstmt.setDouble(3, x.getBalance());
111             pstmt.setInt(4, x.getNum());
112             pstmt.setString(5, x.getCustomname());
113             pstmt.setString(6, x.getDate());
114             pstmt.setString(7, x.getInform());
115             pstmt.setInt(8,code);
116             pstmt.executeUpdate();
117             pstmt.close();
118         } catch (SQLException e) {
119             System.out.println("爷爷!你的数据库连接出现问题啦!");
120         } catch (ClassNotFoundException e) {
121             System.out.println("爷爷!你的Class驱动加载出现问题啦!");
122         }
123     }
124     //返回符合格式的长度
125     public int AccountLength(String customname){
126         ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
127         int l = 0;
128         try {
129             while(rs.next())
130             {
131                 String Customname = rs.getString("customname");
132                 if(Customname.compareTo(customname)==0)
133                     ++l;
134             }
135         } catch (SQLException e) {
136             System.out.println("爷爷!你的数据库连接出现问题啦!");
137         }
138         return l;
139         
140     }
141     //查询第几个用户的数据
142     public Account GetFromSQL(int number){
143         if(number <=0||number>Length())
144             return null;
145         ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
146         try {
147             int i = 1;
148             while(rs.next()&&number>=i)
149             {
150                 int Code = Integer.parseInt(rs.getString("code"));
151                 String Items = rs.getString("items");
152                 double Balance = Double.parseDouble(rs.getString("balance"));
153                 int Num = Integer.parseInt(rs.getString("num"));
154                 String Customname = rs.getString("customname");
155                 String Date = rs.getString("date");
156                 String Inform = rs.getString("inform");
157                 if(number==i)
158                     return new Account(Code,Items,Num,Balance,Customname,Date,Inform);
159                 ++i;
160             }
161         } catch (SQLException e) {
162             System.out.println("爷爷!你的数据库连接出现问题啦!");
163         }
164         return null;
165     }
166     //查询一个用户的数据
167     public Account Refer(int code_s){
168         ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
169         Account s = null;
170         try {
171             while(rs.next())
172             {
173                 int Code = Integer.parseInt(rs.getString("code"));
174                 String Items = rs.getString("items");
175                 double Balance = Double.parseDouble(rs.getString("balance"));
176                 int Num = Integer.parseInt(rs.getString("num"));
177                 String Customname = rs.getString("customname");
178                 String Date = rs.getString("date");
179                 String Inform = rs.getString("inform");
180                 if(code_s==Code)
181                     return new Account(Code,Items,Num,Balance,Customname,Date,Inform);
182             }
183         } catch (SQLException e) {
184             System.out.println("爷爷!你的数据库连接出现问题啦!");
185         }
186         return s;
187     }
188     //-------《数据数》
189     public int Length(){
190         ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
191         int l = 0;
192         try {
193             while(rs.next())
194             {
195                 ++l;
196             }
197         } catch (SQLException e) {
198             System.out.println("爷爷!你的数据库连接出现问题啦!");
199         }
200         return l;
201     }
202     //-------《最大的编号值》
203     public int MaxCode(){
204         ReSetResult("SELECT code FROM account");
205         int l = 0;
206         try {
207             while(rs.next())
208             {
209                 int Code = Integer.parseInt(rs.getString("code"));
210                 if(l<Code)
211                     l = Code;
212             }
213         } catch (SQLException e) {
214             System.out.println("爷爷!你的数据库连接出现问题啦!");
215         }
216         return l;
217     }
218     //-------《释放》
219     public void free(){
220         try {
221             if(pstmt!=null)
222                 pstmt.close();
223             if(stmt!=null)
224                 stmt.close();
225             if(conn!=null)
226                 conn.close();
227         } catch (SQLException e) {
228             System.out.println("爷爷!你的数据库连接出现问题啦!");
229         }
230     }
231     //-------《构造方法》
232     public MySqlForAccounts(){
233         try {
234             Class.forName(JDBC_DRIVER);
235             conn = DriverManager.getConnection(DB_URL,USER,PASS);
236         } catch (ClassNotFoundException e1) {
237             System.out.println("爷爷!你的Class驱动加载出现问题啦!");
238         } catch (SQLException e) {
239             System.out.println("爷爷!你的数据库连接出现问题啦!");
240         }
241     }
242     //-------《主方法》
243     public static void main(String[] args){
244         MySqlForAccounts m = new MySqlForAccounts();
245         System.out.println();
246         for(int i=1;i<=m.Length();++i)
247         {
248             System.out.println(m.exist(i));
249         }
250         m.free();
251     }
252 }
MySqlForAccounts

由于涉及博主的个人信息隐私,改代码已经修改,各位仍然可以放心使用

  嗯~这其实是修改后的...

  第四天: (1.28)

  这一天我制作了login.jsp(登录界面),之前都在找合适的登陆界面模板,好几个都和自己的方法有冲突,属于自己无法处理的模板。

  最终采用模板:

  

  第五天:(1.29)

   这一次我做了大致的主页,相关按钮功能未实现!

  

  然后,今天写servlet,就这样吧!

  

原文地址:https://www.cnblogs.com/onepersonwholive/p/10414629.html