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();
        }
    }
}

原文地址:https://www.cnblogs.com/jason111/p/8856188.html

时间: 2024-11-11 00:59:24

2018年4月16日第二阶段项目整理的相关文章

[NBA Live] NBALIVE手游2018年7月16日开放的国际球员系列活动 合成攻略

此图介绍了NBA LIVE手游中 2018年7月16日开放的国际球员系列活动,包括合成方法.持续时间.合成目标.每日所能获得的基本代币数量计算,以及合成建议. 此次活动终极目标: 102 评分 马努.吉诺比利 (球队TPT加4点) 原文地址:http://blog.51cto.com/6150141/2145098

软考中高项学员:2016年3月16日作业 项目整体管理及范围管理

第六章项目整体管理 1 项日整体管管理的过程包括如下内容. 项目启动.制定项目章程. 制定初步的项目范围说明书. 制定项日管理计划. 指导和管理项目的执行. 监督和控制项目. 整体变更控制. 项目收尾. 2   项目立项以后,就要正式启动项目.所谓的项目启动就是以书面的.正式的形式肯定项目的成立与存在,同时以书面正式的形式为项目经理进行授权. 3 项目章程是正式批准一个项目的文档,或者是批准现行项目是否进入下一阶段的文档,项目章程应当由项目组织以外的项目发起人发布,若项目为本组织开发,也可以由投

2018年6月16日-临时解决xmanager6与xshell6评估过期,需采购问题

个人版:直接下载使用校园版本既可 选择要下载软件,然后填写相关信息,邮箱会收到下载地址,下载安装就行. 不过校园版,一次最大只可以同时连接4个主机.......多了就会另外开启窗口. 企业版:下载最新的评估版本,可使用30天[此为临时解决办法,如有人可以提供注册版的软件包,请评论下留言,谢谢!] 注意选择企业版,如下图 官网下载链接:https://www.netsarang.com/download/main.html(需fan-墙) 度盘下载链接:https://pan.baidu.com/

ACM训练小结-柳志轩-2018年6月16日

今天题目情况如下:A题:线段树+XOR性质.情况:由于写法问题,调试困难,浪费大量时间.B题:(对所有满足i mod p==q,求a[i]之和),无修改,直接上n*sqrt(n)的分块写法.情况:由于250ms的时间限制,浪费大量时间思考新方法,但实际上时限足够.C题:BFS题目,直接SPFA.情况:未花费多少时间,直接写出.D题:方阵行列题,需要智商.情况:未看.E题:给定n个点,需支持询问一个起点到所有n个点的切比雪夫距离以及点的删改.转换坐标+权值线段树.转换坐标貌似很常用.情况:未看.F

2018年9月16日 自学python第八天

 1.while用法的补充: continue 终止当前循环 开始下一循环 break  终止所有循环 例如: n=1 while n<10: if n == 7: n=n+1 continue(break) print(n) n=n+1 print(end) 此示例中,如果是continue ,则输出结果是 12345689end   如果是break 则输出结果为:123456end 自此 昨天的习题:用户三次机会终于会写了 n=0 while n<3 user = input (&quo

linux学习第四天 (Linux就该这么学)2018年11月16日

今天主要讲了 管道符,重写向与环境变量 输入输出重写向 标准输出重写向 (标准,覆盖,错误) > 将标准输出重写向到一个文件中 >> 追加到文件 2>错误输出重定向 2>>错误输出重定向 追加到文件 &>> 将标准输出与错误输出 共同写入到文件中 管道符 |是把原本要输出到屏幕的信息列表交给 管道后面的命令作进一步的加工 通配符:* 匹配零个或多个,?匹配单个,[a-z]匹配a-z,4个常用转义符 反斜杠 \ 反斜后面为单纯字条串,单引号 ``(在右

信息系统项目3月16日作业

3月16日作业: 一,本章课程重点: 项目整体管理的过程包括如下内容: 项目启动 制定初步的范围说明书 制定项目管理计划 指导和管理项目的执行 监督和控制项目 整体变更控制 项目收尾 启动前加入背景介绍 收尾后加入经验教训就是论文论项目整体管理大纲 项目启动:项目立项以后就要正式启动项目,启动是以书面的.正式的形式肯定项目的成立于存在,同时以书面正式的形式为项目经理进行授权 项目正常的作用和内容 项目章程是正式批准一个项目的文档,或者是批准现行现行项目是否进入下一阶段的文档.项目章程应当由项目组

2015年7月16日 项目开发文档

日期 2015年7月16日 星期 星期四 位置 中蓝公寓蓝芳园D507 主要工作 1)         项目开发计划报告编写 2)         需求规格说明书报告编写 3)         详细设计说明书部分报告编写 4)         概要设计说明书编写 5)         数据库设计说明书编写 遇到的问题 1)         报告的有一些部分不知道具体的格式应该是什么样子以及需要包含哪些部分 解决方法 1)明天去找老师讨论有关报告的问题 完成进度 80% 成果 今天我们完成了大部分

2016年3月16日作业

软考中高项学员:2016年3月16日作业 1.请根据授课内容,梳理出今晚讲的重点. 项目整体管理 1.项目整体管理的过程包括如下内容:1.项目启动,制定项目章程.2.制定初步的项目范围说明书.3.制定项目管理计划.4.指导和管理项目的执行.5.监督和控制项目.6.整体变更控制.7.项目收尾.2.项目章程应当由项目组织以外的项目发起人发布,或者由投资人发布.项目章程为项目经理使用组织资源进行项目活动提供了授权.3.项目章程应当包括以下内容:1.基于项目干系人的需求和期望提出的要求.2.项目必须满足