用文件實現一個簡單的系統。包括增刪改查,和內容的審核


4、功能要求:
(1)需要在程序開始的注釋中注明班級、學號、姓名。(1 分)
(2)程序開始運行顯示登錄界面(5 分)
提示用戶按照下列格式依次輸入用戶名和密碼:
Username:
Password:
用戶名和密碼全部正確,進入系統主界面,如果用戶名錯誤:拋出異常提
示“用戶名錄入錯誤”;密碼錯誤,拋出異常提示“密碼錄入錯誤”,如果密碼
錄入三次錯誤,拋出異常提示“該用戶三次錄入錯誤,已被系統鎖定”。
正確的用戶名和密碼事前保存在用戶 user.txt 文件中(2 分)。

(3)登錄成功后,進入系統主界面。(5 分)
第 4 頁 共 6 頁
定義一個輸入界面如下圖所示,選擇相應的數字執行相應的功能
***************************************************************
河北省重大技術需求征集系統
****************************************************************
1、 錄入技術需求信息;
2、 刪除技術需求信息;
3、 審核技術需求信息
4、 顯示技術需求信息
5、 查詢技術需求信息
6、 統計技術需求信息;
****************************************************************

(4)定義 addInformation (infonumber,infoname,infocontent,
infosum,infostate,infoyear)方法錄入一條技術需求信息。(5 分)
錄入格式如下所示:
當前的技術需求信息編號為:001(根據數據文件中的最大編號自動加 1,
如果信息文件為空,則編號為 001)
技術需求名稱:
技術需求內容: (如果錄入字符超過 20 個,則拋出異常提示用戶“錄入內
容超過最大字符限制”,不允許顯示下一個錄入項)
技術需求投資金額:(允許用戶錄入浮點數)
技術需求年份: (需要判斷技術需求年份大於等於當前年份 2016,否則拋
出異常提示“技術需求年份不對”)
技術需求狀態不需要錄入,直接缺省為 0 即未審核狀態。
數據文件存儲在 TechInformation.txt 數據文件中(3 分) 。
文件中存儲的內容如下表所示:
第 5 頁 共 6 頁

(5)定義 deleteInformation(infonumber)方法刪除一條技術需求信
息;(2 分)
(6)定義 examInfomation (infonumber)方法審核技術需求信息; (5 分)

如果該編號信息狀態為 1,則提示用戶“該信息已通過審核”,提示用
戶輸入新的編號,用戶輸入編號為 000,則返回主界面;
如果該編號信息狀態為 2,則提示用戶“該信息已被退回”,提示用戶輸
入新的編號,用戶輸入編號為 000,則返回主界面;
如果該編號信息狀態為 0,則顯示下面操作界面:
***************************************************************
審核技術需求信息
****************************************************************
1、 返回主界面;
2、 通過審核;
3、 退回審核;
技術需求編號:
技術需求名稱:
技術需求內容:
技術需求投資金額;
技術需求年份:
****************************************************************
選擇 1:返回系統主界面;
選擇 2:修改該編號的需求狀態,將狀態由 0 改為 1,其余不變;
選擇 3:修改該編號的需求狀態,將狀態由 0 改為 2,其余不變;。
(7)定義 showInforamtion()方法打印顯示所有的技術需求信息; (3
分)
第 6 頁 共 6 頁
(8)定義 selectInforamtion()查詢該條技術需求信息的詳細內容。 (2
分)
提示用戶輸入技術需求信息編號:
根據輸入編號,顯示該條技術信息的詳細內容。(需求狀態為 0 時
顯示“未審核”,1 時顯示“通過審核”,2 時顯示“未通過審核”)
(9)定義 countInformation()方法統計需求信息征集。(3 分)
按照下列格式分別顯示三種狀態的需求信息數量。
未審核的需求信息:
通過審核的需求信息: 未通過審核的需求信息

