大一写的C课程设计(图书馆管理系统)
生活随笔
收集整理的這篇文章主要介紹了
大一写的C课程设计(图书馆管理系统)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、功能簡要介紹
二、效果圖
三、代碼
注意:須將測試文件“text.txt"與cpp文件放在同一目錄下;文件內(nèi)的內(nèi)容格式不要隨意修改。
#include <iostream> #include <algorithm> #include <cstring> #include <cctype>//字符分類函數(shù) #include <cstdlib> #include <cstdio> #include <fstream> using namespace std; typedef long long ll; ll n,i;struct Library {char name[50];char publish[50];ll ISBN;char author[50];ll amount;char price[20]; }book[2000];bool cmp1(Library a,Library b) {return strcmp(a.price,b.price)>0; }bool cmp2(Library a,Library b) {return a.amount>b.amount; }bool cmp3(Library a,Library b) {return strcmp(a.author,b.author)>0; }bool cmp4(Library a,Library b) {return strcmp(a.publish,b.publish)>0; }void read()//讀取文件內(nèi)容{memset(book,0,2000);FILE *fp;ll k=0;fp=fopen("text.txt","r");while(!feof(fp)){fscanf(fp,"%lld %s %s %s %s %lld\n",&book[k].ISBN,&book[k].name,&book[k].author,&book[k].publish,&book[k].price,&book[k].amount);cout<<"\t-----------------------------------------------------------------------------------------------\t"<<endl;cout<<"\tISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name<<" |作者:"<<book[k].author;cout<<" |出版社:"<<book[k].publish<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<"\t"<<endl;k++;}cout<<"\t-----------------------------------------------------------------------------------------------\t"<<endl;i=k;n=k; }void menu()//菜單 {system("cls");system("color 2f");cout<<endl;cout<<" \t +-------------------------------------歡迎進(jìn)入圖書管理系統(tǒng)V2-------------------------------+"<<endl;cout<<" \t | |"<<endl;cout<<" \t +-----------------------------------------------By Kant && https://blog.csdn.net/KK_2018---+"<<endl;cout<<" \t * *"<<endl;cout<<" \t *\t\t\t\t 按1,圖書銷售系統(tǒng) *"<<endl;cout<<" \t *\t\t\t\t *"<<endl;cout<<" \t *\t\t\t\t 按2,圖書管理系統(tǒng) *"<<endl;cout<<" \t *\t\t\t\t *"<<endl;cout<<" \t *\t\t\t\t 按3,圖書信息統(tǒng)計 *"<<endl;cout<<" \t *\t\t\t\t *"<<endl;cout<<" \t *\t\t\t\t 按0,退出系統(tǒng) *"<<endl;cout<<" \t --------------------------------------------------------------------------------------------"<<endl<<endl;cout<<" \t ==================================目前已存在的信息如下表所示================================="<<endl<<endl;read();cout<<"\t\t請選擇(0-3):"; }void sell()//銷售系統(tǒng) {ll newISBN,t,k;cout<<"請輸入購買圖書的ISBN號:";cin>>newISBN;for(k=0;k<n;k++){if(book[k].ISBN==newISBN){cout<<"查詢到的結(jié)果如下所示"<<endl;cout<<"ISBN號:"<<book[k].ISBN<<" 書名:"<<book[k].name;cout<<" 作者:"<<book[k].author<<" 出版社:"<<book[k].publish;cout<<" 該圖書數(shù)量為:"<<book[k].amount<<"本,";cout<<" 單價為:"<<book[k].price<<"元。"<<endl;break;}}if(k==n) cout<<"查無此書,請重新輸入ISBN號!"<<endl;else{cout<<"請輸入購買數(shù)量:";cin>>t;book[k].amount-=t;cout<<"購買成功,該圖書現(xiàn)剩余"<<book[k].amount<<"本"<<endl;FILE *fp;fp=fopen("text.txt","w");for(int t=0;t<n;t++){fprintf(fp,"%lld %s %s %s %s %lld\n",book[t].ISBN,book[t].name,book[t].author,book[t].publish,book[t].price,book[t].amount);}fclose(fp);} }void add()//添加 {ll a,k,q,t,m;cout<<"請輸入要添加圖書的種類數(shù)量:";cin>>t;q=1;for(k=i;k<i+t;k++){a=0;m=0;cout<<"請輸入第"<<q++<<"種圖書的ISBN號:";cin>>book[k].ISBN;if(k!=i){for(ll m=0;m<k;m++){if(book[k].ISBN==book[m].ISBN){cout<<"您已經(jīng)添加過該圖書了,請重新輸入ISBN編號!"<<endl;a=1;k-=1;break;}}}if(a==1) continue;cout<<"請輸入書名:";cin>>book[k].name;cout<<"請輸入作者:";cin>>book[k].author;cout<<"請輸入出版社:";cin>>book[k].publish;cout<<"請輸入價格:";loop:cin>>book[k].price;for(int j=0;j<strlen(book[k].price);j++)//若輸入的不是數(shù)字則給出提示并重新輸入{if(isdigit(book[k].price[j]))continue;else{cout<<"輸入格式錯誤!"<<endl;m=100;break;}}if(m==100){cout<<"請重新輸入價格:";m=0;goto loop;}cout<<"請輸入要添加該種圖書的數(shù)量:";cin>>book[k].amount;}n+=t;cout<<"添加完畢!"<<endl;FILE *fp;fp=fopen("text.txt","w");if(fp==NULL){cout<<"文件打開失敗!"<<endl;exit(0);}else{for(k=0;k<i+t;k++)fprintf(fp,"%lld %s %s %s %s %lld\n",book[k].ISBN,book[k].name,book[k].author,book[k].publish,book[k].price,book[k].amount);fclose(fp);}}void inquiry()//查詢 {int j;ll k;char newname[50];char newauthor[50];char newpublish[50];char st[5];ll newISBN;do{system("cls");system("color 5e");cout<<"\t\t\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按1--按書名查詢 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按2--按出版社查詢 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按3--按作者查詢 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按4--按ISBN號查詢 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\t\t\t\t\t"<<endl;cout<<"請選擇 1-4:";cin>>j;if(j==1){cout<<"請輸入書名:";cin>>newname;for(k=0;k<n;k++){if(strcmp(book[k].name,newname)==0){cout<<"查詢到的結(jié)果為如下所示#"<<endl;cout<<"ISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name;cout<<" |作者:"<<book[k].author<<" |出版社:"<<book[k].publish;cout<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<endl;break;}}if(k==n) cout<<"查無此書!"<<endl;}else if(j==2){cout<<"請輸入出版社:";cin>>newpublish;for(k=0;k<n;k++){if(strcmp(book[k].publish,newpublish)==0){cout<<"查詢到的結(jié)果為如下所示#"<<endl;cout<<"ISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name;cout<<" |作者:"<<book[k].author<<" |出版社:"<<book[k].publish;cout<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<endl;break;}}if(k==n) cout<<"查無此書!"<<endl;}else if(j==3){cout<<"請輸入作者:";cin>>newauthor;for(k=0;k<n;k++){if(strcmp(book[k].author,newauthor)==0){cout<<"查詢到的結(jié)果為如下所示#"<<endl;cout<<"ISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name;cout<<" |作者:"<<book[k].author<<" |出版社:"<<book[k].publish;cout<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<endl;break;}}if(k==n) cout<<"查無此書!"<<endl;}else if(j==4){cout<<"請輸入ISBN號:";cin>>newISBN;for(k=0;k<n;k++){if(book[k].ISBN==newISBN){cout<<"查詢到的結(jié)果為如下所示#"<<endl;cout<<"ISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name;cout<<" |作者:"<<book[k].author<<" |出版社:"<<book[k].publish;cout<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<endl;break;}}if(k==n) cout<<"查無此書!"<<endl;}else cout<<"請輸入1-4的數(shù)字!"<<endl;cout<<"是否繼續(xù)查詢?是YES,否NO。請輸入:";cin>>st;}while(strcmp(st,"YES")==0);cout<<"查詢完畢,返回管理系統(tǒng)"<<endl; }void rewrite()//修改 {ll newISBN,k,t,m;char s[4];char st[4];do{m=0;memset(s,0,4);memset(st,0,4);cout<<"請輸入要修改信息的圖書的ISBN號:";cin>>newISBN;for(k=0;k<n;k++){if(book[k].ISBN==newISBN){cout<<"查詢到的結(jié)果如下"<<endl;break;}}if(k==n){cout<<"查無此書!請重新查詢!"<<endl;continue;}else{cout<<"ISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name;cout<<" |作者:"<<book[k].author<<" |出版社:"<<book[k].publish;cout<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<"|"<<endl;}cout<<"是否修改書名?是YES,否NO"<<endl;cin>>st;if(strcmp(st,"YES")==0){cout<<"請輸入更改后的書名:";cin>>book[k].name;}memset(st,0,4);cout<<"是否修改作者?是YES,否NO"<<endl;cin>>st;if(strcmp(st,"YES")==0){cout<<"請輸入更改后的作者:";cin>>book[k].author;}memset(st,0,4);cout<<"是否修改出版社?是YES,否NO"<<endl;cin>>st;if(strcmp(st,"YES")==0){cout<<"請輸入更改后的出版社:";cin>>book[k].publish;}memset(st,0,4);cout<<"是否修改數(shù)量?是YES,否NO"<<endl;cin>>st;if(strcmp(st,"YES")==0){cout<<"請輸入更改后的數(shù)量:";cin>>book[k].amount;}memset(st,0,4);cout<<"是否修改價格?是YES,否NO"<<endl;cin>>st;if(strcmp(st,"YES")==0){cout<<"請輸入修改后的價格:";loop:cin>>book[k].price;for(int j=0;j<strlen(book[k].price);j++)//若輸入的不是數(shù)字則給出提示并重新輸入{if(isdigit(book[k].price[j]))continue;else{cout<<"輸入格式錯誤!"<<endl;m=100;break;}}if(m==100){cout<<"請重新輸入價格:";m=0;goto loop;}}cout<<"修改完畢!更改過的信息如下"<<endl;cout<<"ISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name;cout<<" |作者:"<<book[k].author<<" |出版社:"<<book[k].publish;cout<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<"|"<<endl;cout<<"是否繼續(xù)修改信息?YES or NO"<<endl;cin>>s;}while(strcmp(s,"YES")==0);FILE *fp;fp=fopen("text.txt","w");for(int t=0;t<n;t++){fprintf(fp,"%lld %s %s %s %s %lld\n",book[t].ISBN,book[t].name,book[t].author,book[t].publish,book[t].price,book[t].amount);}fclose(fp); }void delect()//刪除 {ll newISBN,k,m,t;char s[4];char st[4];do{memset(s,0,4);memset(st,0,4);cout<<"請輸入要刪除圖書的ISBN號:";cin>>newISBN;for(k=0;k<n;k++){if(book[k].ISBN==newISBN){cout<<"查詢到的結(jié)果如下^-^"<<endl;cout<<"ISBN號:"<<book[k].ISBN<<" |書名:"<<book[k].name;cout<<" |作者:"<<book[k].author<<" |出版社:"<<book[k].publish;cout<<" |價格:"<<book[k].price<<" |數(shù)量:"<<book[k].amount<<"|"<<endl;break;}}if(k==n) cout<<"該編號不存在!"<<endl;cout<<"確定要刪除該圖書信息嗎?是YES,否NO"<<endl;cin>>st;if(strcmp(st,"YES")==0){for(m=k;m<n-1;m++){book[m]=book[m+1];}n--;}cout<<"該圖書信息已經(jīng)成功被您刪除!"<<endl;cout<<"是否繼續(xù)執(zhí)行下一次的刪除功能?YES or NO"<<endl;cin>>s;}while(strcmp(s,"YES")==0);FILE *fp;fp=fopen("text.txt","w");for(int t=0;t<n;t++){fprintf(fp,"%lld %s %s %s %s %lld\n",book[t].ISBN,book[t].name,book[t].author,book[t].publish,book[t].price,book[t].amount);}fclose(fp); }void manage()//管理系統(tǒng) {int m,j;do{j=1;system("cls");system("color B0");cout<<"\t\t\t\t\t+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按1--添加圖書信息 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按2--查詢信息 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按3--修改圖書信息 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按4--刪除圖書信息 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t| 按0--返回主菜單 |\t\t\t\t\t"<<endl;cout<<"\t\t\t\t\t=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+\t\t\t\t\t"<<endl;cout<<"請選擇 0-4:";cin>>m;switch(m){case 1:add();break;case 2:inquiry();break;case 3:rewrite();break;case 4:delect();;break;case 0:j=0;break;default:cout<<"請輸入0-4的數(shù)字"<<endl;}if(j!=0) cout<<"按任意鍵繼續(xù)!"<<endl;}while(j!=0); }void count()//統(tǒng)計系統(tǒng) {int a;ll k;cout<<"\t\t---------歡迎進(jìn)入圖書信息統(tǒng)計系統(tǒng)---------\t\t"<<endl;cout<<"\t\t按1,按照價格統(tǒng)計\t\t"<<endl;cout<<"\t\t按2,按照庫存量統(tǒng)計\t\t"<<endl;cout<<"\t\t按3,按照作者統(tǒng)計\t\t"<<endl;cout<<"\t\t按4,按照出版社統(tǒng)計\t\t"<<endl;cout<<"\t\t請輸入:";cin>>a;if(a==1){sort(book,book+n,cmp1);for(k=0;k<n;k++){cout<<"價格:"<<book[k].price<<" 書名:"<<book[k].name;cout<<" 作者:"<<book[k].author<<" 出版社:"<<book[k].publish;cout<<" 庫存量:"<<book[k].amount<<endl;}}else if(a==2){sort(book,book+n,cmp2);for(k=0;k<n;k++){cout<<" 庫存量:"<<book[k].amount<<" 書名:"<<book[k].name;cout<<" 作者:"<<book[k].author<<" 出版社:"<<book[k].publish;cout<<" 價格:"<<book[k].price<<endl;}}else if(a==3){sort(book,book+n,cmp3);for(k=0;k<n;k++){cout<<" 作者:"<<book[k].author<<" 書名:"<<book[k].name;cout<<" 出版社:"<<book[k].publish<<" 庫存量:"<<book[k].amount;cout<<" 價格:"<<book[k].price<<endl;}}else if(a==4){sort(book,book+n,cmp4);for(k=0;k<n;k++){cout<<" 出版社:"<<book[k].publish<<" 書名:"<<book[k].name;cout<<" ISBN號:"<<book[k].ISBN<<" 庫存量:"<<book[k].amount;cout<<" 價格:"<<book[k].price<<endl;}}else cout<<"請輸入1-4的數(shù)字!"<<endl; }int main()//主函數(shù) {n=i=0;void manage();//管理系統(tǒng)void sell();//銷售系統(tǒng)void count();//統(tǒng)計系統(tǒng)void menu();//菜單void add();//添加void inquiry();//查詢void rewrite();//修改void delect();//刪除void read();//讀取文件int choice,quit;while(1){quit=0;menu();//菜單//read();cin>>choice;switch(choice){case 1:sell();break;case 2:manage();break;case 3:count();break;case 0:quit=1;break;default:cout<<"請輸入0-3的數(shù)字!"<<endl;}if(quit==1) break;printf("按任意鍵返回主菜單!\n");getchar();getchar();}printf("程序結(jié)束!\n");return 0; }四、文件名text.txt
1234567890001 離散數(shù)學(xué)1 小康 非洲出版社 15 39
1234567890002 離散數(shù)學(xué)2 小劉 亞洲出版社 19 50
1234567890004 離散數(shù)學(xué)4 小樂 歐洲出版社 20 60
1234567890005 離散數(shù)學(xué)5 小明 神洲出版社 18 65
1234567890006 離散數(shù)學(xué)6 老張 鄭州出版社 99 70
1234567890007 離散數(shù)學(xué)7 老李 焦作出版社 80 75
1234567890008 離散數(shù)學(xué)8 老王 河南出版社 50 80
1234567890009 離散數(shù)學(xué)9 老郭 黃河出版社 45 85
完。
總結(jié)
以上是生活随笔為你收集整理的大一写的C课程设计(图书馆管理系统)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP14种常见状态码详解——来自《h
- 下一篇: 简单的用Python实现学生信息管理