zoukankan      html  css  js  c++  java
  • 用文件实现一个简单的系统。包括增删改查,和内容的审核

    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("			河北省重大技术需求征集系统");
            System.out.println("****************************************************************");
            System.out.println("			1、 录入技术需求信息");
            System.out.println("			2、 删除技术需求信息");
            System.out.println("			3、 审核技术需求信息");
            System.out.println("			4、 显示技术需求信息");
            System.out.println("			5、 查询技术需求信息");
            System.out.println("			6、 统计技术需求信息");
            System.out.println("			7、退出");
            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 + "]";
        }
    }
  • 相关阅读:
    51nod贪心算法入门-----完美字符串
    HDU6030----矩阵快速幂
    O(n)求1~n的逆元
    (四)添加签到奖励功能
    (三)开始在OJ上添加签到功能
    (二)OJ的主要文件
    (一)在linux上ubuntu搭建hustOJ系统
    CF 148A Insomnia cure
    lower_bound和upper_bound
    C++ string的常用功能
  • 原文地址:https://www.cnblogs.com/qingtianxt/p/6294079.html
Copyright © 2011-2022 走看看