21年_编程_Java_5个月学习_项目_思路分析以及源代码

1、项目名称:学生管理系统

1.1、所用的主要知识点总结

类、数组(存取对象)、循环、静态代码块、get/set方法

1.2、实现的功能

学生数据的增删查改。

1.3具体分析

创建三个类:学生类、存储学生类、存存类
功能分析:
显示所有学生信息:
删除学生信息:
修改学生信息
添加学生信息
退出学生管理系统

1.4、源码

1、studTest类代码

package com.qianfeng.homeword.day09;

import com.shangguigu.day13.array01.Array;

import java.sql.SQLOutput;
import java.util.Scanner;

public class StuTest {
    //定义成为全局静态属性,优先加载进内存
    public  static Scanner sc = new Scanner(System.in);
    //将学生数组对象进行调用.共用对象地址,已达到共享目的
    public  static Student[] stuArray = StudentDB.student;
    public static void main(String[] args) {
        do{
            printMenu();
            int option = sc.nextInt();
            //根据选项做对应的事情
            switch (option){
                case 1:
                    selectAll();
                    break;
                case 2:
                    deleteStudent();
                    break;
                case 3:
                    updateStudent();
                    break;
                case 4:
                    addStudent();
                    break;
                case 5:
                    System.out.println("-----感谢使用,欢迎下次再进入-----");
                    return;
                default:
                    System.out.println("输入有误");
                    break;
            }
            System.out.println("\n\n\n");
        }while (true);
    }

    /**
     * 添加学生信息
     */

    public static void addStudent(){
        if(stuArray[stuArray.length-1]==null){
            System.out.println("学生已经存贮满了,请删除一些在重新添加");
        }
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        for (int i = 0; i < stuArray.length; i++) {
            //判断如果是空的话说明是在数组对象底部
            if(stuArray[i]==null){
                stuArray[i] = new Student(name,age);
                System.out.println("添加成功");
                break;
            }
        }
    }

    /**
     * 修改学生的信息
     */

    public static void updateStudent(){
        System.out.println("请输入学生的学号:");
        int stuNum = sc.nextInt();
        Student student = getStudentById(stuNum);
        if(student==null) {
            System.out.println("系统内没有该学生或者输入的id有误");
            return;
        }else{
            System.out.println("请输入学生姓名:");
            String stuName = sc.next();
            System.out.println("请输入学生年龄:");
            int  stuAge = sc.nextInt();
            student.setName(stuName);
            student.setAge(stuAge);
            System.out.println("修改成功");
        }
    }

    /**
     * 按照给定索引删除学生的信息
     */

    public static void deleteStudent() {

        System.out.println("请输入stuNum:");
        int index = sc.nextInt();
        boolean of =false;
        //搜索存在索引对应数组中的索引,并返回对应索引的对象
        Student student = getStudentById(index);
        if(student==null){
            System.out.println("系统内没有该学生或者输入的id有误");
            return;
        }else {
            for (int i = 0; i < stuArray.length; i++) {
                //将每一个对象赋值给新的对象
                Student stu = stuArray[i];
                if(stu==null){
                    System.out.println("删除成功");
                    break;
                }
                //查到和搜索的index在数组中的位置,定义好替换开关
                if(stu.getStuNum()==index){
                    of = true;
                }
                //替换对应索引元素,索引对应的对象的分别向前覆盖
                if(of&&(i!=stuArray.length-1)){
                   stuArray[i] = stuArray[i+1];
                }

                //判断对象是否为最后一个
                if(i==stuArray.length-1){
                    stuArray[i] = null;
                    System.out.println("删除成功");
                }

            }
        }

    }

    /**
     * 根据索引查找到对象
     * @param index
     * @return
     */

    public static Student getStudentById(int index) {
        Student student;
        for (int i = 0; i < stuArray.length; i++) {
            //先判断数组对象内是否有对象
            if(stuArray[i]==null){
               return null;
            }else if(stuArray[i].getStuNum()==index) {
                //有对象的话,就返该索引该学生对应的对象
                return stuArray[i];
            }
        }
        return null;
    }

