日期: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,就这样吧!