JAVA课程结课实验代码(河北省重大技术需求征集系统设计)

Posted L.P.B_Blizzard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA课程结课实验代码(河北省重大技术需求征集系统设计)相关的知识,希望对你有一定的参考价值。

第一部分:账号密码类

package IOP;
/**
 * 数1401班
 * 20143253
 * 吕鹏博
 * 时间 2016年12月21日17:45:42
 */
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;

/*
 * 账号、密码类*/
public class Pass {
    private String accounts, password;// 账号密码

    Pass() {
        this.accounts = "0";
        this.password = "0";
    }

    Pass(String a, String b) {
        this.accounts = a;
        this.password = b;
    }

    public Pass[] readAccount() {
        Pass[] a = new Pass[10];
        try {
            BufferedReader in = new BufferedReader(new FileReader("user.txt"));
            String s1 = in.readLine();
            for (int i = 0; i <= 4; i++) {
                String s = in.readLine();
                StringTokenizer t = new StringTokenizer(s, "|");
                a[i] = new Pass(t.nextToken(), t.nextToken());
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        } 
            return a;
        }
    /*
     * 验证密码是否正确
     */
    public boolean isTrue(String a, String b) {
        boolean i = false;// 不正确输出0
        Pass[] p = new Pass[5];
        p = this.readAccount();
        for (int j = 0; j <= 4; j++) {
            if (a.equals(p[j].accounts) && b.equals(p[j].password)) {
                i = true;
            } // 登录成功
        }
        return i;
    }

    /*
     * 初始化账户文件
     */
    public void initializeAccount(Pass[] a) throws IOException {
        PrintWriter in = new PrintWriter(new FileWriter("user.txt"), true);
        in.println("账号" + "密码");
        for (int i = 0; i <= a.length - 1; i++) {
            in.println(a[i].accounts + "|" + a[i].password);
        }
        in.close();
    }
}

class LOginException extends Exception {
    LOginException(String s) {
        super(s);
    }
}

第二部分:操作类(包括增删改查等)

package IOP;
/**
 * 数1401班
 * 20143253
 * 吕鹏博
 * 时间 2016年12月21日17:45:42
 */
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;

class Information

{
    private String infornumber;
    private String inforname;
    private String infocontent;
    private int inforyear;
    private double infosum;
    private int infostate;

    public Information()// 定义默认信息
    {
        infornumber = "000";
        inforname = "noname";
        infocontent = "noone";
        infosum = 0;
        inforyear = 2016;
        infostate = 0;
    }

    public Information(String a, String b, String c, double d, int e)// 实例化方法
    {
        infornumber = a;
        inforname = b;
        infocontent = c;
        infosum = d;
        inforyear = e;
        infostate = 0;
    }

    public void setinfornumber(String x) {

        infornumber = x;

    }

    public String getinfornumber() {
        return infornumber;
    }

    public void setinfornam(String Y) {
        inforname = Y;
    }

    public String getinforname() {
        return inforname;
    }

    public void setinfocontent(String z) {
        infocontent = z;
    }

    public String getinfocontent() {
        return infocontent;
    }

    public void setinfosum(double s) {
        infosum = s;
    }

    public double getinfosum() {
        return infosum;
    }

    public void setinfoyear(int s) {
        inforyear = s;
    }

    public int getinfoyear() {
        return inforyear;
    }
    
    public void setinfostate(int s) {
        infostate = s;
    }

    public double getinfostate() {
        return infostate;
    }

    public String tostring() {

        return "编号" + this.infornumber + "名称" + this.inforname + "内容" + this.infocontent + "投资金额" + this.infosum
                + "需求年份" + this.inforyear + "需求状态" + this.infostate;

    }

    public void readData(BufferedReader in) throws IOException {// 把一条记录从输出流中读出
        String s = in.readLine();
        StringTokenizer t = new StringTokenizer(s, "|");
        infornumber = t.nextToken();
        inforname = t.nextToken();
        infocontent = t.nextToken();
        infosum = Double.parseDouble(t.nextToken());
        inforyear = Integer.parseInt(t.nextToken());
        infostate = Integer.parseInt(t.nextToken());
    }

