图书馆管理系统(c++语言实现)
生活随笔
收集整理的這篇文章主要介紹了
图书馆管理系统(c++语言实现)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include<bits/stdc++.h>
using namespace std;
int shenfen,n;
typedef struct Book//這個(gè)為借書還書所需要的書籍信息結(jié)構(gòu)體
{char name[1000];int numb;int rest;
}book,*books;
typedef struct player//用戶結(jié)構(gòu)體
{char id[10];char password[50];char name[10];int flag;
}users;void zhuce()//賬號(hào)的注冊(cè)功能 {char password1[10];users a,b;FILE *f;f=fopen("D:/yhh.txt","r");if(f==NULL){printf("注冊(cè)時(shí)打開文件失敗");}else{printf("\t\t\t歡迎來到注冊(cè)列表\n");printf("\t\t\t請(qǐng)輸入賬號(hào):");scanf("%s",&a.id);fread(&b,sizeof(struct player),1,f);}while(1){if(strcmp(a.id,b.id)){if(!feof(f)){fread(&b,sizeof(struct player),1,f);}else{printf("\t\t\t此賬號(hào)可注冊(cè)\n");break;}}//通過一個(gè)死循環(huán)實(shí)現(xiàn)逐個(gè)暴力比對(duì) else{ printf("\t\t\t此用戶名已存在,請(qǐng)重新注冊(cè)\n");fclose(f);return; }}do{printf("\t\t\t請(qǐng)輸入密碼:");scanf("%s",&a.password);printf("\t\t\t請(qǐng)?jiān)俅屋斎氪_認(rèn)密碼:");scanf("%s",&password1);if(strcmp(a.password,password1)){printf("\t\t\t兩次密碼輸入不相同\n");}else{ printf("\t\t\t密碼一致\n");break;}}while(1);a.flag=0;printf("\t\t\t請(qǐng)輸入你的昵稱:");scanf("%s",&a.name);f=fopen("D:/yhh.txt","a");fwrite(&a, sizeof(struct player), 1,f);printf("\t\t\t賬號(hào)注冊(cè)成功,請(qǐng)登錄!\n"); fclose(f);
}bool denglu()//登陸函數(shù)
{users a;FILE *f;char id1[10],password1[10];printf("\t\t\t請(qǐng)輸入您的賬號(hào):");scanf("%s",&id1);printf("\t\t\t請(qǐng)輸入密碼:");scanf("%s",&password1);f=fopen("D:/yhh.txt","r");while(1){if(strcmp(a.id,id1)){if(!feof(f)){fread(&a,sizeof(struct player),1,f);}else{printf("\t\t\t不存在此賬號(hào)\n");fclose(f);return false;}}else{if(strcmp(a.password,password1)){printf("\t\t\t密碼錯(cuò)誤\n");return false;}else{shenfen=a.flag;printf("\t\t\t登錄成功\n");return true;//flag為角色身份 我們提前錄入了管理員所以以后在注冊(cè)都是普通用戶 }}}
}
void del_book(books*BOOK,char*point)//借書函數(shù)
{int flag=0;//標(biāo)記是否找到書籍 FILE*fp1=fopen("D:/b.txt","rb");int i; for(i=0;i<n;i++){if(strcmp(point,(*BOOK)[i].name)==0){flag=1;break;}}if(!flag){printf("抱歉,目沒有此書籍"); goto flag1;}if((*BOOK)[i].rest==0){printf("很抱歉,書已經(jīng)全部借出\n");goto flag1;}(*BOOK)[i].rest--;printf("%s的剩余量為:%d\n",(*BOOK)[i].name,(*BOOK)[i].rest);system("pause");system("cls"); printf("------------------借書目錄------------------\n"); for(int i=0;i<n;i++){printf("name:%s\n",(*BOOK)[i].name);printf("number:%d\n",(*BOOK)[i].numb);printf("rest:%d\n",(*BOOK)[i].rest);}printf("----------------------------------------\n");flag1:fclose(fp1);//清屏功能 FILE*fp2=fopen("D:/b.txt","wb");for(int i=0;i<n;i++){fwrite(&(*BOOK)[i],sizeof((*BOOK)[i]),1,fp2);}fclose(fp2);//對(duì)修改后的書籍寫入實(shí)現(xiàn)同步更新
}
void add_book(books*BOOK,char*point){//還書函數(shù) int flag=0;//和借書相似比較名稱的標(biāo)記符號(hào) FILE*fp1=fopen("D:/b.txt","rb");int i=0;for(i=0;i<n;i++){if(strcmp(point,(*BOOK)[i].name)==0){flag=1;break;}}if(!flag){printf("抱歉,目沒有此書籍"); goto flag1;}else{if((*BOOK)[i].rest==(*BOOK)[i].numb){cout<<"此書并未借出!"<<endl;return ;}(*BOOK)[i].rest++;cout<<"還書成功,謝謝!"<<endl;}printf("%s的剩余量為:%d\n",(*BOOK)[i].name,(*BOOK)[i].rest);system("pause");system("cls"); //清屏幕功能 printf("------------------目錄------------------\n"); for(int i=0;i<n;i++){printf("name:%s\n",(*BOOK)[i].name);printf("number:%d\n",(*BOOK)[i].numb);printf("rest:%d\n",(*BOOK)[i].rest);}printf("----------------------------------------\n");flag1:fclose(fp1);FILE*fp2=fopen("D:/b.txt","wb");for(int i=0;i<n;i++){fwrite(&(*BOOK)[i],sizeof((*BOOK)[i]),1,fp2); }fclose(fp2);
}
void add_del()//借書還書集合函數(shù) 用戶輸入借書還書先會(huì)跳入這個(gè)界面 然后進(jìn)行下一步操作程序判斷是借書還是還書
{FILE*fp1=fopen("D:/b.txt","rb");books BOOK=(books)malloc(sizeof(book)*n);printf("----------------目錄-------------------\n");for(int i=0;i<n;i++){fread(&BOOK[i],sizeof(book),1,fp1);printf("name:%s\n",BOOK[i].name);printf("number:%d\n",BOOK[i].numb);printf("rest:%d\n",BOOK[i].rest);}printf("------------------------------------------\n");flag1:printf("借書請(qǐng)輸入1,還書則輸入2,退出輸入3:\n");int flag;scanf("%d",&flag);if(flag!=1&&flag!=2&&flag!=3){fflush(stdin);while(flag!=1&&flag!=2&&flag!=3){cout<<"錯(cuò)誤操作請(qǐng)重新輸入!"<<endl;scanf("%d",&flag);fflush(stdin);}}if(flag==1){char ponit[1000];printf("請(qǐng)輸入想要借出的書名:\n");scanf("%s",ponit);del_book(&BOOK,ponit);}else if(flag==2){ char ponit[1000];printf("請(qǐng)輸入想要還的書名:\n");scanf("%s",ponit);add_book(&BOOK,ponit);}else{fclose(fp1);system("cls");return ;}fclose(fp1);
}
//把文件改成anis
FILE *fp;
int xuan;
typedef struct ook
{char name[100];char author[100];char num[100];double price;
}libr;//瀏覽書籍的結(jié)構(gòu)體
void end()
{//錄入這里使用追加功能 book B;struct ook boo;printf("輸入書名八(建議叫做馬小飛):");scanf("%s",boo.name);strcpy(B.name,boo.name);printf("輸入我的專屬號(hào)碼吧 主人:");scanf("%s",boo.num); printf("輸入作者名字(建議叫做顏金城):");scanf("%s",boo.author);printf("輸入我的價(jià)格吧(250金挺吉利的):");scanf("%lf",&boo.price);printf("輸入數(shù)量:");scanf("%d",&B.numb);B.rest=B.numb;getchar();fseek(fp,0,2);//定位到文件最后 fwrite(&boo,sizeof(libr),1,fp);FILE*fp2=fopen("D:/b.txt","ab");fwrite(&B,sizeof(B),1,fp2);fclose(fp2);n++;system("pause");}
void print()//當(dāng)進(jìn)入瀏覽功能后會(huì)進(jìn)行下面函數(shù)
{struct ook bo;fread(&bo,sizeof(libr),1,fp);printf("%-10s%-10s%-10s%-10s\n","書名","編號(hào)","作者","價(jià)格");while(feof(fp)==0){printf("%-10s%-10s%-10s%-10.2lf\n",bo.name,bo.num,bo.author,bo.price);//逐一讀出數(shù)據(jù)庫中的信息 fread(&bo,sizeof(libr),1,fp);}system("pause");
}
int dui(char* p,char* p1)//查詢功能
{int flag=0;int i;for(int i=0;i<(int)strlen(p1);i++){if(p[0]==p1[i]){flag=i;}}if((int)strlen(p)>(int)strlen(p1)-flag+1)return 0;for(i=0;i<(int)strlen(p);i++){if(p[i]!=p1[flag+i]){return 0;}}return 1;
}
void find()//總查詢界面 輸入查詢后進(jìn)入根據(jù)操作者的指令進(jìn)行下一步操作
{int flag=0;char temp[100]={0};printf("\t\t1-----書名查詢\t\t\t");printf("2-----編碼查詢\n\n");printf("\n\t\t3-書名模糊查詢 4-編號(hào)模糊查詢\n\n");scanf("%d",&xuan);struct ook boo;fread(&boo,sizeof(libr),1,fp);if(xuan==1){printf("請(qǐng)輸入書名:");scanf("%s",temp);while(feof(fp)==0){if(strcmp(temp,boo.name)==0){printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t%-10s%-10s%-10s%-10s\n","書名","編號(hào)","作者","價(jià)格");printf("\t\t\t\t%-10s%-10s%-10s%-10.2lf\n\n\n\n\n\n\n\n\n\n\n\n\n",boo.name,boo.num,boo.author,boo.price);flag=1; }fread(&boo,sizeof(libr),1,fp);}}if(xuan==2){printf("請(qǐng)輸入編號(hào):");scanf("%s",temp);while(feof(fp)==0){if(strcmp(temp,boo.num)==0){printf("%-10s%-10s%-10s%-10s\n","書名","編號(hào)","作者","價(jià)格");printf("%-10s%-10s%-10s%-10.2lf\n",boo.name,boo.num,boo.author,boo.price);flag=1; }fread(&boo,sizeof(libr),1,fp);}}if(xuan==4){printf("輸入模糊編號(hào):");scanf("%s",temp);int fan;while(!feof(fp)){fan=dui(temp,boo.num);if(fan==1){printf("%-10s%-10s%-10s%-10s\n","書名","編號(hào)","作者","價(jià)格");printf("%-10s%-10s%-10s%-10.2lf\n",boo.name,boo.num,boo.author,boo.price);flag=1;}fread(&boo,sizeof(libr),1,fp);}}if(xuan==3){printf("輸入模糊名稱:");scanf("%s",temp);int fan;while(!feof(fp)){fan=dui(temp,boo.name);if(fan==1){printf("%-10s%-10s%-10s%-10s\n","書名","編號(hào)","作者","價(jià)格");printf("%-10s%-10s%-10s%-10.2lf\n",boo.name,boo.num,boo.author,boo.price);flag=1;}fread(&boo,sizeof(libr),1,fp);}}if(flag==0)printf("\n\n\n\n\n\n\n\t\t\t\t\t!查無此書!\n\n\n\n\n\n\n\n\n\n\n\n");system("pause");
}
int mulu(void)//用戶登陸后的界面操作選擇
{system("cls");if((fp=fopen("D:/c.txt","rb+"))==NULL){fp=fopen("D:/c.txt","wb+");}printf("\n\n");int i; for(i=0;i<80;i++)printf("#");printf("\n\n"); printf("\t\t1-----圖書錄入\t\t\t");printf("2-----圖書瀏覽\n\n");printf("\t\t3-----圖書查詢\t\t\t");printf("4-----借閱或歸還圖書\n\n");printf("\n\t\t\t\t輸入其他任意鍵退出\n");printf("\n\n");for(i=0;i<80;i++)printf("#");printf("\n\n");z:scanf("%d",&xuan);while(xuan==1||xuan==2||xuan==3||xuan==4){if(xuan==1&&shenfen==0){printf("對(duì)不起無權(quán)限!\n");goto z;}system("cls");fp=fopen("D:/c.txt","rb+");switch(xuan){case 0:break;case 1:end();break;case 2:print();break;case 3:find();break;case 4:add_del();break;}fclose(fp);printf("\n\n");int i; for(i=0;i<80;i++)printf("#");printf("\n\n"); printf("\t\t1-----圖書錄入\t\t\t");printf("2-----圖書瀏覽\n\n");printf("\t\t3-----圖書查詢\t\t\t");printf("4-----借閱或歸還圖書\n\n");printf("\n\t\t\t\t輸入其他任意鍵退出\n");printf("\n\n");for(i=0;i<80;i++)printf("#");printf("\n\n");scanf("%d",&xuan);}
}
int main()//初始界面
{ma:printf("\t\t\t\t ***********************\n");printf("\t\t\t\t ***歡迎光臨324圖書館***\n");printf("\t\t\t\t ***********************\n");printf("\t\t注冊(cè)賬號(hào)...1\t\t登錄賬號(hào)...2\t\t退出...3\n");flag1:int temp;bool flag; scanf("%d",&temp);if(temp==1)zhuce();if(temp==2)flag=denglu();if(temp==3){FILE*fp2=fopen("D:/d.txt","w");char cn[100];sprintf(cn,"%d",n);fputs(cn,fp2);fclose(fp2);printf("歡迎下次光臨!!!\n"); system("pause");return 0;} if(!flag){fflush(stdin);goto flag1;}else{FILE*fp1=fopen("D:/d.txt","r");char cn[100];fgets(cn,100,fp1);sscanf(cn,"%d",&n);fclose(fp1);fp1=NULL;system("cls");printf("歡迎回來!\n");cout<<"請(qǐng)選擇操作"<<endl;if(flag==1)mulu();system("cls"); goto ma;}
}
總結(jié)
以上是生活随笔為你收集整理的图书馆管理系统(c++语言实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中“||”与“|”的区别【JAV
- 下一篇: 2019第七周作业