日期:2019.2.1

博客期:028

星期五

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

  第一天:(1.23)

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

  

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

第二天:(1.24)

  我完成了对于表的设计

  

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

  basic呃~那时候还没有想好

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

  第三天:(1.25)

  编写mysql的连接DOC层代码:

  

  

 package sql.mysql;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import basic.account.Account; public class MySqlForAccounts {
//=======================================================================================【数据区】
//JDBC 驱动名
private final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
//数据库 URL
private final String DB_URL = "jdbc:mysql://localhost:3306/familycash?useSSL=false";
//用户名
private final String USER = "root";
//密码
private final String PASS = "123456";
//构造器
private Connection conn = null;
private Statement stmt = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
//=======================================================================================【方法区】
//-------《返回是否存在名称为name的数据》
public boolean exist(String name){
ReSetResult("SELECT customname from account");
try {
while(rs.next())
{
String t = rs.getString("name");
if(name.compareTo(t)==0)
return true;
}
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
return false;
}
//-------《返回是否存在型号为n的数据》
public boolean exist(int code){
ReSetResult("SELECT code from account");
try {
while(rs.next())
{
String t = rs.getString("code");
if(code==Integer.parseInt(t))
return true;
}
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
return false;
}
//-------《重设rs》
public void ReSetResult(String sql){
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
}
//-------《增删改查》
//添加一个用户的数据
public void Add(Account x){
try {
pstmt = (PreparedStatement) conn.prepareStatement("insert into account values (?,?,?,?,?,?,?)");
pstmt.setInt(1, x.getCode());
pstmt.setString(2, x.getItems());
pstmt.setDouble(3, x.getBalance());
pstmt.setInt(4, x.getNum());
pstmt.setString(5, x.getCustomname());
pstmt.setString(6, x.getDate());
pstmt.setString(7, x.getInform());
pstmt.executeUpdate();
pstmt.close();
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
}
//清空用户数据
public void cleanAll(){
int l = MaxCode();
for(int i=1;i<=l;++i)
Delete(i);
}
//删除一个用户的数据
public void Delete(int code){
try {
pstmt = (PreparedStatement) conn.prepareStatement("delete from account where code=?");
pstmt.setInt(1,code);
pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
}
//更新一个用户的数据
public void Renew(int code,Account x){
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
pstmt = (PreparedStatement) conn.prepareStatement("update account set code=?, items=?, balance=?, num=?, customname=? ,date=? , inform=? where code=?");
pstmt.setInt(1, x.getCode());
pstmt.setString(2, x.getItems());
pstmt.setDouble(3, x.getBalance());
pstmt.setInt(4, x.getNum());
pstmt.setString(5, x.getCustomname());
pstmt.setString(6, x.getDate());
pstmt.setString(7, x.getInform());
pstmt.setInt(8,code);
pstmt.executeUpdate();
pstmt.close();
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
} catch (ClassNotFoundException e) {
System.out.println("爷爷!你的Class驱动加载出现问题啦!");
}
}
//返回符合格式的长度
public int AccountLength(String customname){
ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
int l = 0;
try {
while(rs.next())
{
String Customname = rs.getString("customname");
if(Customname.compareTo(customname)==0)
++l;
}
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
return l; }
//查询第几个用户的数据
public Account GetFromSQL(int number){
if(number <=0||number>Length())
return null;
ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
try {
int i = 1;
while(rs.next()&&number>=i)
{
int Code = Integer.parseInt(rs.getString("code"));
String Items = rs.getString("items");
double Balance = Double.parseDouble(rs.getString("balance"));
int Num = Integer.parseInt(rs.getString("num"));
String Customname = rs.getString("customname");
String Date = rs.getString("date");
String Inform = rs.getString("inform");
if(number==i)
return new Account(Code,Items,Num,Balance,Customname,Date,Inform);
++i;
}
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
return null;
}
//查询一个用户的数据
public Account Refer(int code_s){
ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
Account s = null;
try {
while(rs.next())
{
int Code = Integer.parseInt(rs.getString("code"));
String Items = rs.getString("items");
double Balance = Double.parseDouble(rs.getString("balance"));
int Num = Integer.parseInt(rs.getString("num"));
String Customname = rs.getString("customname");
String Date = rs.getString("date");
String Inform = rs.getString("inform");
if(code_s==Code)
return new Account(Code,Items,Num,Balance,Customname,Date,Inform);
}
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
return s;
}
//-------《数据数》
public int Length(){
ReSetResult("SELECT code, items, balance, num , customname, date, inform FROM account");
int l = 0;
try {
while(rs.next())
{
++l;
}
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
return l;
}
//-------《最大的编号值》
public int MaxCode(){
ReSetResult("SELECT code FROM account");
int l = 0;
try {
while(rs.next())
{
int Code = Integer.parseInt(rs.getString("code"));
if(l<Code)
l = Code;
}
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
return l;
}
//-------《释放》
public void free(){
try {
if(pstmt!=null)
pstmt.close();
if(stmt!=null)
stmt.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
}
//-------《构造方法》
public MySqlForAccounts(){
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
} catch (ClassNotFoundException e1) {
System.out.println("爷爷!你的Class驱动加载出现问题啦!");
} catch (SQLException e) {
System.out.println("爷爷!你的数据库连接出现问题啦!");
}
}
//-------《主方法》
public static void main(String[] args){
MySqlForAccounts m = new MySqlForAccounts();
System.out.println();
for(int i=1;i<=m.Length();++i)
{
System.out.println(m.exist(i));
}
m.free();
}
}

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. Linux 常用命令(2)

    wc命令:用于对文件的行数.单词数和字符数进行统计. wc -w file.txt,显示文件中的单词数,wc -l file.txt,显示文件中的行数,wc -m file.txt,显示文件中的字符数 ...

  2. Linux之增加系统调用[内核编译]

    声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步- 0.0 由于操作系统实验的缘故,有一个实验需要 ...

  3. Centos7使用man查找命令时,报错No manual entry for xxxx

    man ascii时报错 解决报错的方法: yum install man-pages

  4. 简单的复用accep

    s = socket.socket() adress = ("192.168.15.102", 9999) s.bind(adress) s.listen() s.setblock ...

  5. python中的Process

    from multiprocessing import Process import time import os # # def acb(n): # print(n) # # # if __name ...

  6. linux atoi

    atoi 只能针对字符串为数字, 对字符串为十六进制.八进制的不能进行转化

  7. MGR架构~高可用架构细节的梳理

    一 简介:今天咱们来聊聊mgr的细节原理相关 二 选择新主机制   1 当主节点宕掉,自动会根据服务器的server_uuid变量和group_replication_member_weight变量值 ...

  8. mysql 架构 ~ MGR 与PXC的对比

    一 简介 MGR和PXC的对比 二  WriteSet1 定义 是组件对于写节点应用事务生成binlog的再封装,用来验证其他节点的事务冲突 PXC构成key db_table_组件值data bin ...

  9. 传统javaweb 改成 Maven项目

    1. 项目右键-- Configure --Convert to Maven Project 后可以生成maven结构,多了红色框的    <project xmlns="http:/ ...

  10. python - zipfile模块

    import zipfile # f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64= ...