package Demo;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class ceshi1 {
    static String username,password;
    static int n=0,c=0;
    static Scanner scan=new Scanner(System.in);
    static Infomation []a1=new Infomation[100];
    static userinfo []a2=new userinfo[100];
    public static void main(String[] args) throws IOException {
        caozuo();
    }
    public static void caozuo() throws IOException
    {
        //輸入賬號,如果賬號輸入錯誤,就進入循環,直到輸入正確為止。
        //賬戶密碼設計用文件存儲,暫時不采用嵌套的try catch ,賬戶輸入正確后才能輸入密碼。
        read1();//讀入存取賬戶密碼的內容
        
        
        //驗證賬號。賬號錯誤會一直循環下去
        int z3=0,z4=0;
        char ch4='a';
        while(ch4=='a')
        {
            System.out.println("請選擇是注冊還是登陸,1是注冊,2是登陸");//對內容增加注冊功能,可以實現多個賬號登錄
            int m1=scan.nextInt();
            if(m1==1)
            {
                System.out.println("請輸入需要注冊的賬號");
                String m2=scan.next();
                int z1=0;
                for(int i=0;i<c;i++)
                {
                    if(a2[i].username.equals(m2))
                    {
                        z1++;
                        System.out.println("注冊失敗,該用戶名已存在");
                    }
                }
                if(z1==0)
                {
                    System.out.println("請輸入密碼");
                    String m3=scan.next();
                    System.out.println("請再次輸入密碼");
                    String m4=scan.next();
                    if(m3.equals(m4))
                    {
                        c++;
                        a2[c-1]=new userinfo(m2,m3);
                        write1();
                    }
                    else
                    {
                        System.out.println("兩次密碼不一致");
                    }
                }
            }
            
            else
                {
                    
                    try{
                        System.out.println("請輸入賬號");
                        String s1=scan.next();
                        for(int i=0;i<c;i++)
                        {
                            if(a2[i].username.equals(s1))
                            {
                                z3++;
                                z4=i;
                            }
                        }
                        if(z3==0)//如果賬號不對,拋出異常,開始循環
                        {
                            throw new Exception("賬號輸入錯誤");
                        }
                        else
                        {
                            ch4='b';//退出這個循環
                        }
                        
                    }
                    catch(Exception w)
                    {
                        System.out.println(w);
                    }
                    
                }    
        }
                    //驗證密碼,密碼只允許錯誤3次
                    char ch1='a';
                        try{
                            System.out.println("請輸入密碼");
                            String s2=scan.next();
                            if(!s2.equals(a2[z4].password))
                            {
                                throw new Exception("密碼輸入錯誤");
                            }
                            else
                            {
                                ch1='b';
                            }
                        }
                        catch(Exception e)
                        {
                            int m=1;//用m來記錄密碼錯誤的次數。
                            System.out.println(e);
                            while(ch1=='a')
                            {
                                
                                System.out.println("請重新輸入密碼");
                                String s2=scan.next();
                                if(s2.equals(a2[z4].password))
                                {
                                    ch1='b';
                                }
                                else
                                {
                                    try{
                                        if(m>=2)
                                        {
                                            throw new Exception("密碼輸入錯誤3次,已被系統鎖定");
                                        }
                                        else
                                        {
                                            m++;
                                        }
                                    }
                                    catch(Exception e1)
                                    {
                                        System.out.println(e);
                                        return;
                                    }
                                }
                            }
                        }
                
        
                        //進入主系統
                    char ch2='a';
                    while(ch2=='a')
                    {
                        ch2=menu(ch2);
                    }
            
        
    }
    public static char menu(char ch2) throws IOException{//主界面
        System.out.println("****************************************************************");
        System.out.println("\t\t\t河北省重大技術需求征集系統");
        System.out.println("****************************************************************");
        System.out.println("\t\t\t1、 錄入技術需求信息");
        System.out.println("\t\t\t2、 刪除技術需求信息");
        System.out.println("\t\t\t3、 審核技術需求信息");
        System.out.println("\t\t\t4、 顯示技術需求信息");
        System.out.println("\t\t\t5、 查詢技術需求信息");
        System.out.println("\t\t\t6、 統計技術需求信息");
        System.out.println("\t\t\t7、退出");
        System.out.println("****************************************************************");
        System.out.print("請輸入:");
        int p = scan.nextInt();
        switch(p){
        case 1: {
            addInfo();
            break;
        }
        case 2: {
            deleteInfo();
            break;
        }
        case 3: {
            
            examInfo();
            break;
        }
        case 4: {
            showInfo();
            break;
        }
        case 5: {
            selectInfo();
            break;
        }
        case 6: {
            countInfo();
            break;
        }
        case 7: {
            ch2='c';
            break;
            
        }
        default: {
            System.out.println("輸入錯誤!");
        }
        }
        return ch2;
    }
    
    public static void addInfo() throws IOException{//添加信息功能
        read();
        System.out.println("請輸入需要添加的信息");
        String s1=scan.next();
        String s2=scan.next();
        double s3=scan.nextDouble();
        int s4=scan.nextInt();
        n++;
        a1[n-1]=new Infomation(s1,s2,s3,0,s4);
        write();
    }
    
    public static void deleteInfo() throws IOException{//刪除信息功能
        System.out.println("請輸入想要刪除的編號");
        String s1=scan.next();
        read();
        int m=0,z=0;
        for(int i=0;i<n;i++)
        {
            if(a1[i].getInfonumber().equals(s1))
            {
                m++;
                z=i;
            }
            
        }
        if(m==0)
        {
            System.out.println("不存在這個人");
        }
        else
        {
            if(n==1)
            {
                n=0;
                
            }
            else
            {
                for(int j=z-1;j>z;j--)
                {
                    a1[j-1]=a1[j];
                }
            }
            n--;
            write();
        }
    }
    
    public static void examInfo() throws IOException{//審核信息功能
        read();
        char ch3='a';
        while(ch3=='a')//使用while循環實現多次信息的審核。
        {//不管審核是否成功,或者是否通過審核,都應該有選擇是否再次審核的提示語句,這樣才能減少對鼠標的使用,只用鍵盤的小鍵盤即可。
            System.out.println("請輸入需要審核的編號");
            String m=scan.next();
            int m1=0,k=0;
            for(int i=0;i<n;i++)
            {
                if(a1[i].getInfonumber().equals(m))
                {
                    k=i;
                    m1++;
                    break;
                }
            }
            if(m1==1)
            {
                if(a1[k].getInfostate()==1)
                {
                    System.out.println("該信息已通過審核");
                    System.out.println("請選擇繼續審核還是返回主界面,如果返回主界面就輸入000");
                    String m2=scan.next();
                    if(m2.equals("000"))
                    {
                        ch3='b' ;
                    }
                    
                }
                else if(a1[k].getInfostate()==2)
                {
                    System.out.println("該信息已被退回");
                    System.out.println("請選擇繼續審核還是返回主界面,如果返回主界面就輸入000");
                    String m2=scan.next();
                    if(m2.equals("000"))
                    {
                        ch3='b' ;
                    }
                }
                else
                {
                    System.out.println("**************************");
                    System.out.println("審核技術需求信息");
                    System.out.println("**************************");
                    System.out.println("1.返回主界面");
                    System.out.println("2.通過審核");
                    System.out.println("3.退回審核");
                    System.out.println("技術需求編號"+a1[k].getInfonumber());
                    System.out.println("技術需求名稱"+a1[k].getInfoname());
                    System.out.println("技術需求內容"+a1[k].getInfocontent());
                    System.out.println("技術需求投資金額"+a1[k].getInfosum());
                    System.out.println("技術需求年份"+a1[k].getInfoyear());
                    System.out.println("***************************");
                    int m4=scan.nextInt();
                    if(m4==1)
                    {
                        ch3='b';
                        return ;
                    }
                    else if(m4==2)
                    {
                        a1[k].setInfostate(1);
                    }
                    else
                    {
                        a1[k].setInfostate(2);
                    }
                    System.out.println("審核完成");
                    write();
                    System.out.println("請選擇繼續審核還是返回主界面,如果返回主界面就輸入000");
                    String m2=scan.next();
                    if(m2.equals("000"))
                    {
                        ch3='b' ;
                    }
                }
            }
            else
            {
                System.out.println("不存在這個編號");
                System.out.println("請選擇繼續審核還是返回主界面,如果返回主界面就輸入000");
                String m2=scan.next();
                if(m2.equals("000"))
                {
                    ch3='b' ;
                }
            }
        }
    }


    
    public static void showInfo() throws IOException{//顯示信息。便於用戶查看。
        read();
        String m="";
        for(int i=0;i<n;i++)
        {
            if(a1[i].getInfostate()==0)
            {
                m="未審核";
            }
            else if(a1[i].getInfostate()==1)
            {
                m="已通過";
            }
            else
            {
                m="未通過審核";
            }
            System.out.println(a1[i].toString()+m);
        }
    }
    
    
    public static void selectInfo() throws IOException{//查詢信息功能
        System.out.println("請輸入需要查詢的序號");
        String s1=scan.next();
        int z=0;
        String m="";
        for(int i=0;i<n;i++)
        {
            if(s1.equals(a1[i].getInfonumber()))
            {
                z++;
                if(a1[i].getInfostate()==0)
                {
                    m="未審核";
                }
                else if(a1[i].getInfostate()==1)
                {
                    m="已通過";
                }
                else
                {
                    m="未通過審核";
                }
                System.out.println(a1[i].toString()+m);
            }
        }
        if(z==0)
        {
            System.out.println("不存在這個人");
        }
    }
    
    public static void countInfo() throws IOException{//統計功能
        System.out.println("未審核的人");
        int m1=0,m2=0,m3=0;
        for(int i=0;i<n;i++)
        {
            if(a1[i].getInfostate()==0)
            {
                System.out.println(a1[i].toString());
                m1++;
            }
        }
        System.out.println("通過審核的人");
        for(int i=0;i<n;i++)
        {
            if(a1[i].getInfostate()==1)
            {
                m2++;
                System.out.println(a1[i].toString());
            }
        }
        System.out.println("未通過審核的人");
        for(int i=0;i<n;i++)
        {
            if(a1[i].getInfostate()==2)
            {
                m3++;
                System.out.println(a1[i].toString());
            }
        }
        System.out.println("未審核的人有"+m1+"個人");
        System.out.println("通過審核的人有"+m2+"個人");
        System.out.println("未通過審核的人有"+m3+"個人");
    }
    static void read1() throws FileNotFoundException//讀取賬戶密碼等信息
    {
        Scanner in=new Scanner(new FileReader("user.txt"));
        c=Integer.parseInt(in.nextLine());
        
        for(int i=0;i<c;i++)
        {
            a2[i]=new userinfo();
            a2[i].readdata(in);
        }
        in.close();
    }
    static void write1() throws IOException//對用戶賬號密碼的存取
    {
        PrintWriter out=new PrintWriter(new FileWriter("user.txt"));
        out.println(c);
        for(int i=0;i<c;i++)
            {
                a2[i].writedata(out);
            }
        out.close();
        
    }
    public static void read() throws IOException {//寫文件
        Scanner in = new Scanner(new FileReader("TechInfomation.txt"));
         n = Integer.parseInt(in.nextLine());
         System.out.println(n);
        for(int i = 0;i < n;i++){
            a1[i]=new Infomation();//注意在讀取的時候要開辟好空間
            a1[i].readData(in);
        }
        in.close();//注意關閉文件流
    }
    
    public static void write() throws IOException{//讀文件
        PrintWriter out = new PrintWriter(new FileWriter("TechInfomation.txt"));
        
        out.println(n);
        for(int i = 0;i < n;i++){
            out.print("00"+(i+1)+" ");
            a1[i].writeData(out);
        }
        out.close();
    }
}
class Infomation{//信息類
    private String infonumber,infoname,infocontent;
    private double infosum;
    private int infostate,infoyear;

