公园资产管理

一、实验目的

1. 掌握线性表的顺序存储表示和链式存储表示。

2. 掌握顺序表和链表的基本操作,包括创建、查找、插入和删除等算法。

3. 明确线性表两种不同存储结构的特点及其适用场合,明确它们各自的优缺点。

二、实验内容

(1)基于顺序存储结构的基本操作

任务1:基于顺序存储结构的公园资产信息表的创建和输出;

任务2:基于顺序存储结构的公园资产信息表的排序;

任务3:基于顺序存储结构的公园资产信息表的修改;

任务4:基于顺序存储结构的公园资产信息表的最爱图书的查找;

任务5:基于顺序存储结构的公园资产信息表的新资产的入库;

(2)基于链式存储结构的基本操作

任务6:基于链式存储结构的公园资产信息表的创建和输出;

任务7:基于链式存储结构的公园资产信息表的排序;

任务8:基于链式存储结构的公园资产信息表的修改;

任务9:基于链式存储结构的公园资产信息表的最爱图书的查找;

任务10:基于链式存储结构的公园资产信息表的新资产的入库;

注:数据信息自定。

三、实验要求

1、实验报告要求用Java语言实现,2或3人一组。

2、完成“数据结构项目情境实验报告”。

3、完成项目程序代码的编写,并能正确运行

四、开发环境及人员分工

集成开发环境(IDE)

              Eclipse   JAVA 

项目成员

分工

五、实现过程详细说明

1.创建顺序存储结构和链式存储结构,用于存储公园资产信息

2.系统首页界面设计

3.系统功能设计

4.维护公园资产信息

六、实验总结

在本课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大型程序的能力。培养了基本的、良好的程序设计技能以及合作能力。这次课程设计同样提高了我的综合运用所学知识的能力。

七、代码实现(程序粘贴,运行结果截图)


package Libliry;//同一个package可以相互调用类

import java.util.Scanner;//类,实现控制台输入

public class main {//主函数 必须与文件名保持一致

    public static void main(String[] args) {//主函数入口

        boolean token = true;//布尔值,完成子页面后转到主页面

        String a = null;//a是在控制台的输入值

        Stack notes = new Stack(50);//notes等于stack对象

        Scanner in = new Scanner(System.in);//读取控制台输入

        while (token) {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("0.退出系统");

            a = in.nextLine();//a等于控制台输入值

            System.out.println(a);

            switch (a) {case "1":

                    while (true) {Scanner b = new Scanner(System.in);//准备输入信息

                        System.out.println("请依次输入物品名、物品编号、数量、000输入结束:");

                        String name = b.nextLine();

                        if(name.equals("000"))//判断输入,相当于c语言的等于000

                            break;//如果书名输错按000结束输入

                        String ISBN = b.nextLine();

                        float price = b.nextFloat();//浮点型,可以输小数点

                        boolean token3 = notes.insert(name, ISBN, price);//判断插入是否成功

                        System.out.println("物品名:《"+name+"》" +"\t 物品编号:"+ ISBN +"\t 数量"+ price);

                        if (token3 == true)

                            System.out.println("添加成功");

                        else:System.out.println("添加失败");//如果失败进入while循环进入输入页面}break;

                case "2":boolean token5 = false;//while里token5程序如果失败则循环token5

                    while (!token5) {System.out.println("请输入要删除的物品编码:");

                        String dno = in.nextLine();//识别输入的数字并和书架对比相当于寻址

                        if(dno.equals("000"))break;

                        token5 = notes.delete(dno);//删除

                        if (token5 == true)System.out.println("删除成功");

                        Else:System.out.println("删除失败");}break;

                case "3": LinearList tempNode = null;//创建一个实列while (tempNode == null) {

                        System.out.println("请输入要查询的物品编号:");

                        String expno = in.nextLine();//识别输入书号

                        if(expno.equals("000"))break;

                        tempNode = notes.find(expno);//寻址

                        if (tempNode != null)

                            tempNode.display(); else

                            System.out.println("查询失败"); }

                    break;case "4":notes.viewall();//显示全部break;

                case "5": boolean token7 = false; while (!token7) {

                        Scanner c = new Scanner(System.in);//创建控制台输入相当于准备输入

                        System.out.println("请依次输入要修改的项的序号,和修改后的物品名,物品编码,数量");

                        String no1 = c.nextLine();//输入书号

                        if(no1.equals("000"))break;

                        String name = c.nextLine();//输入修改后的名字

                        String ISBN = c.nextLine();//输入修改后的书号

                        float price = c.nextFloat();//输入修改后的价格

                        token7 = notes.modify(no1, name, ISBN, price);//寻址,查找并修改

                        if (token7)System.out.println("修改成功");

                        elseSystem.out.println("修改失败");

                    }

                    break;

                case "0":

                    token = false;//停止运行程序

                    System.out.println("bye---bye");

            }

        }

    }

}

package Libliry;



import java.io.Serializable;

//读取文件,相当于结束程序后下次进入还能显示上次页面

public class LinearList implements Serializable {//创建一个框架 implements Serializable继承方法

    private String name;

    private String no;

    private float price;

    // 打印节点内容

    public void display() {

        System.out.print("物品名:《" + name+"》\t");

        System.out.print("物品编号:" + no);

        System.out.print("\t数量:" + price);

    }

    public String getName() {

        return name;

    }//获取string name

    public void setName(String name) {

        this.name = name;

    }

    public String getno() {

        return no;

    }

    public void setno(String no) {

        this.no = no;

    }

    public float getprice() {

        return price;

    }

    public void setprice(float price) {

        this.price = price;

    }

}

package Libliry;



import java.io.*;

import java.io.Serializable;



class Stack implements Serializable {//堆栈继承读写方法

    public Stack(int len) {//构造函数,构造方法。

        this.maxlen = len;//最大容量

        this.len = 0;

        LinearLists = new LinearList[len];//创建长度为maxlen长度的书架

    }// 初始化

    LinearList[] LinearLists;// 声明数组

    private int maxlen;// 最大长度

    int len;

    public LinearList find(String expname) {//查找

        for (int i = 0; i < len; i++) {

            if (LinearLists[i].getno().equals(expname)) {//用遍历的方法查找书号判断与输入的书号是否一致

                System.out.println("找到了");

                return LinearLists[i]; } }return null;};// 查找

    public boolean insert(String a, String b, float c) {

        if(this.len<this.maxlen) {

            LinearLists[len] = new LinearList();

            LinearLists[len].setName(a);

            LinearLists[len].setno(b);

            LinearLists[len].setprice(c);

            len += 1;

            return true;}

        else { System.out.println("顺序表已满,请扩容。");

            return false; } }// 插入

    public boolean delete(String a) {//创建删除方法

        for (int i = 0; i < len; i++)

            if (LinearLists[i].getno().equals(a)) {//判断序号是否和输入一致

                for (int j = i; j < len-1; j++) {

                    LinearLists[j] = LinearLists[j + 1];//删除后所有书依次往前挪}

                LinearLists[len] = null;//序列最后置为空

                len -= 1;

                return true;  }

        System.out.println("没找到或输入有误");

        return false; }// 删除

    public boolean viewall() {

        for (int i = 0; i < len; i++) {

            LinearLists[i].display();//显示一个物品

            System.out.println('\n');}return false; }

    // 显示全部

    public boolean modify(String itemno, String a, String b, float c) {//创建修改方法

        LinearList exp = new LinearList();//创建新的物品

        exp = this.find(itemno);//exp替换查找到的物品

        if (exp == null)return false; exp.display();exp.setName(a);exp.setno(b);exp.setprice(c);return true; }// 修改

    public LinearList[] read() {//创建读取文件方法try {//处理中断,显示错误

            String a = "a.txt";

            FileInputStream fis = new FileInputStream(a);//输入文件流

            ObjectInputStream ois = new ObjectInputStream(fis);//输入对象流

            this.LinearLists = (LinearList[]) (ois.readObject());//将对象六转换为书架

            for (int i = 0; i < LinearLists.length; i++) {//判断容量

                if (LinearLists[i] == null) {this.len = i;break; } } System.out.println(this.len);

            System.out.println("读取成功");

            ois.close(); } catch (IOException | ClassNotFoundException e) {//扑捉错误中断

            System.out.println(e);//e是具体错位对象

        } return LinearLists; }// 读取

public boolean write() {//定义写入方法

        try {FileOutputStream fos = new FileOutputStream("a.txt");//文件输出流

            ObjectOutputStream oos = new ObjectOutputStream(fos);//创建对象输出流

            oos.writeObject(LinearLists);//将书架输出为对象输出流oos.close();

        } catch (IOException e) {System.out.println(e); }return false; }

    // 存储

    public boolean similarize() {//判断物品编号

        for (int i = 0; i < len; i++) {

            for (int j =i+1 ; j <len; j++) {

                String a = LinearLists[i].getno();

                String b = LinearLists[j].getno();

                if(a.equals(b)) {for (int k=j; k<len; k++) {

                        LinearLists[k] = LinearLists[k + 1];//代替重复}

                    LinearLists[len] = null;

                    len -= 1;} } }return true; }}

                                                             
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值