日期: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 }
由于涉及博主的个人信息隐私,改代码已经修改,各位仍然可以放心使用
嗯~这其实是修改后的...
第四天: (1.28)
这一天我制作了login.jsp(登录界面),之前都在找合适的登陆界面模板,好几个都和自己的方法有冲突,属于自己无法处理的模板。
最终采用模板:
第五天:(1.29)
这一次我做了大致的主页,相关按钮功能未实现!
然后,今天写servlet,就这样吧!