目錄
創(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)題與思考
?順序表是線性表的順序存儲(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ì)類 | 已借閱 |
(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)查看詳情吧