1. 程式人生 > >2018年4月16日第二階段項目整理

2018年4月16日第二階段項目整理

模糊 年收入 重要 其中 mes 可靠性 min dom 處理

項目名稱:

管家婆記賬軟件

產品詳情:

使用技術: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日第二階段項目整理