    public void writeData(PrintWriter out) throws IOException {// 把一条记录写入输入流中
        out.println(
                infornumber + "|" + inforname + "|" + infocontent + "|" + infosum + "|" + inforyear + "|" + infostate);
    }
}

@SuppressWarnings("serial")
class InputException extends Exception {
    InputException(String s){
    super(s);}
}
public class InformationManage 
{
    static void writeall(Information[] tm) {// 把数组从文件中读出,以后只对数组进行操作
        try {
            PrintWriter out = new PrintWriter(new FileWriter("TechInformation.txt"));
            writeData(tm, out);
            out.close();
        } catch (IOException e) {
            System.out.print(e);
        }
    }

    static void writeData(Information[] tm2, PrintWriter out) throws IOException {// 把数组存入写入流
        out.println(tm2.length);
        for (Information e : tm2) {
            e.writeData(out);
        }
    }

    static Information[] readData(BufferedReader in) throws IOException {// 从输出流中读取数组
        int n = Integer.parseInt(in.readLine());
        Information[] employees = new Information[n];
        for (int i = 0; i < n; i++) {
            employees[i] = new Information();
            employees[i].readData(in);
        }
        return employees;

    }

    @SuppressWarnings("finally")
    public static Information[] getArray() throws FileNotFoundException {// 从文件中直接取出数组,然后被每个函数调用,进行操作
        BufferedReader in = null;
        Information[] newstaff = null;
        try {
            in = new BufferedReader(new FileReader("TechInformation.txt"));
            newstaff = readData(in);
            in.close();
        } catch (IOException e) {
            System.out.println(e);
        } finally {

            return newstaff;
        }
    }

