日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

数据结构课程设计---图书管理系统

發布時間:2023/12/9 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构课程设计---图书管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、圖書信息管理系統的設計與實現

(一)實驗內容

設計并實現一個圖書信息管理系統。根據實驗要求設計該系統的菜單和交互邏輯,并編碼實現增刪改查的各項功能。?該系統至少包含以下功能:

  • 根據指定圖書個數,逐個輸入圖書信息;
  • 逐個顯示圖書表中所有圖書的相關信息;
  • 能根據指定的待入庫的新圖書的位置和信息,將新圖書插入到圖書表中指定的位置;
  • 根據指定的待出庫的舊圖書的位置,將該圖書從圖書表中刪除;
  • 能統計表中圖書個數;
  • 實現圖書信息表的圖書去重;
  • 實現最愛書籍查詢,根據書名進行折半查找,要求使用非遞歸算法實現,成功返回此書籍的書號和價格;
  • 圖書信息表按指定條件進行批量修改;
  • 利用快速排序按照圖書價格降序排序;
  • 實現最貴圖書的查找;
  • (二)實驗目的

  • 了解并掌握數據結構和算法設計的方法,具備初步的獨立分析和設計能力
  • 初步掌握軟件開發過程的問題分析分析、系統設計、程序編碼和測試等基本方法和技能。
  • 提高綜合運用所學的理論知識和方法,獨立分析和解決問題的能力。
  • 訓練用系統的觀點和軟件開發一般規范進行軟件的開發,培養軟件工作著所具備的科學工作方法和作風
  • ? ?( 三 )? 實驗要求

    1.基于順序存儲/鏈式存儲結構的圖書信息表的創建和輸出

    定義一個包含圖書信息(書號、書名、價格)的順序表。讀入相應的圖書數據來完成圖書信息表的創建,然后統計圖書表中的圖書個數,同時逐行輸出每本圖書的信息。

    輸入

    輸入?n+1?行,其中前?n?行是?n?本圖書的信息(書號、書名、價格),每本圖書信息占一行,書號、書名、價格用空格分隔,價格之后沒有空格。最后第?n+1?行是輸入結束標志:0?0 0(空格分隔的三個?0)。其中書號和書名為字符串類型,價格為浮點數類型。

    輸出

    總計 n+1 行,第 1 行是所創建的圖書表中的圖書個數,后 n 行是 n 本圖書的信息(書號、

    書名、價格),每本圖書信息占一行,書號、書名、價格用空格分隔。其中價格輸出保留兩

    位小數。

    輸入樣例:

    9787302257646 程序設計基礎 25.00

    9787302164340 程序設計基礎(第 2 版) 20.00

    9787302219972 單片機技術及應用 32.00

    9787302203513 單片機原理與應用技術 26.00

    9787810827430 工業計算機控制技術——原理與應用 29.00

    9787811234923 匯編語言程序設計教程 32.00

    0 0 0

    2.基于順序存儲/鏈式存儲結構的圖書信息表的修改

    讀入圖書信息表,然后計算所有圖書的平均價格,將所有低于平均價格的圖書價格提高20%,所有高于或等于平均價格的圖書價格提高10%,最后逐行輸出價格修改后的圖書信息。

    輸入

    輸入?n+1?行,其中前?n?行是?n?本圖書的信息(書號、書名、價格),每本圖書信息占一行,書號、書名、價格用空格分隔,價格之后沒有空格。最后第?n+1?行是輸入結束標志:0?0 0(空格分隔的三個?0)。其中書號和書名為字符串類型,價格為浮點數類型。

    輸出

    總計 n+1 行,第 1 行是修改前所有圖書的平均價格,后 n 行是價格修改后 n 本圖書的信息(書號、書名、價格),每本圖書信息占一行,書號、書名、價格用空格分隔。其中價格輸出保留兩位小數。

    輸入樣例:

    9787302257646 程序設計基礎 25.00

    9787302164340 程序設計基礎(第 2 版) 20.00

    9787302219972 數據挖掘與機器學習 32.00

    9787302203513 模式識別與智能計算 26.00

    9787810827430 工業計算機控制技術——原理與應用 29.00

    9787811234923 操作系統教程 32.00

    0 0 0

    輸出樣例:

    9787302257646 程序設計基礎 30.00

    9787302164340 程序設計基礎(第 2 版) 24.00

    9787302219972 數據挖掘與機器學習 35.20

    9787302203513 模式識別與智能計算 28.60

    9787810827430 工業計算機控制技術——原理與應用 31.90

    9787811234923 操作系統教程 35.20

    3.基于順序存儲/鏈式存儲結構的圖書信息表的最貴圖書查找

    讀入相應的圖書信息表,然后查找價格最高的圖書,輸出相應圖書的信息。

    輸出

    總計 m+1 行,其中,第 1 行是最貴的圖書數目,(價格最高的圖書可能有多本),后m行是最貴圖書的信息,每本圖書信息占一行,書號、書名、價格用空格分隔。其中價格輸出保留兩位小數。

    輸出樣例:

    2

    9787302219972 數據挖掘與機器學習 35.20

    9787811234923 操作系統教程 35.20

    4.基于順序存儲/鏈式存儲結構的圖書信息表的最愛圖書的查找

    讀入相應的圖書信息表,然后根據指定的最愛圖書的名字,輸出相應圖書的信息。

    輸入

    輸入1行,為每次待查找的最愛圖書名字。

    輸出

    若查找成功,輸出k+1行,對于每次查找,第一行是最愛圖書數目,同一書名的圖書可能有多本,后K行是最愛圖書的信息(書號、書名、價格),每本圖書信息占一行,書號、書名、價格用空格分隔,其中價格輸出保留兩位小數。若查找失敗:只輸出以下提示:抱歉,沒有你的最愛!

    輸出樣例

    2

    9787302257646 程序設計基礎 30.00

    9787302164340 程序設計基礎(第 2 版) 24.00

    5.基于順序存儲/鏈式存儲結構的圖書信息表的新書入庫

    讀入指定的待入庫的新圖書的位置和信息,將新圖書插入到圖書表中指定的位置上,最后輸出新圖書入庫后所有圖書的信息。

    輸入

    總計n+1行,首先輸入第1行,內容僅為一個整數,代表待入庫的新圖書的位置序號,然后輸入n行,內容為新圖書的信息,書號、書名、價格用空格分隔。

    輸出

    若插入成功,輸出新圖書入庫后所有圖書的信息(書號、書名、價格),總計n+1行,每行是一本圖書的信息,書號、書名、價格用空格分隔。其中價格輸出保留兩位小數。

    若插入失敗,只輸出以下提示:抱歉,入庫位置非法!

    輸入樣例:

    2

    9787302265436 ?計算機導論實驗指導 18.00

    輸出樣例:

    9787302257646 程序設計基礎 30.00

    9787302265436 計算機導論實驗指導 18.00

    9787302164340 程序設計基礎(第 2 版) 24.00

    9787302219972 數據挖掘與機器學習 35.20

    9787302203513 模式識別與智能計算 28.60

    9787810827430 工業計算機控制技術——原理與應用 31.90

    9787811234923 操作系統教程 35.20

    6.基于順序存儲/鏈式存儲結構的圖書信息表的舊書出庫

    讀入指定的待出庫的舊圖書的書號,將該圖書從圖書表中刪除,最后輸出舊圖書出庫后所有圖書的信息。

    輸入

    輸入待出庫的舊圖書的書號;

    輸出

    若刪除成功,輸出舊圖書出庫后所有圖書的信息(書號、書名、價格),每行是一本圖書的信息,書號、書名、價格用空格分隔。其中價格輸出保留兩位小數。

    若刪除失敗,只輸出以下提示:出庫失敗,未找到該圖書!

    7.基于順序存儲/鏈式存儲結構的圖書信息表的圖書去重

    出版社出版的任何一本圖書的書號(ISBN)都是唯一的,即圖書表中不允許包含書號重復的圖書。讀入相應的圖書信息表(事先加入書號重復的記錄),然后進行圖書的去重,即刪除書號重復的圖書(只留第一本),最后輸出去重后所有圖書的信息。

    輸出

    總計輸出m+1行(m<=n),其中,第一行是去重后的圖書數目,后m行是去重后圖書的信息(書號、書名、價格),每本圖書信息占一行,書號、書名、價格用空格分隔,其中價格輸出保留兩位小數。

    (四)實驗思路

    圖書信息、順序表、鏈表的定義

    圖書信息的定義:typedef struct {char no[8]; ??//8位書號char?name[20];?//書名int price; ????//價格}Book;順序表的定義:typedef ?struct {Book??*elem; ????//指向數據元素的基地址int ?length; ??????//線性表的當前長度???????????????????????????????????????????????????????????}SqList;鏈表的定義:typedef struct LNode{Book???data; ??????//數據域struct LNode ?*next; ??//指針域}LNode,*LinkList; ?? class bookSystem { private:book Book[100];int length; public:bookSystem();~bookSystem(); void input(int book_num);//輸入圖書信息void print_all();//顯示圖書的相關信息 int getlength()//統計表中圖數個數void insert(book a);//指定位置插入void bookDelete(int pos);//刪除圖書信息void bookDeletethesame();//去重void downSort(int left,int right);//降序排序void findFavorite(string Name);//查找最愛書籍void findmostExpensive();//查找最貴書籍 }

    1.輸入圖書信息

    void bookSystem::input(int book_num){for (int i = 0; i < book_num; i++){cout << "請輸入書號:";cin >> Book[length + i].no; cout << endl;cout << "請輸入書名:";cin >> Book[length + i].name; cout << endl;cout << "請輸入書的價格:";cin >> Book[length + i].price; cout << endl; }length = length + book_num; }

    2.插入圖書信息

    void bookSystem::insert(int pos){int Pos = pos - 1;if (Pos<0 || pos>100)cout << "位置錯誤" << endl;else{if (length >= 100)cout << "溢出" << endl;else{if (pos >= length){cout << "請輸入書號:";cin >> Book[length].no; cout << endl;cout << "請輸入書名:";cin >> Book[length].name; cout << endl;cout << "請輸入價格:";cin >> Book[length].price; cout << endl;length++;}else{for (int i = length; i >= Pos; i--){Book[i] = Book[i - 1];}cout << "請輸入書號:";cin >> Book[Pos].no; cout << endl;cout << "請輸入書名:";cin >> Book[Pos].name; cout << endl;cout << "請輸入價格:";cin >> Book[Pos].price; cout << endl;length++;}}} }

    3.刪除圖書

    void bookSystem::bookDelete(int pos){ if (length == 0)cout << "沒有圖書可以刪除" << endl;else{if (pos <= 0 || pos >= length)cout << "該圖書不存在" << endl;else{cout << "刪除:" << Book[pos - 1].no << " " << Book[pos - 1].name << " " << fixed << setprecision(2) << Book[pos - 1].price << endl;for (int i = pos - 1; i < length - 1; i++){Book[i] = Book[i + 1];}length--;}} }

    4.去重

    void bookSystem::bookDeletethesame(){book temp[100];int a = length;int temp_len = 0;for (int x = 0; x < length; x++){bool flag=0;for (int y = 0; y < temp_len + 1; y++){if (Book[x].no == temp[y].no){flag = 1;break;}else{flag = 0;continue;}}if (flag == 1){cout << Book[x].no << " " << Book[x].name << " " << fixed << setprecision(2) << Book[x].price << endl;continue;}else{temp[temp_len] = Book[x];++temp_len;}}length = temp_len;for (int i = 0; i < length; i++){Book[i] = temp[i];}for (int i = length; i < a; i++){bookDelete(i); }

    5.尋找最愛書籍

    void bookSystem::findFavorite(string Name){int count=0;//最愛書籍的數目book temp[100];for (int i = 0; i < length; i++){if (Book[i].name == Name){temp[i] = Book[i];++count;}}if (count == 0)cout << "抱歉,沒有找到你的最愛書籍" << endl;else{cout << "找到" << count << "本" << endl;for (int i = 0; i < count; i++){cout << temp[i].no << " " << temp[i].name << " " << fixed << setprecision(2) << temp[i].price << endl;}}}

    6.按價格降序排序

    void bookSystem::downSort(int left,int right){if (left >= right)return;book base = Book[left];book temp;int i = left, j = right;while (i<j){while (Book[j].price >= base.price&&i<j)j--;while (Book[i].price <= base.price&&i<j)i++;if (i<j){temp = Book[j];Book[j] = Book[i];Book[i] = temp;}}Book[left] = Book[i];Book[i] = base; downSort( left, i - 1);downSort( i + 1, right); }

    7.查找最貴書籍

    void bookSystem::findmostExpensive(){book findmostExpensive() = Book[0];for (int i = 1; i < length; i++){if (Book[i].price >= findmostExpensive().price)findmostExpensive() = Book[i];elsecontinue;}cout << "最貴:" << findmostExpensive().no << " " << findmostExpensive().name << " " << fixed << setprecision(2) << findmostExpensive().price << endl; }

    總結

    以上是生活随笔為你收集整理的数据结构课程设计---图书管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。