    public Infomation(){
        
    }
    
    public Infomation(String infoname, String infocontent,double infosum, int infostate, int infoyear) {
        this.infoname = infoname;
        this.infocontent = infocontent;
        this.infosum = infosum;
        this.infostate = infostate;
        this.infoyear = infoyear;
    }

    public String getInfonumber() {
        return infonumber;
    }

    public void setInfonumber(String infonumber) {
        this.infonumber = infonumber;
    }

    public String getInfoname() {
        return infoname;
    }

    public void setInfoname(String infoname) {
        this.infoname = infoname;
    }

    public String getInfocontent() {
        return infocontent;
    }

    public void setInfocontent(String infocontent) {
        this.infocontent = infocontent;
    }

    public double getInfosum() {
        return infosum;
    }

    public void setInfosum(double infosum) {
        this.infosum = infosum;
    }

    public int getInfostate() {
        return infostate;
    }
    public void setInfostate(int infostate) {
        this.infostate = infostate;
    }

    public int getInfoyear() {
        return infoyear;
    }

    public void setInfoyear(int infoyear) {
        this.infoyear = infoyear;
    }

    public void writeData(PrintWriter out){
        out.println(infoname + " " + infocontent + " "
                + infosum + " " + infostate + " "
                + infoyear);
    }

    public void readData(Scanner in){
        infonumber = in.next();
        infoname = in.next();
        infocontent = in.next();
        infosum = Double.parseDouble(in.next());
        infostate = Integer.parseInt(in.next());
        infoyear = Integer.parseInt(in.next());
    }

    @Override
    public String toString() {
        return "Infomation [infonumber=" + infonumber + ", infoname=" + infoname + ", infocontent=" + infocontent
                + ", infosum=" + infosum + ", infostate=" + infostate + ", infoyear=" + infoyear + "]";
    }

}
class userinfo{//用戶登錄
    String username,password;
    userinfo(){}
    userinfo(String u,String p)
    {
        username=u;
        password=p;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    void writedata(PrintWriter out)
    {
        out.println(username+" "+password);
    }
    void readdata(Scanner in)
    {
        username=in.next();
        password=in.next();
    }
    @Override
    public String toString() {
        return "userinfo [username=" + username + ", password=" + password + "]";
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM