真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于線性表的圖書管理系統(tǒng)(java)-創(chuàng)新互聯(lián)

? ??

目錄

創(chuàng)新互聯(lián)在網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、重慶APP軟件開發(fā)、網(wǎng)站運(yùn)營(yíng)等方面均有出色的表現(xiàn),憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,我們更提供一系列成都全網(wǎng)營(yíng)銷推廣,網(wǎng)站制作和網(wǎng)站推廣的服務(wù),以推動(dòng)各中小企業(yè)全面信息化,并利用創(chuàng)新技術(shù)幫助各行業(yè)提升企業(yè)形象和運(yùn)營(yíng)效率。

??

1、簡(jiǎn)介?

2、代碼

(1)ManageSystem類

(2)book類?

3、測(cè)試程序運(yùn)行結(jié)果截圖

(1)登錄和創(chuàng)建

(2)輸出

(3)查找

(4)插入

(5)刪除

(6)修改

(7)排序

(8)計(jì)數(shù)

(9)導(dǎo)出

(10)讀入

(11)菜單

4、存在的問(wèn)題與思考


基于線性表的圖書管理系統(tǒng) 1、項(xiàng)目簡(jiǎn)介?

?順序表是線性表的順序存儲(chǔ)結(jié)構(gòu),是指用一組連續(xù)的存儲(chǔ)單元依次存放線性表的數(shù)據(jù)元素。在順序存儲(chǔ)結(jié)構(gòu)下,邏輯關(guān)系相鄰的兩個(gè)元素在物理位置上也相鄰,這是順序表的特點(diǎn)。

?順序表適宜于做查找這樣的靜態(tài)操作,順序存儲(chǔ)的優(yōu)點(diǎn)是存儲(chǔ)密度大,存儲(chǔ)空間利用率高。缺點(diǎn)是插入或刪除元素時(shí)不方便,需要移動(dòng)大量元素o(n),預(yù)先分配空間需按大空間分配,利用不充分,表容量難以擴(kuò)充。

?要完成這個(gè)題目,主要是建立圖書信息的存儲(chǔ)。本項(xiàng)目采用線性表的順序存儲(chǔ)結(jié)構(gòu)。以圖書信息為例,本項(xiàng)目的數(shù)據(jù)是一組圖書信息,每條圖書信息由圖書ISBN號(hào)、圖書名稱、作者名稱、出版社名稱等信息組成,這組圖書信息具有相同特性,屬于同一數(shù)據(jù)對(duì)象,相鄰元素之間存在序偶關(guān)系,這些數(shù)據(jù)具有線性表中數(shù)據(jù)元素的性質(zhì),所以該系統(tǒng)的數(shù)據(jù)采用線性表來(lái)存儲(chǔ)。本圖書管理系統(tǒng)分為兩個(gè)結(jié)構(gòu)體,一個(gè)是圖書結(jié)構(gòu)體,用于存放圖書的基本信息,另一個(gè)是圖書管理結(jié)構(gòu)體,實(shí)現(xiàn)管理圖書的功能。圖書的存儲(chǔ)結(jié)構(gòu)用ArrayList實(shí)現(xiàn)。

?具體存儲(chǔ)操作:在ManageSystem類中獲取一本書籍的具體信息,通過(guò)book類初始化方法實(shí)例化為一個(gè)book實(shí)例,然后存入ManageSystem類中的ArrayList列表中。

2、項(xiàng)目代碼 (1)ManageSystem類
package dataStructure;

import java.io.*;
import java.util.*;

public class ManageSystem {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayListlibrary = new ArrayList<>();

        // 判斷登錄是否成功
        String LibName = null;
        boolean login = false;
        String[] admin = {"a","b","c","d"};
        String[] password = {"a","b","c","d"};
        while (!login){
            System.out.print("請(qǐng)輸入圖書管理系統(tǒng)名字:");
             LibName = sc.nextLine();
            System.out.print("請(qǐng)輸入圖書管理系統(tǒng)密碼:");
            String LibPW = sc.nextLine();
            for (String s: admin){
                if (s.equals(LibName) && password[Arrays.binarySearch(admin,s)].equals(LibPW)){
                    library=create();
                    System.out.println("登錄成功!當(dāng)前圖書管理系統(tǒng):"+LibName);
                    System.out.println();
                    login=true;
                }
            }
            if (!login) System.out.println("登錄失??!賬號(hào)或密碼有誤,請(qǐng)重新輸入!");
        }

        boolean exist = true;
        while(exist){
            System.out.println("當(dāng)前圖書管理系統(tǒng):"+LibName);
            System.out.println(
                    "1、輸出圖書信息表\n"+
                            "2、查找圖書\n"+
                            "3、插入圖書信息\n"+
                            "4、刪除圖書信息\n"+
                            "5、修改指定圖書信息\n"+
                            "6、圖書排序\n"+
                            "7、圖書數(shù)量統(tǒng)計(jì)\n"+
                            "8、導(dǎo)出圖書信息\n"+
                            "9、讀入圖書信息\n");
            System.out.print("請(qǐng)輸入你的選擇(輸入-1退出系統(tǒng)):");
            if (!sc.hasNextInt()) {
                String string = sc.next();
                System.out.println("輸入有誤!");
                System.out.println();
            }else {
                int how = sc.nextInt();
                switch(how){
                    case -1:
                        exist = false;
                        break;
                    case 1://顯示:輸出
                        output(library);
                        break;
                    case 2: //根據(jù)ISBN或書名查找圖書
                        search(library);
                        break;
                    case 3: //插入
                        book insert = insert();
                        library.add(insert);
                        break;
                    case 4: //根據(jù)ISBN號(hào)刪除圖書信息
                        library = delete(library);
                        break;
                    case 5: //根據(jù)ISBN修改價(jià)格
                        change(library);
                        break;
                    case 6://按照價(jià)格排序
                        compare(library);
                        break;
                    case 7: //計(jì)數(shù)
                        System.out.println("圖書館內(nèi)一共有" + calculate(library) + "冊(cè)圖書。");
                        break;
                    case 8: //導(dǎo)出
                        try{
                            outputData(library);
                        } catch (IOException e){}
                        break;
                    case 9: //讀入
                        try{
                            library=importData(library);
                        } catch (IOException e){}
                        break;
                }
                System.out.println();
            }
        }
    }

    public static ArrayListcreate(){
        ArrayListlibrary = new ArrayList<>();
        printTitle();
        return library;
    }

    public static void output(ArrayListlibrary){
        printTitle();
        for(book b: library){
            printContent(b);
        }
    }

    public static void search(ArrayListlibrary){
        Scanner sc = new Scanner(System.in);
        System.out.print("請(qǐng)輸入您想查詢的書籍的ISBN號(hào)或名稱:");
        String search = sc.nextLine();
        boolean flag = false;
        for(book b : library) {//原本判斷條件里面有break,但是考慮到可能有多本相同的圖書入庫(kù),需要全部輸出,因而刪除break
            if (search.equals(b.getISBN()) || search.equals(b.getName())) {
                if (!flag){
                    System.out.println("您所查詢的圖書信息為:");
                    printTitle();
                    flag=true;
                }
                printContent(b);
            }
        }
        if (!flag){
            System.out.println("抱歉!未能找到您想查詢的圖書。");
        }
    }

    // 0000000010 微觀經(jīng)濟(jì)學(xué) 王陸 中國(guó)人民出版社 2003-04-28 54.00 經(jīng)濟(jì)類 在架上
    public static book insert(){
        Scanner sc = new Scanner(System.in);
        printTitle();
        System.out.println("請(qǐng)輸入新增的書籍的具體信息:");
        String all = sc.nextLine();
        String[] content = all.split(" ");
        book a = new book(content[0],content[1],content[2],content[3],content[4],Double.parseDouble(content[5]),content[6],content[7]);
        System.out.println("書籍加入成功!");
        return a;
    }

    public static ArrayListdelete(ArrayListlibrary) {
        Scanner sc = new Scanner(System.in);
        System.out.print("請(qǐng)輸入您想刪除的書籍的ISBN號(hào):");
        String delete = sc.nextLine();
        boolean flag = false;
        for (int i = 0; i< library.size(); i++) {
            book b = library.get(i);
            if (delete.equals(b.getISBN()) && b.getIson().equals("在架上")) {
                printTitle();
                printContent(b);
                library.remove(i);
                flag = true;
                System.out.println("刪除成功!");
                break;
            }
        }
        if (!flag) {
            System.out.println("刪除失??!失敗原因可能有:1、未能找到您想刪除的圖書;2、該書不在架上。");
        }
        return library;
    }

    public static ArrayListchange(ArrayListlibrary){
        Scanner sc = new Scanner(System.in);
        System.out.print("請(qǐng)輸入您想修改價(jià)格的圖書的ISBN號(hào):");
        String ISBN = sc.nextLine().trim();
        double c = 0;
        boolean right = true;
        for(book a: library){
            if(ISBN.equals(a.getISBN())){
                if (right){
                    System.out.print("請(qǐng)輸入修改的價(jià)格:");
                    c = sc.nextDouble();
                    right = false;
                }
                a.setPrice(c);
            }
        }
        if(right){
            System.out.println("對(duì)不起,找不到您想修改的圖書。");
        }
        else {
            System.out.println("修改成功!");
        }
        return library;
    }
    public static void compare(ArrayListlibrary){
        ArrayListcpLibrary = new ArrayList<>(library.size());
        for (book o:library) cpLibrary.add(o);
        cpLibrary.sort(book::compareTo);
        output(cpLibrary);
    }

    public static int calculate(ArrayListlibrary){
        return library.size();
    }

    public static void outputData(ArrayListlibrary) throws IOException {
        File file = new File("book.txt");
        if (file.exists()){
            file.delete();
        }
        file.createNewFile();
        OutputStream fos = new FileOutputStream(file);
        for (book a:library) {
            String str = a.getISBN()+"\t"+a.getName()+"\t"+a.getAuthor()+"\t"+a.getPublish()+"\t"+a.getDate()+"\t"+a.getPrice()+"\t"+a.getType()+"\t"+a.getIson()+"\n";
            fos.write(str.getBytes("UTF-8"));
        }
        fos.close();
        System.out.println("已成功輸出至book.txt文件。");
    }

    public static ArrayListimportData(ArrayListlibrary) throws IOException {
        File file = new File("book.txt");
        FileInputStream fis = new FileInputStream(file);
        InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
        BufferedReader br = new BufferedReader(isr);
        String len;
        while((len = br.readLine()) != null) {
            String[] content = len.split("\t");
            book a = new book(content[0],content[1],content[2],content[3],content[4],Double.parseDouble(content[5]),content[6],content[7]);
            library.add(a);
        }
        fis.close();
        System.out.println("已成功導(dǎo)入。");
        return library;
    }
    public static void printTitle(){
        String[] title = {"ISBN","書籍名稱","作者","出版社","出版日期","價(jià)格","類型","狀態(tài)"};
        for(int i=0;i

(2)book類
package dataStructure;

public class book implements Comparable{
    private String ISBN;
    private String name;
    private String author;
    private String publish;
    private String date;
    private double price;
    private String type;
    private String ison;

    public String getISBN() {
        return ISBN;
    }

    public void setISBN(String ISBN) {
        this.ISBN = ISBN;
    }

    public String getName() {
        return name;
    }

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

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getPublish() {
        return publish;
    }

    public void setPublish(String publish) {
        this.publish = publish;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getIson() {
        return ison;
    }

    public void setIson(String ison) {
        this.ison = ison;
    }

    public book(String ISBN,String name,String author,String publish,String date,double price,String type,String ison){
        this.ISBN = ISBN;
        this.name = name;
        this.author = author;
        this.publish = publish;
        this.date = date;
        this.price = price;
        this.type = type;
        this.ison = ison;
    }

    public int compareTo(book o){
        return Double.compare(getPrice(), o.getPrice());
    }
}
3、測(cè)試數(shù)據(jù)集

ISBN

name

author

publish

date

price

type

ison

0000000001

大學(xué)計(jì)算機(jī)基礎(chǔ)

陳建勛

高等教育出版社

2007-08-10

58.00

計(jì)算機(jī)類

在架上

0000000002

C語(yǔ)言

王遠(yuǎn)林

電子工業(yè)出版社

2000-04-12

48.00

計(jì)算機(jī)類

已借閱

0000000003

組織行為學(xué)

劉燁

中國(guó)人民出版社

1997-09-28

76.00

管理類

在架上

0000000004

管理學(xué)

高敏

清華大學(xué)出版社

2020-05-01

57.00

管理類

已借閱

0000000005

統(tǒng)計(jì)學(xué)

賀天

北京大學(xué)出版社

2018-03-23

38.00

數(shù)統(tǒng)類

正在訂購(gòu)

0000000006

概率論

李毅

中國(guó)工業(yè)出版社

2004-05-16

39.00

數(shù)統(tǒng)類

在架上

0000000007

糖尿病的正確飲食

鐘婭

中國(guó)輕工出版社

2020-10-01

89.00

醫(yī)學(xué)類

在架上

0000000008

人體構(gòu)造

黃遠(yuǎn)

河北科學(xué)出版社

2016-08-13

99.00

醫(yī)學(xué)類

正在訂購(gòu)

0000000009

宏觀經(jīng)濟(jì)學(xué)

劉葉

清華大學(xué)出版社

2015-03-10

67.00

經(jīng)濟(jì)類

正在訂購(gòu)

0000000010

微觀經(jīng)濟(jì)學(xué)

王陸

中國(guó)人民出版社

2003-04-28

54.00

經(jīng)濟(jì)類

已借閱

0000000010

微觀經(jīng)濟(jì)學(xué)

王陸

中國(guó)人民出版社

2003-04-28

54.00

經(jīng)濟(jì)類

已借閱

4、測(cè)試程序運(yùn)行結(jié)果截圖 (1)登錄和創(chuàng)建

(2)輸出

(3)查找

(4)插入

(5)刪除

(6)修改


(7)排序

(8)計(jì)數(shù)

(9)導(dǎo)出

(10)讀入

(11)菜單

5、存在的問(wèn)題與思考

(1)沒(méi)有考慮完整異常情況:由于時(shí)間原因,在編寫代碼的時(shí)候基本只考慮了輸入正確的情況,除了文件導(dǎo)入導(dǎo)出外沒(méi)有考慮異常情況的處理(try-catch)。但是在代碼編寫過(guò)程中,盡量把可以考慮的情況考慮進(jìn)去,如在執(zhí)行功能選擇switch語(yǔ)句前,判斷輸入是否為整數(shù),如果不為整數(shù)就輸出報(bào)錯(cuò),輸入為整數(shù)才獲取輸入,進(jìn)入switch語(yǔ)句,盡可能保持無(wú)異常情況的發(fā)生。

(2)功能不夠豐富:由于時(shí)間原因,完成了基本的要求后只增加了登錄功能,其余都是在原有代碼基礎(chǔ)上進(jìn)行修改,使得交互更加舒適。

(3)交互效果有待提高:由于沒(méi)有時(shí)間將系統(tǒng)以可視化的方式展現(xiàn),希望能夠在命令行的演示下盡量提高交互效果。在調(diào)整交互效果的過(guò)程中除了加入很多提示信息,修改圖書信息表示方式(盡量模仿表格方式)外,在適當(dāng)?shù)牡胤郊尤肓丝招幸赃_(dá)到分割顯示的效果。

(4)沒(méi)能活用現(xiàn)有類對(duì)程序進(jìn)行簡(jiǎn)化:我們?cè)诳紤]“圖書出版日期”這一屬性時(shí),曾經(jīng)考慮過(guò)采用Date類進(jìn)行記錄,但是由于它的toString方法是轉(zhuǎn)換成一個(gè)16進(jìn)制的數(shù)值字符串,不方便在別的方法中進(jìn)行調(diào)用,所以我們直接采用了String類進(jìn)行記錄。但這樣不利于后期的改進(jìn),對(duì)于一些時(shí)間記錄上的處理也會(huì)更麻煩。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站名稱:基于線性表的圖書管理系統(tǒng)(java)-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/dgpiid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部