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

  

Java的家庭记账本程序(A)的更多相关文章

  1. Java的家庭记账本程序(J)

    日期:2019.3.9 博客期:041 星期六 这次就来看看我使用全新的模板写的家庭记账本程序!本次附带配色样式!作为本周的学习进度条吧!明天再研究微信小程序的方法! 这一次的记账本程序加了很多功能! ...

  2. Java的家庭记账本程序(L)

    日期:2019.3.13 博客期:044 星期三 整理了两天,我终于也是把微信小程序平台的记账本软件完全开发出来了,并将我的微信账号与GitHub账号完成了绑定,那么我就先展示一部分作品,还有一部分代 ...

  3. Java的家庭记账本程序(G)

    日期:2019.2.24 博客期:035 星期日 啊哈!记账本虽然还是没有做完,不过,今天我的工作量应该是足够的!哦!差点忘记说啦!我是在Android Studio出现了问题之后,跑去研究微信小程序 ...

  4. Java的家庭记账本程序(B)

    日期:2019.2.3 博客期:029 星期日 看看今天想先完成jsp的连接操作,所以首先意识到自己的程序中,管理员可以对成员进行冻结.解封操作,所以先回去补了一下数据库的内容!成员的内容里多了一项i ...

  5. Java的家庭记账本程序(K)

    日期:2019.3.10 博客期:043 星期日 呕吼~这里是编程菜鸟小Master,今天加油的把第二个模板套用了,更改了许多的设定,我想这一个程序的网页版也就到这里结束了,下面是一部分的展示图,想要 ...

  6. Java的家庭记账本程序(H) :微信小程序 image 标签,在模拟器中无法显示图片?(已解决)

    日期:2019.2.25 博客期:036 星期一 吼!今天我还是继续研究了自己的微信小程序,还没有连接数据库,只是在xml的设计上添加了不少东西,大家可以看我的截图,嗯~说到今天的收获,就是 marg ...

  7. Java的家庭记账本程序(F)

    日期:2019.2.17 博客期:034 星期日 我先配置了Android的相关环境,先试着做了Hello World的测试,但是却出现了很严重的问题,问题如下: Unable to get curr ...

  8. Java的家庭记账本程序(E)

    日期:2019.2.9 博客期:032 星期二 今天是把程序的相关Bug补一补,嗯`: 1.添加了跳转说明 生成了一个对于成员的权限声明内容,用户再登陆界面点击Go按钮后,切换至说明页面,再次点击Go ...

  9. Java的家庭记账本程序(D)

    日期:2019.2.8 博客期:031 星期一 今天是把程序的查询功能以列表的形式完成了! 截图如下:

随机推荐

  1. Java SE之网络编程:知识框架

  2. js的执行环境学习笔记

    js执行全局代码或者执行函数代码的时候,首先进行准备,然后再执行.准备阶段,就是创建执行环境的阶段. 1.执行环境 当一段js代码遇到解释器的时候,比如浏览器打开一段js代码时候,第一件事并不是马上执 ...

  3. java基础 包装类

    包装类在集合中用来定义集合元素的类型. 1.Integer.MIN_VALUE:int类型的最小值:-2^31 2.Integer.MAX_VALUE:int类型的最大值:2^31-1 3.int  ...

  4. jq的stop

    jQuery stop() 方法用于停止动画或效果,在它们完成之前. stop() 方法适用于所有 jQuery 效果函数,包括滑动.淡入淡出和自定义动画. $(selector).stop(stop ...

  5. 【blog】好用的markdown插件 - Mditor

    效果 官网地址 GitHub: https://github.com/houfeng/mditor 主页: http://houfeng.net/mditor/

  6. mysql 查询优化 ~ select count 知多少

    一 简介:今天咱们来聊聊mysql的查询总数 二 具体介绍 1 从引擎层面说 myisam  myisam的扫描总行数是非常快的,这是因为myisam会将表的总行数存储起来,定期维护,但是注意,一旦加 ...

  7. 二叉查找树(Binary Search Tree)

    二叉树的一个重要的应用是他们在查找中的使用. 以下是二叉查找树的查找代码 #include <stdio.h> int main() { typedef struct Node{ int ...

  8. python,异常处理

    # 该例子是对文件异常和类型异常分别进行的处理 try: sum = 1+' f=open('wo.txt') print(f.read()) f.close() except OSError as ...

  9. VMware网络问题

    配置好网络的虚拟机,隔一段时间后可能会发现网络不可用了,此时可以检查一下以下3个服务是否开启 一般情况下,启动以上三个服务后网络就通了. 如果以上服务都启动了还不行,那就重启一下网络: # servi ...

  10. WC2019 游记

    Day 0 早上奇迹般的六点半起床平常这时候我还没睡呢 早餐在武汉站吃了一碗28的番茄牛肉米线,结果上菜后我把所有非米线的固体(包括番茄和牛肉)全挑出去了 高二大佬:一个愿宰一个愿挨 在高铁上待了四个 ...