2018年4月16日第二阶段项目整理

Posted jason111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018年4月16日第二阶段项目整理相关的知识,希望对你有一定的参考价值。

项目名称:

管家婆记账软件

产品详情:

使用技术:JavaSE、mysql

运行环境:Windows

需求简介:  随着“后理财时代”的到来,“你不理财,财不理你”成为人们常挂在嘴边的一句口头禅,个人理财的重要性日益凸显。本软件就是从个人(家庭)财务规划需要为出发点,使个人财务能够及时的记录在数据库中,通过特定功能查询自己的收支记录,计算收支总额等,使个人账务的记录更加方便快捷。

      该记账软件的优点:检索迅速、查找方便、可靠性高、寿命长、成本低等。这些优点能够极大地提高个人的财务管理的效率,使家庭理财更加科学。

实现功能:

(1)用户注册(对用户名进行校验合法性和是否已存在用户名)

(2)登陆(登陆的用户名和密码进行验证)

(3)找回密码(通过手机号码进行找回,并验证手机号的合法性)

(4)查询(多条件查询)、添加、修改、删除账单

(5)收入、支出总览

(6)年收入支出的总额计算

(7)月度收入和支出的总额计算

(8)年收入支出的盈余计算,收支比计算

(9)月度收入支出的盈余计算,收支比计算

(10)月管理员查询、修改、删除用户功能

产品规模:本软件功能约10个,数据表共有2个,代码约100行,开发用时约4天

一,首页

首页有用户登陆,用户注册,密码找回等功能

二.帐务

查询账务,增加帐务,删除账务,修改账务,计算账务

三.用户

查询用户,增加用户,删除用户,修改用户

view层作用: 视图层,即项目中的界面

controller层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交给业务层处理

service层作用: 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理

dao层作用: 数据访问层, 用来操作数据库表的数据

db数据库: 这里指MySQL

domain 实体包: 存放JavaBean,管理javaBean实体对象的

tools工具包:存放项目中使用到的工具类

test 测试包: 存放项目功能测试的代码

1.用户登录:
(1)登录:登陆时会判断出是普通用户还是管理员用户,从而进入不同界面权限不同

2.用户注册
(1)注册:注册时
(2)注册时会判断数据库中是否有该用户,如果有提示用户名已存在
(3)注册时运用正则表达式规定输入的用户名只能是5-10位的字母和数字组合,密码时6-12位组合,并二次输入验证密码是否相同,不同的话显示两次输入不一致并返回重新输入。
如果输入的格式不对会提示输入的用户名或输入的密码格式不正确

3.帮助和企业文化
(1)打印文字
4.退出系统
(1)退出系统后有文字提示

普通用户登陆时显示的界面,主要功能是增删改查账务信息,并计算你输入年月的收入和支出总额,利用的模糊查询

管理员用户登陆时显示的界面,主要功能是增删改查账务信息,计算账务和增删改查用户信息,查询用户信息是根据当前输入的用户名来查找相关用户信息,计算帐务可计算每年的收入总额和支出总额,那年那月的收入和支出总额。帐务盈余状况是可以计算你每年和每个月的收入和支出,收入率和支出率,看自己是亏损还是挣钱了。