    /**
     * 查询所有的学生信息
     */
    private static void selectAll() {
        //遍历循环,输出所有的在数组内学生的信息
        for (int i = 0; i < stuArray.length; i++) {
            //判断对象是否为空,如果为空的,说明已经遍历所有的对象了
            if (stuArray[i]!=null){
                System.out.println(stuArray[i]);
            }else {
                break;
            }
        }

    }




    /**
     * 打印界面
     */
    private static void printMenu() {
        System.out.println("-----欢迎来到您的备学生管理系统----");
        System.out.println("-----1.展示所有学生管理的信息----");
        System.out.println("-----2.删除学生管理信息----");
        System.out.println("-----3.修改学生管理信息----");
        System.out.println("-----4.添加学生管理信息----");
        System.out.println("-----5.退出系统----");
    }
}

2、StudentDB类代码

package com.qianfeng.homeword.day09;

public class StudentDB {
    //定义100个存储StudentDB[] 对象的数组
    public static Student[] student = new Student[100];
    //静态代码块初始化部分
    static {
        student[0] = new Student("张三",11);
        student[1] = new Student("李四",22);
        student[2] = new Student("王五",31);
        student[3] = new Student("赵六",44);
        student[4] = new Student("李狗",11);
        student[5] = new Student("刘蛋",14);
    }
}


3、Student类代码

package com.qianfeng.homeword.day09;

public class Student {
    private String name;
    private int age;
    private int stuNum = 1;
    //自增用,设为静态变量这样每一个stuNum都是唯一的
    private static int addcount = 0;

    public Student() {
        this.stuNum = ++addcount;
    }

    public int getStuNum() {
        return stuNum;
    }

    public void setStuNum(int stuNum) {
        this.stuNum = stuNum;
    }

    public Student(String name, int age) {
        //调用无参的构造方法,使stuNum自增
        this();
        this.name = name;
        this.age = age;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", stuNum=" + stuNum +
                '}';
    }
}

2.项目信息:用户管理系统

2.1、所用知识点

ArrayList集合的set、get、remove方法,遍历用for增强型遍历

2.2、感悟

用集合果然比数组方便以及块,因为ArrayList底层是动态数组,容量不需要我们去操心,操作起来级更加快捷,不过集合中的数据保存在内存中,结束操作后数据就会没有。

2.3、源码

package com.shangguigu.day17.project.manager;

import com.shangguigu.day17.project.bean.Customer;

import java.util.*;

/**
 * 客户管理系统系统
 */
public class CustomerManager {
    //定义集合,泛型为Customer,不能添加该对象之外的其他元素
    private List<Customer> customeList = new ArrayList<>();
    //设置输出为全局
    private  Scanner scanner = new Scanner(System.in);
    //集合数据的初始化
    private void init(){
        customeList.add(new Customer(1,"zs"));
        customeList.add(new Customer(2,"ls"));
    }

    public void menu(){
        init();//初始化到集合
        while (true){
            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("请输入编号");
            int numNo = scanner.nextInt();
            switch (numNo){
                case 1:
                    addCustom();
                    break;
                case 2:
                    //删除客户心得
                    delCustom();
                    break;
                case 3:
                    //查找用户数据
                    list();
                    break;
                case 4:
                    //修改用信息
                    updateCust();
                    break;
                case 5:
                    //查找指定用户信息的
                    findid();
                    break;
                case 6:
                    System.out.println();
                    System.exit(0);
                    break;
                default:
                    System.out.println("输入有误");
            }
        }
    }

    /**
     * 根据特定id,查找特定id用户的信息
     *
     */
    private void findid() {
        System.out.println("请输入要查找客户信息的id");
        int id = scanner.nextInt();
        int index=-1;//记录遍历到相等的索引
        for (int i = 0; i < customeList.size(); i++) {
            int idx = customeList.get(i).getId();
            index++;
            if(idx==id){
                break;
            }
        }
        if (id==-1){
            System.out.println("系统中无此用户");
        }else {
            System.out.println(customeList.get(index));
            System.out.println("查找用户信息完毕!!!");
        }
    }

    /**
     * 修改客户信息
     *      1、根据id进行修改
     *      2、遍历对比对象属性id,然后再重新输入姓名。
     */