    public static void showInformation() {//显示所有的信息
        BufferedReader in;
        try {
            in = new BufferedReader(new FileReader("TechInformation.txt"));
            Information[] newstaff = null;
            try {
                newstaff = readData(in);
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            for (int i = 0; i < newstaff.length; i++)
                if (!newstaff[i].getinfornumber().equals("000"))
                    System.out.println(newstaff[i].tostring());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    static String addop(int i) {//累加编号,为增添信息的方法做铺垫
        String io = "";
        if (i / 10 == 0) {
            io = "00" + String.valueOf(i);
        } else if (i / 100 == 0 && i % 10 != 0) {
            io = "0" + String.valueOf(i);
        } else if (i / 1000 == 0 && i % 100 != 0) {
            io = String.valueOf(i);
        }
        return io;
    }
    
    @SuppressWarnings("resource")
    public static void addInformation() {//增加信息
        String str1 = null;
        String str2 = null;
        String str3 = null;
        String str4 = null;
        Information stu;
        double i1 = 0;
        int count1 = 0;
        boolean se = true;
        int i2 = 0;
        Scanner input0;
        System.out.println("请输入项目名称:(如:雄鹰计划)\n");
        input0 = new Scanner(System.in);
        str1 = input0.nextLine();
        System.out.println("请输入项目内容:(如:xiaoming)\n");
        input0 = new Scanner(System.in);
        str2 = input0.nextLine();
        System.out.println("请输入项目金额:(如:200.0)\n");
        input0 = new Scanner(System.in);
        str3 = input0.nextLine();
        i1 = Double.parseDouble(str3);
        System.out.println("请输入项目年限:(如:2016)\n");
        while (se) {
            Scanner input3 = new Scanner(System.in);
            str4 = input3.nextLine();
            i2 = Integer.parseInt(str4);
            if (i2 > 2016) {
                System.out.println("请重新输入项目年限:(如:2016)\n");
                se = true;
                try {
                    throw new InputException("超过实际年限\n");
                } catch (InputException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                se = false;
            }
            System.out.println("请输入项目年限:(如:2016)\n");
        }
        Information[] newstaff1 = null;
        try {
            newstaff1 = getArray();
            for (int i = 0; i < newstaff1.length; i++) {
                if (newstaff1[i].getinforname().equals(str1)) {
                    System.out.println("该项目已存在,请重新添加。");
                    break;
                } else if (newstaff1[i].getinforname().equals("noname")) {
                    count1 = i;
                    stu = new Information(addop(i), str1, str2, i1, i2);
                    newstaff1[count1] = stu;
                    System.out.println("存储成功。");
                    break;
                }
            }
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        writeall(newstaff1);
    }

    public static void deleteInformation() {//删除的方法(可通过项目编号和项目名称分别选择)
        String key = null;
        System.out.println("[1]=项目编号\n[2]=项目名称");
        @SuppressWarnings("resource")
        Scanner br = new Scanner(System.in);
        key = br.nextLine();
        int s = Integer.parseInt(key);
        if (s == 1) {
            br = new Scanner(System.in);
            System.out.print("请输入项目编号:");
            key = br.nextLine();
        } else {
            br = new Scanner(System.in);
            System.out.print("请输入项目名称:");
            key = br.nextLine();
        }
        int count = 0;
        Information[] newstaff = null;
        try {
            newstaff = getArray();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for (int i = 0; i < newstaff.length; i++) {
            if (newstaff[i].getinfornumber().equals(key) || newstaff[i].getinforname().equals(key)) {
                newstaff[i] = new Information();
                System.out.println("删除成功。");
                break;
            }
            count++;
        }
        if (count == newstaff.length) {
            System.out.println("您所需要删除的信息不存在!");
        }
        writeall(newstaff);
    }

    @SuppressWarnings("resource")
    public static void examInformation()// 审核的方法
    {
        String key = null;
        Information[] newstaff = null;
        try {
            newstaff = getArray();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("目前所拥有的未审核项目的编号和名称如下所示:");
        for(int i=0;i<newstaff.length;i++){
            if(newstaff[i].getinfostate()==0&&(!newstaff[i].getinfornumber().equals("000"))&&(!newstaff[i].getinforname().equals("noname"))){
        System.out.println("项目编号:"+newstaff[i].getinfornumber()+"   项目名称:"+newstaff[i].getinforname());}}
        System.out.println("\n请输入你的选择(如(1或2))\n[1]=项目编号\n[2]=项目名称\n");
        Scanner br = new Scanner(System.in);
        key = br.nextLine();
        int s = Integer.parseInt(key);
        Scanner br1;
        if (s == 1) {
            br1 = new Scanner(System.in);
            System.out.print("请输入项目编号:\n");
            key = br1.nextLine();
        } else {
            br1 = new Scanner(System.in);
            System.out.print("请输入项目名称:\n");
            key = br1.nextLine();
        }
        int count = 0;
        int special = 0;
        for (int i = 0; i < newstaff.length; i++) {
            if (newstaff[i].getinfornumber().equals(key) || newstaff[i].getinforname().equals(key)) {
                special = i;
                break;
            }
            count++;
        }
        if (count == newstaff.length) {
            System.out.println("您所要审阅的信息不存在!");
        }
        if (newstaff[special].getinfostate() == 0) {
            String mes = "****************\n" + "审核技术需求信息" + "\n****************\n" + "1、返回主界面" + "\n2、通过审核"
                    + "\n3、退回审核\n";
            System.out.print(mes);
            Scanner sq = new Scanner(System.in);
            int cho = sq.nextInt();
            switch (cho) {
            case 1:
                break;
            case 2:
                newstaff[special].setinfostate(1);
                break;
            case 3:
                newstaff[special].setinfostate(2);
                break;
            }
        } else if (newstaff[special].getinfostate() == 1) {
            System.out.println("已通过审核");
        } else if (newstaff[special].getinfostate() == 2) {
            System.out.println("该信息已被退回");
        }
        System.out.println("审核完毕,返回上一层界面。");
        writeall(newstaff);
    }

    @SuppressWarnings("resource")
    public void selectInformation() {//查询方法:(只能用项目名称查询)
        Information[] a = null;
        try {
            a = getArray();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.print("请输入要查询的项目名称\n");
        Scanner s = new Scanner(System.in);
        String name = s.nextLine();
        int uo = 0;
        for (int value = 0; value < a.length; value++) {
            if (a[value].getinforname().equals(name)) {
                uo = value;
            }

        }
        System.out.print(a[uo].tostring() + "\n");
    }

    public void countStudent() {//统计方法
        Information[] a = null;
        try {
            a = getArray();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        int o = 0, b = 0, c = 0;
        for (int i = 0; i < a.length; i++) {
            if (!a[i].getinforname().equals("noname")) {
                if (a[i].getinfostate() == 0) {
                    o++;
                } else if (a[i].getinfostate() == 1) {
                    b++;
                } else if (a[i].getinfostate() == 2) {
                    c++;
                }
            }
        }
        System.out.print("未审核的需求信息" + o + "\n通过审核的需求信息" + b + "\n未通过审核的需求信息" + c + "\n");

    }

}

第三部分:主类(在主函数中实现,包括界面等)

package IOP;

/**
 * 数1401班
 * 20143253
 * 吕鹏博
 * 时间 2016年12月21日17:45:42
 */
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;

public class WINDOWSHOW {

    public static void main(String[] args) throws FileNotFoundException {

        Pass[] a = new Pass[5];
        a[0] = new Pass("0", "0");
        a[1] = new Pass("1", "1");
        a[2] = new Pass("2", "2");
        a[3] = new Pass("3", "3");
        a[4] = new Pass("4", "4");
        try {
            a[0].initializeAccount(a);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Information[] a1 = new Information[20];
        a1[0] = new Information("001", "a", "1231", 18, 2016);
        a1[1] = new Information("002", "b", "1231", 18, 2016);
        a1[2] = new Information("003", "c", "1231", 18, 2016);
        a1[3] = new Information("004", "d", "1231", 18, 2016);
        a1[4] = new Information("005", "e", "1231", 18, 2016);
        for (int i = 5; i < a1.length; i++) {
            a1[i] = new Information();
        }
        InformationManage sq = new InformationManage();
        sq.writeall(a1);
        try {
            if (LOgin(a[0])) {
                operation(sq);
            }
        } catch (LOginException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.exit(0);
    }

    static void operation(InformationManage sq) {// 把操作过程集成在此方法中.
        show();

        @SuppressWarnings("resource")
        Scanner in = new Scanner(System.in);
        int choice = in.nextInt();

        while (choice != 7) {
            switch (choice) {
            case 1:
                sq.addInformation();
                break;
            case 2:
                sq.deleteInformation();
                break;
            case 3:
                sq.examInformation();
                break;
            case 4:
                sq.showInformation();
                break;
            case 5:
                sq.selectInformation();
                ;
                break;
            case 6:
                sq.countStudent();
                break;
            }
            show();
            in = new Scanner(System.in);
            choice = in.nextInt();
        }
        if (choice == 7) {
            System.out.println("结束");
        }
    }

    /*
     * 登录界面,输入账号密码。传入一个Pass实例化的类,用来调用类中的isTrue方法 返回一个整型参数i,1表示高级权限,2表示低级权限
     */
    static boolean LOgin(Pass a) throws LOginException {// 登录系统时的方法
        int j = 1;
        boolean flag = false;
        while (j <= 3) {
            System.out.println("***********************************************");
            Scanner in = new Scanner(System.in);
            System.out.println("请输入账号");
            String account = in.nextLine();
            System.out.println("请输入密码");
            String password = in.nextLine();
            if (!a.isTrue(account, password)) {
                System.out.println("密码错误,请重新输入!您还有" + (3 - j) + "次机会!");
            } else {
                flag = true;
                break;
            }
            j++;
        }
        if (j >= 3)
            throw new LOginException("输入密码错误三次!机器锁定!");
        return flag;
    }

    public static void show() {// 界面展示,每次只用调用即可,不用每次都写
        String s = "";

        s = "*****************************************\n";
        s = s + "          河北省重大技术征集系统    \n";
        s = s + "****************************************\n";
        s = s + "    1、录入技术需求信息\n";
        s = s + "    2、删除技术需求信息\n";
        s = s + "    3、审核技术需求信息\n";
        s = s + "    4、显示技术需求信息\n";
        s = s + "    5、查询技术需求信息\n";
        s = s + "    6、统计技术需求信息\n";
        s = s + "    7、退出系统\n";
        System.out.print(s);
    }

}

 

以上是关于JAVA课程结课实验代码(河北省重大技术需求征集系统设计)的主要内容,如果未能解决你的问题,请参考以下文章

河北省重大技术需求征集系统原型

《软件工程》 实发项目系统开发——河北省重大技术需求征集系统原型

《河北省重大技术需求征集系统》进度三

《河北省重大技术需求征集系统》可用性及可修改性战术分析

基于《河北省重大技术需求征集系统》的可用性和可修改性战术分析

阅读《大型网站技术架构:核心原理与案例分析》第七章,结合《河北省重大技术需求征集系统》,列举实例分析采用的可用性和可修改性战术