C++實現(xiàn)圖書管理系統(tǒng)最新版
更新時間:2021年06月17日 15:36:51 作者:名名名名
這篇文章主要為大家詳細介紹了C++實現(xiàn)圖書管理系統(tǒng)最新版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
圖書管理系統(tǒng)設計,供大家參考,具體內容如下
一、問題描述及功能要求
(1)圖書信息錄入功能(圖書信息用文件保存)
(2)圖書信息瀏覽功能
(3)查詢和排序功能:(至少一種查詢方式)
.按書名查詢
.按作者名查詢
(4)圖書信息的刪除與修改
二、代碼實現(xiàn) 帶有注釋
廢話不說,直接代碼,歡迎指正。
大家CV可能有不兼容的情況,可以滴滴,盡可能解決問題地回復。
#include<iostream>
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <cstring>
#include<windows.h>
#include<vector>
#define BOOKMAXREPERTORY 99
using namespace std;
class Common{
public:
int id;
char title[66];
char author[66];
Common(){
}
Common(int _id,char _title[],char _author[]){
id = _id;
strcpy(title , _title);
strcpy(author , _author);
}
};
class Book:public Common{
public:
char publisher[66];
int pageNumber;
Book(){}
Book(int _id,char _title[],char _author[],char _publisher[],char _iSBNNumber[],int _pageNumber){
Common(_id,_title,_author);
strcpy(publisher,_publisher);
pageNumber = _pageNumber;
}
};
class MediaLibraryManageSystem{
public:
MediaLibraryManageSystem(){
nowBookTotal = 0;
}
void _run(){
readDataByFile();
printf("程序加載中");
for (int i = 0; i < 10; i++) {
Sleep(100); /* windows 使用Sleep,參數(shù)為毫秒 */
printf(".");
fflush(stdout);//強制刷新緩存,輸出顯示
}
printf("\n");
system("cls");
int cmd;
while(true){
cout<<home_menu<<endl;
cout<<"請輸入你需要執(zhí)行的命令序號:";cin>>cmd;
if(cmd == 0){
_exit();
}
system("cls");
switch(cmd){
case 1:
addBook();
break;
case 2:
queryGoods();
break;
case 3:
showGoods();
break;
case 4:
updateGoods();
break;
case 5:
deleteGoods();
break;
default:
cout<<"輸入的指令有誤!請重新輸入!"<<endl;
}
system("pause");
system("cls");
}
}
private:
const string home_menu =
"\n********************************** 圖書管理系統(tǒng) **********************************\n"
"* *\n"
"* *\n"
"* 1.添加 *\n"
"* *\n"
"* 2.查詢 *\n"
"* *\n"
"* 3.顯示圖書庫 *\n"
"* *\n"
"* 4.修改圖書庫 *\n"
"* *\n"
"* 5.刪除 *\n"
"* *\n"
"* 0.退出 *\n"
"* *\n"
"* *\n"
"************************************************************************************\n";
const string query_goods_menu =
"\n************************************ 圖書查詢 ************************************\n"
"* *\n"
"* *\n"
"* 1.按標題查詢 *\n"
"* *\n"
"* 2.按編號查詢 *\n"
"* *\n"
"* 0.退出 *\n"
"* *\n"
"* *\n"
"************************************************************************************\n";
Book bookList[BOOKMAXREPERTORY];
int nowBookTotal;
///添加圖書
void addBook(){
Book book;
cout<<"請輸入編號:";cin>>book.id;
cout<<"請輸入標題:";cin>>book.title;
cout<<"請輸入作者:";cin>>book.author;
cout<<"請輸入出版社:";cin>>book.publisher;
cout<<"請輸入頁數(shù):";cin>>book.pageNumber;
if(getBookById(book.id) != -1){
cout<<"添加失敗! 添加編號重復! 請重新添加!"<<endl;
}else if(nowBookTotal == BOOKMAXREPERTORY){
cout<<"添加失敗! 圖書庫已滿!"<<endl;
}else{
bookList[nowBookTotal ++] = book;
}
}
/* 查詢圖書 */
void queryGoods(){
int cmd;
while(true){
cout<<query_goods_menu<<endl;
cout<<"請輸入你需要執(zhí)行的命令序號:";cin>>cmd;
if(cmd == 0){
break;
}
system("cls");
switch(cmd){
case 1:
queryByTitle();
break;
case 2:
queryById();
break;
default:
cout<<"輸入的指令有誤!請重新輸入!"<<endl;
}
system("pause");
system("cls");
}
}
///按標題查詢
void queryByTitle(){
int cmd;
char title[66];
cout<<"請輸入標題:";cin>>title;
getBookByTitle(title);
}
///book
void getBookByTitle(char title[]){
bool flag = true;
printf("%-6s%-10s%-10s%-10s%-10s%\n","編號","標題","作者","出版社","頁數(shù)");
for(int i = 0;i < nowBookTotal;i ++){
if(strcmp(bookList[i].title,title) == 0){
flag = false;
printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
}
}
if(flag){
printf("\n\n空的!\n\n");
}
}
///按編號查詢
void queryById(){
int cmd,i,id;
cout<<"請輸入Id:";cin>>id;
i = getBookById(id);
if(i == -1){
printf("查找不到!\n");
}else{
printf("%-6s%-10s%-10s%-10s%-10s\n","編號","標題","作者","評級","出版社","頁數(shù)");
printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
}
}
///Book
int getBookById(int id){
int index = -1;
for(int i = 0;i < nowBookTotal;i ++){
if(bookList[i].id == id){
index = i;
break;
}
}
return index;
}
/* 顯示圖書庫 */
void showGoods(){
if(nowBookTotal == 0){
printf("空的!\n");
}else{
printf("%-6s%-10s%-10s%-10s%-10s\n","編號","標題","作者","出版社","頁數(shù)");
for(int i = 0;i < nowBookTotal;i ++){
printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
}
}
}
/* 修改圖書 */
void updateGoods(){
int cmd,id,i;
cout<<"請輸入你需要修改的圖書編號:";cin>>id;
i = getBookById(id);
if(i == -1){
cout<<"圖書不存在!"<<endl;
}else{
cout<<"原圖書信息為:"<<endl;
printf("%-6s%-10s%-10s%-10s%-10s\n","編號","標題","作者","出版社","頁數(shù)");
printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
Book book;
book.id = id;
cout<<"請輸入修改后的標題:";cin>>book.title;
cout<<"請輸入修改后的作者:";cin>>book.author;
cout<<"請輸入修改后的出版社:";cin>>book.publisher;
cout<<"請輸入修改后的頁數(shù):";cin>>book.pageNumber;
bookList[i] = book;
}
}
/* 刪除圖書 */
void deleteGoods(){
int cmd,id,i;
if(nowBookTotal == 0){
cout<<"空的!"<<endl;
return;
}
cout<<"請輸入你需要刪除的圖書編號:";cin>>id;
deleteBook(id);
}
///book
void deleteBook(int id){
int index = getBookById(id);
if(index == -1){
cout<<"沒有該圖書!"<<endl;
}else{
for(int i = index;i < nowBookTotal - 1;i ++){
bookList[i] = bookList[i + 1];
}
nowBookTotal --;
cout<<"刪除成功!"<<endl;
}
}
/* 保存圖書 */
void saveDataToFile(){
///book
FILE *bookDB = fopen("bookList.txt", "wb");
for (int i = 0; i < nowBookTotal; i++) {
fwrite(&bookList[i], sizeof(Book), 1, bookDB);
}
fclose(bookDB);
}
/* 讀取圖書 */
void readDataByFile(){
///Book
FILE *bookDB = fopen("bookList.txt", "rb");
nowBookTotal = 0;
Book book;
while (fread(&book, sizeof(Book), 1, bookDB) == 1) {
bookList[nowBookTotal++] = book;
}
fclose(bookDB);
}
void _exit(){
saveDataToFile();
system("cls");
printf("正在退出");
for (int i = 0; i < 10; i++) {
Sleep(100);
printf(".");
fflush(stdout);//強制刷新緩存,輸出顯示
}
system("cls");
printf("已退出!");
exit(1);
}
};
int main(){
MediaLibraryManageSystem mediaLibraryManageSystem;
mediaLibraryManageSystem._run();
return 0;
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Microsoft Visual Studio 2022的安裝與使用詳細教程
Microsoft Visual Studio 2022是Microsoft Visual Studio軟件的一個高版本,能夠編寫和執(zhí)行C/C++代碼,具有強大的功能,是開發(fā)C/C++程序的主流軟件,這篇文章主要介紹了Microsoft Visual Studio 2022的安裝與使用詳細教程2024-01-01
Qt 使用 canon edsdk 實現(xiàn)實時預覽的示例代碼
這篇文章主要介紹了Qt 使用 canon edsdk 實現(xiàn)實時預覽的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11