    private void updateCust() {
        System.out.println("请输入要修改的客户id");
        int id = scanner.nextInt();
        int index = -1;
        for (int i = 0; i < customeList.size(); i++) {
            int idx = customeList.get(i).getId();
            index++;
            if(idx==id){
                break;
            }
        }
        if(index==-1){
            System.out.println("没有找到客户");
            return;
        }else {
            System.out.println("修改名字为");
            String name = scanner.next();
            customeList.set(index,new Customer(id,name));
        }
    }

    /**
     * 删除客户信息
     *      思路:1、判断集合是否为空
     *      2、遍历是否有相等的id
     */

    private void delCustom() {
        System.out.println("请输入要删除的客户id");
        int id = scanner.nextInt();
        int index=-1;//定义保存索引
        for (int i = 0; i < customeList.size(); i++) {
            int idx = customeList.get(i).getId();
            index++;
            if(idx==id){
                break;
            }
        }
        if(index==-1){
            System.out.println("没有找到客户");
            return;
        }else {
            customeList.remove(index);
        }
        System.out.println("删除用户成功!!!");
    }

    /**
     * 查找用户数据
     */
    private void list() {
        //如果数据为空
        if (customeList.isEmpty()){
            System.out.println("集合中不存在数据");
            return;//结束方法
        }
        //否则遍历
        for(Customer cust:customeList){
            System.out.println(cust);
        }
        System.out.println("遍历完成");
    }

    private void addCustom() {
        System.out.println("选择的是添加客户数据");
        System.out.println("请输入客户id:");
        int id = Integer.parseInt(scanner.next());
        //不能添加重复编号的员工
        for (int i = 0; i < customeList.size(); i++) {
            if (customeList.get(i).getId()==id){
                System.out.println("系统中已经存在相同的用户id,请在重新添加");
                return;//直接结束方法
            }
        }
        System.out.println("请输入客户的名字");
        String name = scanner.next();
        customeList.add(new Customer(id,name));//添加新的用户
        System.out.println("数据添加成功");
    }

}


package com.shangguigu.day17.project.manager;

public class Test {
    public static void main(String[] args) {
        new CustomerManager().menu();
    }
}

package com.shangguigu.day17.project.bean;

public class Customer {
    private int id;
    private String name;

    public Customer() {
    }

    public Customer(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Customer{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java完整项目,实现良好,图形界面 具体函数的实现: 首先进入航空公司系统之后,通过run函数的调用选择自己的身份(用户、预订代理、管理员和VIP)。 如果选择普通用户则进入clientRun()函数中,用户可选择预留票、购买票、购买预留票、申请VIP、买电子票或者退出。若选择预留票则进入bookTicket()函数,可根据用户的输入信息进行判断信息是否匹配,如果是第一次登陆,则系统会要求用户先进行注册用户信息然后再买票。如果已选好航班要支付机票时,则调用payClientTicket()函数对输入的航班信息通过遍历FlightDataBase.txt文件查找匹配的数据,再将用户买票的情况以及机票的可获得性,用户的余额等信息写入对应的文件中,通过调用ClientDatabae类中的getTicket()函数来实现支付票功能。如果用于选择购买预留票,则通过调用buyLeftTicket()函数来实现,也是调用getTicket()来实现。申请VIP可将输入信息写入ClientDataBase.txt文件中并且如果该用户已经存在,那么原来的信息将被覆盖,如果原来没有该用户,那么将新建一个VIP,同样,如果用户想购买电子票,那么其他流程和购买机票一样,只是系统会给用户一个随机的检票码来供用户在通过检票口的时候使用。 若是VIP登陆,VIP作为Client的子类。 如果以管理员的身份登录则调用adminRun()函数,那么可以查看所有用户和代理的信息,以及对代理的添加与删除,还可以查看余票信息。通过对文件的读取来查看信息,通过对数据文件的写入来增加addAgent()或删除deleteAgent()代理。 如果一代理人的身份登录要调用agentRun()函数,通过对数据文件的读取来获取航班信息,预留客户信息,预订客户信息,普通用户与VIP的信息。通过对FlightDataBase的写入来增加航班。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值