//=============================================case1.用户登陆界面================================================
//在主页面点1的时候调用,其中通过调用findusers和findadmin两个方法用if判断登陆的是普通用户还是管理员,从而进入不同页面
public void login() throws SQLException{
    Users users=new Users();
    System.out.println("请输入您的用户名:");
    String username=sc.next();
    users.setUsername(username);
    System.out.println("请输入您的密码:");
    String upassword=sc.next();
    users.setUpassword(upassword);
    System.out.println("当前验证码是:");
    System.out.println("---------");
    String sjm=getRandomCode(5);//调用生成随机数的方法,生成五位的验证码
    System.out.println("---------");
    System.out.println("请输入验证码(区分大小写)");
    System.out.println("---------");
    String yzm=sc.next();
    if(sjm.equals(yzm)){
        if(username.equals("admin")&&upassword.equals("admin123")){
            findadmin(users);//通过用户输入的用户名和密码来判断是否是管理员账户
        }else{
        findUsers(users);}
    }else{
        System.out.println("验证码输入错误,请重新输入!");
        login();
    }
    
}
//生成验证码
public static String getRandomCode(int number){  
    String codeNum = "";  
    int [] code = new int[3];  
    Random random = new Random();  
    for (int i = 0; i < number; i++) {  
        int num = random.nextInt(10) + 48;  
        int uppercase = random.nextInt(26) + 65;  
        int lowercase = random.nextInt(26) + 97;  
        code[0] = num;  
        code[1] = uppercase;  
        code[2] = lowercase;  
        codeNum+=(char)code[random.nextInt(3)];  
    }  
    System.out.println(codeNum);  
    return codeNum;  
}  
//============================================finadmin方法=====================================================
//查找管理员账户
//用来验证登陆的时候是否是管理员,是管理员的话进入adminrun()方法管理员权限页面
//=============================================================================================================
public void findadmin(Users users) throws SQLException{
    String mes=userscontroller.findadmin(users);
    if(mes.equals("您是管理员,管理员模式登录成功!")){
        System.out.println(mes);
        adminrun();
    }
    else{
        System.out.println(mes);
    }
}
//===========================================findusers方法========================================================
/*
* 验证用户登录功能,用户在登陆界面中选择菜单1的时候调用
* 实现思想:
*         调用controller层方法,接收返回值
*         根据返回值判断是否登陆成功
*         如果登陆成功则调用商城界面run()方法
*         如果不成功,则打印提示信息
*/
public void findUsers(Users users) throws SQLException{
    String mes=userscontroller.findsingle(users);
    if(mes.equals("登录成功,欢迎使用jason-manager^-^")){
        System.out.println(mes);
        run();
    }
    else{
        System.out.println(mes);
    }
}

 

//===========================================case2.注册用户的界面=================================================
//在主页面点击3的时候调用,运用正则表达式来判断用户输入的用户名密码的格式和长度
public void adduser() throws SQLException{
    Users users=new Users();
    System.out.println("请输入要注册的用户名(必须是数字或字母组合,5-10位):");
    String username=sc.next();
    String reg="^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{5,10}$";
  /*用户名规则:1,不能全部是数字
  2,不能全部是字母
  3,必须是数字或字母
  4,5-10位数*/
    boolean f=username.matches(reg);
    if(!f){
        System.out.println("用户名格式不正确,请重新输入");
        adduser();
    }else{
        users.setUsername(username);
        System.out.println("请设置您的密码(必须是数字或字母组合,6-12位):");
        String upassword=sc.next();
        System.out.println("请确认你的密码:");
        String up=sc.next();
        String reg1="^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$";
        /*用户名规则:1,不能全部是数字
        2,不能全部是字母
        3,必须是数字或字母
        4,6-12位数*/
        boolean f1=upassword.matches(reg1);
        boolean f2=up.matches(reg1);
        if(upassword.equals(up)){
            if(!f1&&!f2){
                System.out.println("密码格式不正确,请重新输入!");
                adduser();
            }else{
            users.setUpassword(upassword);
            System.out.println("输入需要找回密码时验证的问题:");
            System.out.println("问题1:你的小学老师是:");
            String qus1=sc.next();
            users.setQus1(qus1);
            System.out.println("问题2:你父亲的姓名是:");
            String qus2=sc.next();
            users.setQus2(qus2);
            System.out.println("问题3:你母亲的姓名是:");
            String qus3=sc.next();
            users.setQus3(qus3);
            String mes=userscontroller.adduser(users);
            System.out.println(mes);
            }    
        }else{
            System.out.println("两次密码输入不一致,请重新输入!");
            adduser();
        }
    }
}

 

以上是关于2018年4月16日第二阶段项目整理的主要内容,如果未能解决你的问题,请参考以下文章

世界上的另一半我

2017年8月17日第二篇

4月8日第二篇

2022年,ICPC比赛CCPC比赛CCF-CSP考试蓝桥杯比赛天梯赛日程

2017年11月20日 第二次小组会议

如果单元格包含当前月份,如何删除行?