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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

预习:图书信息管理系统的设计与实现

發(fā)布時間:2024/1/1 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 预习:图书信息管理系统的设计与实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(一)實驗內(nèi)容

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

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

    1.基于順序存儲/鏈?zhǔn)酱鎯Y(jié)構(gòu)的圖書信息表的創(chuàng)建和輸出

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

    輸入

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

    輸出

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

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

    位小數(shù)。

    輸入樣例:

    9787302257646 程序設(shè)計基礎(chǔ) 25.00

    9787302164340 程序設(shè)計基礎(chǔ)(第 2 版) 20.00

    9787302219972 單片機技術(shù)及應(yīng)用 32.00

    9787302203513 單片機原理與應(yīng)用技術(shù) 26.00

    9787810827430 工業(yè)計算機控制技術(shù)——原理與應(yīng)用 29.00

    9787811234923 匯編語言程序設(shè)計教程 32.00

    0 0 0

    2.基于順序存儲/鏈?zhǔn)酱鎯Y(jié)構(gòu)的圖書信息表的修改

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

    輸入

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

    輸出

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

    輸入樣例:

    9787302257646 程序設(shè)計基礎(chǔ) 25.00

    9787302164340 程序設(shè)計基礎(chǔ)(第 2 版) 20.00

    9787302219972 數(shù)據(jù)挖掘與機器學(xué)習(xí) 32.00

    9787302203513 模式識別與智能計算 26.00

    9787810827430 工業(yè)計算機控制技術(shù)——原理與應(yīng)用 29.00

    9787811234923 操作系統(tǒng)教程 32.00

    0 0 0

    輸出樣例:

    9787302257646 程序設(shè)計基礎(chǔ) 30.00

    9787302164340 程序設(shè)計基礎(chǔ)(第 2 版) 24.00

    9787302219972 數(shù)據(jù)挖掘與機器學(xué)習(xí) 35.20

    9787302203513 模式識別與智能計算 28.60

    9787810827430 工業(yè)計算機控制技術(shù)——原理與應(yīng)用 31.90

    9787811234923 操作系統(tǒng)教程 35.20

    3.基于順序存儲/鏈?zhǔn)酱鎯Y(jié)構(gòu)的圖書信息表的最貴圖書查找

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

    輸出

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

    輸出樣例:

    2

    9787302219972 數(shù)據(jù)挖掘與機器學(xué)習(xí) 35.20

    9787811234923 操作系統(tǒng)教程 35.20

    4.基于順序存儲/鏈?zhǔn)酱鎯Y(jié)構(gòu)的圖書信息表的最愛圖書的查找

    讀入相應(yīng)的圖書信息表,然后根據(jù)指定的最愛圖書的名字,輸出相應(yīng)圖書的信息。

    輸入

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

    輸出

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

    輸出樣例

    2

    9787302257646 程序設(shè)計基礎(chǔ) 30.00

    9787302164340 程序設(shè)計基礎(chǔ)(第 2 版) 24.00

    5.基于順序存儲/鏈?zhǔn)酱鎯Y(jié)構(gòu)的圖書信息表的新書入庫

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

    輸入

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

    輸出

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

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

    輸入樣例:

    2

    9787302265436 ?計算機導(dǎo)論實驗指導(dǎo) 18.00

    輸出樣例:

    9787302257646 程序設(shè)計基礎(chǔ) 30.00

    9787302265436 計算機導(dǎo)論實驗指導(dǎo) 18.00

    9787302164340 程序設(shè)計基礎(chǔ)(第 2 版) 24.00

    9787302219972 數(shù)據(jù)挖掘與機器學(xué)習(xí) 35.20

    9787302203513 模式識別與智能計算 28.60

    9787810827430 工業(yè)計算機控制技術(shù)——原理與應(yīng)用 31.90

    9787811234923 操作系統(tǒng)教程 35.20

    6.基于順序存儲/鏈?zhǔn)酱鎯Y(jié)構(gòu)的圖書信息表的舊書出庫

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

    輸入

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

    輸出

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

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

    7.基于順序存儲/鏈?zhǔn)酱鎯Y(jié)構(gòu)的圖書信息表的圖書去重

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

    輸出

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

    (三)源碼(基于順序存儲):

    ?BookList.h

    #pragma once #include<iostream> #include<iomanip> #include<string.h> #include<vector> #include<algorithm>using namespace std;const int MaxSize = 1000;struct book {char no[8]; //8位書號char name[20]; //書名float price; //價格 };class BookList { private:book list[MaxSize];int length; public:BookList(); //默認構(gòu)造函數(shù)~BookList(); //析構(gòu)函數(shù)int getLength(); //獲取長度void printList(); //打印圖書信息表void getExpensive(); //獲取最貴圖書信息void findFavourite(); //最愛圖書查詢void insertBooks(); //新書入庫void deleteBook(); //舊書出庫void deleteBook(int loc); //刪除指定位置圖書void bookDeWeight(); //圖書去重void priceChanged(); //修改價格void fastSort(int l,int r); //按照價格降序排序 };

    BookList.cpp

    #include "BookList.h"BookList::BookList() {cout << "當(dāng)前圖書為空,新建一個圖書信息表..." << endl << endl;cout << "依次輸入書號、書名、價格,空格隔開,(0,0,0)視為退出" << endl;int flag = 1, index = 0;length = 1;char exit[] = "0";while (flag && index < MaxSize){//依次輸入圖書信息cin >> list[index].no;cin >> list[index].name;cin >> list[index].price;//檢測到(0,0,0)時退出if (!strcmp(list[index].no, exit) && !strcmp(list[index].name, exit) && list[index].price == 0){ cout << "輸入完成" << endl;flag = 0;}else{index++;length++;}}}BookList::~BookList() { }void BookList::printList() {cout << "輸出圖書信息表如下:" << endl;cout << "長度:" << length - 1 << endl;for (int i = 0; i < length - 1; i++)cout << list[i].no << " " << list[i].name << " " << fixed << setprecision(2) << list[i].price << endl; }void BookList::getExpensive() {int max = 0;vector<int> ExpensiveLoc;ExpensiveLoc.push_back(max);for (int i = 1; i < length - 1; i++){if (list[i].price == list[max].price)ExpensiveLoc.push_back(i);//檢測到相同的最大值則存放其位置if (list[i].price > list[max].price){//檢測到更大值,則清空最大位置數(shù)組,重新存放max = i;ExpensiveLoc.clear();ExpensiveLoc.push_back(max);}}//輸出最貴圖書信息cout << "最貴圖書數(shù)量為" << ExpensiveLoc.size() << ",具體信息如下:" << endl;int index = 0;for (int i = 0; i < ExpensiveLoc.size(); i++){cout << list[ExpensiveLoc[index]].no << " " << list[ExpensiveLoc[index]].name << " " << fixed << setprecision(2) << list[ExpensiveLoc[index]].price << endl;index++;} }int BookList::getLength() {return length; }void BookList::findFavourite() {char favBookName[20];cout << "請輸入最愛圖書名:";cin >> favBookName;vector<int> favLoc;for(int i=0;i<length;i++){if (strcmp(list[i].name, favBookName) == 0)favLoc.push_back(i);//找到最愛圖書則存放其位置}int count = favLoc.size();//記錄最愛圖書數(shù)量if (count == 0)cout << "抱歉,沒有你的最愛!" << endl;else{cout << "已找到,展示如下:" << endl;cout << count << endl;int index = 0;for (int i = 0; i < count; i++){cout << list[favLoc[index]].no << " " << list[favLoc[index]].name << " " << fixed << setprecision(2) << list[favLoc[index]].price << endl;index++;}} }void BookList::insertBooks() {cout << "請輸入插入頂點位置:";int loc;cin >> loc;loc--;cout << "請輸入插入圖書的信息:";char new_no[8], new_name[20];float new_price;cin >> new_no;cin >> new_name;cin >> new_price;if (length == MaxSize)cout << "抱歉,入庫位置非法!" << endl;else{for (int i = length - 1; i >= loc; i--){strcpy_s(list[i + 1].no,list[i].no);strcpy_s(list[i + 1].name, list[i].name);list[i + 1].price = list[i].price;}strcpy_s(list[loc].no, new_no);strcpy_s(list[loc].name, new_name);list[loc].price = new_price;}length++;cout << "插入完成" << endl;printList(); }void BookList::deleteBook() {cout << "請輸入刪除圖書的書號:";char del_no[8];cin >> del_no;for (int i = 0; i < length; i++){if (!strcmp(list[i].no, del_no)){for (int j = i; j < length; j++){strcpy_s(list[i].no, list[i + 1].no);strcpy_s(list[i].name, list[i + 1].name);list[i].price = list[i + 1].price;}length--;break;}if (i == length - 1)cout << "出庫失敗,未找到該圖書!" << endl;}cout << "刪除完成" << endl;printList(); }void BookList::deleteBook(int loc)//用于去重函數(shù) {for (int i = loc; i < length - 1; i++){strcpy_s(list[i].no, list[i + 1].no);strcpy_s(list[i].name, list[i + 1].name);list[i].price = list[i + 1].price;}length--; }void BookList::priceChanged() {float sumPrice = 0;for (int i = 0; i < length; i++)sumPrice += list[i].price;float ave = sumPrice / (length - 1);for (int i = 0; i < length; i++){if (list[i].price < ave)list[i].price += list[i].price / 10;elselist[i].price += list[i].price / 5;}cout << "價格已修改" << endl;printList(); }void BookList::fastSort(int l,int r) {if (l < r){int i = l, j = r;float temp_price = list[l].price;char temp_no[8], temp_name[20];strcpy_s(temp_no, list[l].no);strcpy_s(temp_name, list[l].name);while (i < j){//從右向左找第一個價格大于temp_price的數(shù)while (i < j && list[j].price <= temp_price)j--;if (i < j){list[i].price = list[j].price;strcpy_s(list[i].no, list[j].no);strcpy_s(list[i].name, list[j].name);i++;}//從左向右找第一個價格小于temp_price的數(shù)while (i<j && list[i].price > temp_price)i++;if (i < j){list[j].price = list[i].price;strcpy_s(list[j].no, list[i].no);strcpy_s(list[j].name, list[i].name);j--;}}list[i].price = temp_price;strcpy_s(list[i].no, temp_no);strcpy_s(list[i].name, temp_name);fastSort(l, i - 1);fastSort(i + 1, r);} }void BookList::bookDeWeight() {for (int i = 0; i < length - 1; i++)for (int j = i + 1; j < length; j++)if (strcmp(list[i].no, list[j].no) == 0)deleteBook(j);cout << endl << "去重已完成" << endl;printList(); }

    BookInf_Management.cpp

    #include "BookList.h"//用戶交互界面 void userWindow() {BookList demo;int flag = 1,choose;cout << endl;cout << "1.輸出圖書信息表" << endl;cout << "2.修改圖書價格" << endl;cout << "3.最貴圖書查找" << endl;cout << "4.最愛圖書查找" << endl;cout << "5.新書入庫" << endl;cout << "6.舊書出庫" << endl;cout << "7.圖書去重" << endl;cout << "8.按價格降序排序" << endl;cout << "9.退出" << endl;while (flag){cout << endl;cout << "請輸入序號選擇操作:";cin >> choose;cout << endl;switch (choose){case 1:demo.printList(); break;case 2:demo.priceChanged(); break;case 3:demo.getExpensive(); break;case 4:demo.findFavourite(); break;case 5:demo.insertBooks(); break;case 6:demo.deleteBook(); break;case 7:demo.bookDeWeight(); break;case 8:{int len = demo.getLength();demo.fastSort(0, len - 2);demo.printList();break;}case 9:flag = 0; break;default:break;}} }int main() {userWindow();return 0; }

    ?

    總結(jié)

    以上是生活随笔為你收集整理的预习:图书信息管理系统的设计与实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。