① c語言圖書管理信息系統
借書的限制:教師180天,借15本;學生120天,借10本
圖書的信息:書的編號號,書名,作者,書的種類,書的總量以及書的剩餘量
學生/教師信息:學號/工號(4位數字字元),姓名,借書日期,還書日期(以此判定是否超出有效期)
(一)、查詢:(無條件或有條件指按所有欄位查詢)
一、單鏈表上實現圖書信息管理
利用鏈表結構實現圖書存儲
二、二叉排序樹或平衡樹上實現圖書信息管理
利用二叉排序樹或平衡樹實現圖書的存儲
三、B_樹的操作(手工題)
插入、刪除操作:
從空的3階B_樹開始,依次插入20,30,50,52,60,68,70,10,80,90,40,75。畫出建樹過程,然後分別畫出刪除50,60,10,75,20的B_樹狀態。
1.課程設計的題目內容要求
2.數據結構的設計思想和任務的總體結構
鏈接:https://pan..com/s/11BBC4ec7x3l62u83lJeGpw
提取碼:1234
② C語言編程圖書管理系統
#include#include#include#include#includestructbook{charnumber[100];chartittle[100];charwriter[100];charpublisher[100];chardate[100];charprice[100];charstatus[100];charreader[100];};voidsearch_book();voidborrow_book();voidreturn_book();voidadd_book();voiddelete_book();voidmodify_book();voidscan_book();intmain(){intc1=0,c2,c3;intl,x,z;while(1){system("color2C");printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");printf("\t\t\t|*-*-*-圖書管理系統*-*-*|\n");printf("\t\t\t*[1]用戶登錄*\n");printf("\t\t\t*[2]管理員登錄*\n");printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");printf("\n");printf("請選擇你的操作:");scanf("%d",&c1);system("cls");break;}if(c1==1){while(1){system("color2C");printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");printf("\t\t\t|*-*-*-圖書管理系統*-*-*|\n");printf("\t\t\t*[1]查詢圖書*\n");printf("\t\t\t|[2]借閱圖書|\n");printf("\t\t\t*[3]借還圖書*\n");printf("\t\t\t*[4]瀏覽圖書信息*\n");printf("\t\t\t|[5]退出圖書管理系統|\n");printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");printf("\n");printf("請選擇你的操作:");scanf("%d",&c2);getchar();switch(c2){case1:search_book();break;case2:borrow_book();break;case3:return_book();break;case4:scan_book();break;case5:system("cls");return0;}}}if(c1==2){while(1){system("color2C");printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");printf("\t\t\t|*-*-*-圖書管理系統*-*-*|\n");printf("\t\t\t|[1]添加圖書|\n");printf("\t\t\t*[2]刪減圖書*\n");printf("\t\t\t|[3]修改圖書信息|\n");printf("\t\t\t*[4]瀏覽圖書信息*\n");printf("\t\t\t|[5]退出圖書管理系統|\n");printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");printf("\n");printf("請選擇你的操作:");scanf("%d",&c3);getchar();switch(c3){case1:add_book();break;case2:delete_book();break;case3:modify_book();break;case4:scan_book();break;case5:system("cls");return0;}}}}/*查詢圖書*/voidsearch_book(){FILE*fp;structbookn;structbooknn;intl,r;charx,z;fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb");while(1){l=0;system("cls");printf("請輸入圖書名稱:");scanf("%s",n.tittle);fflush(stdin);rewind(fp);while(1){fread(&nn,sizeof(nn),1,fp);if(feof(fp))break;r=strcmp(n.tittle,nn.tittle);if(r==0){l=1;break;}}if(l==0){printf("沒有要查詢的圖書!!!\n\n");}else{printf("查詢的圖書為:");printf("\n");printf("****************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");printf("%s%s%s%s%s%s%s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);printf("\n\n\n");}printf("是否繼續查詢圖書?[是(y)/否(n)]?\n\n");do{x=getche();}while(x!='n'&&x!='y');if(x=='n')break;}fclose(fp);system("cls");}//添加voidadd_book(){FILE*fp;structbookn;structbooknn;charx,z;intl,r;fp=fopen("F:\\課程設計\\圖書管理系統.txt","ab+");do{system("cls");do{l=0;printf("\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");fflush(stdin);scanf("%s%s%s%s%s%s%s%s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);system("cls");rewind(fp);while(!feof(fp)){fread(&nn,sizeof(nn),1,fp);r=strcmp(n.tittle,nn.tittle);if(r==0){l=1;printf("該圖書已存在,請輸入新的圖書信息:\n\n");break;}}}while(l);fwrite(&n,sizeof(n),1,fp);printf("\n");printf("是否繼續輸入新的圖書信息[y/n]\n\n");do{x=getche();}while(x!='n'&&x!='y');}while(x=='y');fclose(fp);system("cls");}//刪除圖書voiddelete_book(){FILE*fp,*fp1;charx,z;structbookn;structbooknn;intl,r;fp=fopen("F:\\課程設計\\圖書管理系統.txt","ab+");while(1){l=0;system("cls");printf("\n");printf("請輸入需要刪除的圖書名:\n\n");fflush(stdin);scanf("%s",&n.tittle);rewind(fp);while(1){fread(&nn,sizeof(nn),1,fp);if(feof(fp))break;r=strcmp(n.tittle,nn.tittle);if(r==0){l=1;break;}}if(l==0){printf("\n");printf("對不起,未找到該圖書\n");}else{printf("\n");printf("****************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");printf("%s%s%s%s%s%s%s%s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);printf("\n");printf("確認刪除圖書信息?[是(y)/否(n)]\n\n");do{z=getche();}while(z!='n'&&z!='y');if(z=='n')break;else{fp1=fopen("F:\\課程設計\\圖書管理系統new.txt","wb");rewind(fp);while(1){fread(&nn,sizeof(nn),1,fp);if(feof(fp))break;r=strcmp(n.tittle,nn.tittle);if(r!=0)fwrite(&nn,sizeof(nn),1,fp1);}fclose(fp);fclose(fp1);fp=fopen("F:\\課程設計\\圖書管理系統.txt","wb");fp1=fopen("F:\\課程設計\\圖書管理系統new.txt","rb");while(1){fread(&nn,sizeof(nn),1,fp1);if(feof(fp1))break;fwrite(&nn,sizeof(nn),1,fp);}fclose(fp);fclose(fp1);}}printf("\n");printf("是否繼續刪除圖書信息?[是(y)/否(n)]\n");do{x=getche();}while(x!='n'&&x!='y');if(x=='n')break;}fclose(fp);system("cls");}//修改圖書信息voidmodify_book(){FILE*fp;structbookn;structbooknn;intl,r;charx,z;fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb+");while(1){l=0;printf("\n");system("cls");printf("請輸入需要修改的圖書名:\n\n");fflush(stdin);scanf("%s",&n.tittle);system("cls");rewind(fp);while(1){fread(&nn,sizeof(nn),1,fp);if(feof(fp))break;r=strcmp(n.tittle,nn.tittle);if(r==0){l=1;break;}}if(l==0){printf("\n");printf("對不起,未找到該圖書信息\n\n");}else{printf("\n");printf("****************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");printf("%s%s%s%s%s%s%s%s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);printf("請依次修改圖書信息\n\n\n");fflush(stdin);scanf("%s%s%s%s%s%s%s%s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);fseek(fp,sizeof(nn),1);fwrite(&n,sizeof(nn),1,fp);}printf("\n");printf("是否繼續修改用戶信息[y/n]?\n\n");do{x=getch();}while(x!='n'&&x!='y');if(x=='n')break;}fclose(fp);system("cls");}//借書voidborrow_book(){FILE*fp;structbookn;structbooknn;charx,z;intl,r;fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb+");while(1){l=0;system("cls");printf("\n");printf("請輸入需要借閱的圖書名:\n");fflush(stdin);scanf("%s",&n.tittle);rewind(fp);while(1){fread(&nn,sizeof(nn),1,fp);if(feof(fp))break;r=strcmp(n.tittle,nn.tittle);if(r==0){l=1;break;}}if(l==0){printf("\n");printf("對不起,未找到該圖書。\n");}else{printf("\n");printf("****************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");printf("%s%s%s%s%s%s%s%s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);printf("\n");fflush(stdin);printf("請輸入圖書信息並修改在庫狀態及借閱者信息");printf("****************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");scanf("%s%s%s%s%s%s%s%s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);fseek(fp,sizeof(nn),1);fwrite(&n,sizeof(nn),1,fp);}printf("\n");printf("是否繼續借書?[是(y)/否(n)]\n\n");do{x=getch();}while(x!='n'&&x!='y');if(x=='n')break;}fclose(fp);system("cls");}//還書voidreturn_book(){FILE*fp;structbookn;structbooknn;charx,z;intl,r;fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb+");while(1){l=0;system("cls");printf("\n");printf("請輸入需要借還的圖書名:\n");fflush(stdin);scanf("%s",&n.tittle);rewind(fp);while(1){fread(&nn,sizeof(nn),1,fp);if(feof(fp))break;r=strcmp(n.tittle,nn.tittle);if(r==0){l=1;break;}}if(l==0){printf("\n");printf("對不起,未找到該圖書。\n");}else{printf("\n");printf("****************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");printf("%s%s%s%s%s%s%s%s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);printf("\n");fflush(stdin);printf("請輸入圖書信息並修改在庫狀態\n\n");printf("****************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");scanf("%s%s%s%s%s%s%s%s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);fseek(fp,-(int)sizeof(nn),1);fwrite(&n,sizeof(nn),1,fp);}printf("\n");printf("是否繼續還書?[是(y)/否(n)]\n");do{x=getche();}while(x!='n'&&x!='y');if(x=='n')break;}fclose(fp);system("cls");}//瀏覽voidscan_book(){FILE*fp;charx,z;structbookn;fp=fopen("F:\\課程設計\\圖書管理系統.txt","rb");rewind(fp);system("cls");while(1){fread(&n,sizeof(n),1,fp);if(feof(fp))break;else{printf("********************************************\n");printf("編號書名作者出版社出版時間價格狀態借閱者\n");printf("\n");printf("%s%s%s%s%s%s%s%s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);printf("\n");}}printf("\n");printf("回到主菜單請按回車");do{x=getche();}while(x!='\r');if(x=='\r'){fclose(fp);system("cls");}}
③ 圖書信息管理系統設計 c語言
高級語言程序設計(2)課程設計 一程序設計說明書【設計題目】圖書館借閱管理【問題描述】圖書館,適合用C++面向對象的功能來描述。圖書館管理系統分為借書、還書、圖書管理和讀者服務等四個部分。設計一個讀者類Reader,記錄每個讀者基本信息;讀者庫類Rdatabase,記錄所有讀者信息;圖書類Book,記錄每本書的基本信息;圖書庫類Bdatabase,記錄所有圖書信息。【基本要求】1讀者庫類RDatabase中,其構造函數中,將read.txt文件中所有讀入讀者記錄rede[]中。處理完畢,在析構函數中將read[]中的所有未刪記錄寫入到read.txt中。2圖書庫類BDatabase中,其構造函數中,將book.txt文件中所有讀入圖書記錄book[]中。處理完畢,在析構函數中將book[]中的所有未刪記錄寫入到book.txt中。3利用構造函數完成讀者和圖書數據初始化,完成內存分配。程序結束前,析構函數完成所申請的堆內存空間。4編寫主函數,對所編寫的矩陣類進行全面測試。要求用戶界面採用菜單方式。測試中需要讀者和圖書數據通過I/O流從磁碟文件讀入,同時顯示在屏幕上。得到的數據通過I/O流寫入磁碟文件保存,同時顯示在屏幕上。5源程序中要有充分的注釋,報告中要有詳細的流程圖和文字材料。【類的設計】該程序包含了四個類,如下:1.Reader類,有讀者的基本管理功能,具有以下私有數據:inttag;//刪除標記1:已刪;0:未刪intno;//讀者編號charname[10];//讀者姓名intborbook[Maxbor];//所借圖書2.讀者庫類Rdatabase,具有以下私有數據:inttop;//讀者記錄指針Readerread[Maxr];//讀者記錄3.圖書庫類Book,有一本圖書的基本功能,有以下私有數據:inttag;//刪除標記1:已刪;0:未刪intno;//圖書編號charname[20];//書名intonshelf;//是否在架1在架0已借4.圖書庫類BDatabase,有以下私有數據:inttop;//圖書記錄指針Bookbook[Maxb];//圖書記錄【特殊函數的設計說明】構造函數1.Reader類中構造函數Reader(),初始化函數;2.讀者庫類RDatabase中,其構造函數Rdatabase(),將read.txt文件中所有讀入讀者記錄rede[]中。3.Book類中構造函數Book(),初始化函數;4.圖書庫類BDatabase中,其構造函數中,將book.txt文件中所有讀入圖書記錄book[]中。 拷貝構造函數Reader類中的拷貝構造函數將getname()的返回值讀者姓名拷貝到setname()中,Book類中的拷貝構造函數將getname()函數的返回值圖書名拷貝到圖書名設置函數setname()中。 析構函數1.讀者庫類RDatabase中,其析構函數~Rdatabase(),將read[]中的所有未刪記錄寫入到read.txt中;2.圖書庫類BDatabase中,其析構函數~Bdatabase(),將book[]中的所有未刪記錄寫入到book.txt中。 運算符重載重載了「=」,當比較讀者編號和圖書編號時,重載;重載位運算符「〈〈」和「〉〉」等。 【主要函數演算法流程圖】 【程序的使用方法】1.進入操作頁面,按提示操作;2.首先,新增圖書和讀者信息,之後就可以對以存在的信息進行操作;3.操作當中,可以隨時增加,更改和刪除圖書或讀者信息;4.當選擇退出時,進行清屏。 二程序上機調試報告【語法錯誤及其排除】1.在敲程序時,有很多拼寫錯誤,例好多處把Readdata()誤打Readdate();結束的分號,在不同的輸入法狀態下輸入,這些小錯誤剛開始很難發現,不過有了經驗,就很容易了。2.創建新的構造函數時,使用出現了錯誤。重載構造函數要注意函數的訪問許可權,結果就不會出現錯誤。【演算法錯誤及其排除】1.讀者類中借書操作函數中,採用循環語句時判斷讀者已借圖書量時for(inti=0;i#include#include#includeconstintMaxr=1000;//最多的讀者constintMaxb=10000;//最多的圖書constintMaxbor=8;//每位讀者最多借8本書classReader//讀者類{inttag;//刪除標記1已刪;0未刪intno;//讀者編號charname[10];//讀者姓名intborbook[Maxbor];//所借圖書public:Reader(){}//構造函數char*getname(){returnname;}//獲取讀者姓名intgettag(){returntag;}//獲取刪除標記intgetno(){returnno;}//獲取讀者編號voidsetname(charna[])//設置讀者姓名{strcpy(name,na);}voiddelbook(){tag=1;}//設置刪除標記voidaddreader(intn,char*na)//增加讀者{tag=0;no=n;strcpy(name,na);for(inti=0;i>choice;switch(choice){case1:cout>readerid;cout>rname;addreader(readerid,rname);break;case2:cout>readerid;r=query(readerid);if(r==NULL){cout>rname;r->setname(rname);break;case3:cout>readerid;r=query(readerid);if(r==NULL){coutdelbook();break;case4:cout>readerid;r=query(readerid);if(r==NULL){cout>choice;switch(choice){case1:cout>bookid;cout>bname;addbook(bookid,bname);break;case2:cout>bookid;b=query(bookid);if(b==NULL){cout>bname;b->setname(bname);cout>bookid;b=query(bookid);if(b==NULL){coutdelbook();break;case4:cout>bookid;b=query(bookid);if(b==NULL){coutdisp();break;case5:disp();break;case6:clear();break;}}} voidmain(){intchoice=1,bookid,readerid;RDatabaseReaderDB;Reader*r;BDatabaseBookDB;Book*b;while(choice!=0){cout>choice;switch(choice){case1:cout>readerid;cout>bookid;r=ReaderDB.query(readerid);if(r==NULL){coutborrowbook()==0){coutborrowbook(b->getno());break;cout>readerid;cout>bookid;r=ReaderDB.query(readerid);if(r==NULL){coutretbook();r->retbook(b->getno());break;cout<<"還書成功!"<
④ C語言程序設計圖書信息管理系統
俺也想要,[email protected]
謝謝
⑤ 用C語言設計和實現一個「圖書信息管理系統」,滿足以下要求:
const int MAXLEN=100;int count; //記錄書籍數量char fName[20]="backup.dat"; //磁碟文件:書籍信息文件名 int LEN; //全局變數,通訊錄中當前聯系人總數int n;char *key;
typedef struct book //聯系人數據結構
{ char no[20]; //序號 char book_name[20]; // 書名 char writer[30]; //作者名 char booknum[20]; //書籍分類 char press[20]; //出版單位 char price[10]; //書籍價格 }BOOK;BOOK b[MAXLEN];
typedef struct index{ int len; //數組長度 BOOK b[MAXLEN]; //指針數組}Index;
int Select();int Menu(void);int SubMenu2(void);int SubMenu4(void);int addbook(BOOK b[]);int output(BOOK b[]);int deletebook(BOOK b[]);void printno(BOOK b[]);int modifyIndo(BOOK b[]);int Save(BOOK b[]); int loaddata(BOOK b[]);int Copy(void);void New(BOOK b[]);int Load(BOOK b[]);void List(BOOK b[]);//void findbook(char *name,BOOK b[],char *key);
#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<memory.h>int main(int argc, char* argv[]){ int select=0;
/*int select;用戶所選的菜單項代碼: 主菜單:1 查找圖書信息、2 更新圖書信息 、3 備份圖書信息、0 退出程序 更新圖書信息子菜單:21 新增圖書信息、 22 編輯圖書信息、 23 刪除圖書信息、 20 返回主菜單 查看圖書信息子菜單:11 圖書信息庫 、12書名查找、13 作者名查找、14 序號查找 */
BOOK b[MAXLEN]; memset(b,0,sizeof(b)); //將b初始化為空,memory.h loaddata(b); //從圖書庫文件中讀取信息 //循環顯示菜單,供用戶選擇 do{
if(select<10||select==20||select==40) select=Menu(); else if(select>20 && select<30) select=SubMenu2(); else if(select>40 && select<50) select=SubMenu4(); switch(select) { case 11:// 圖書信息庫 break; case 12://書名查找 break;
case 13://作者名查找 break; case 14://類別查找 break;
case 21://新增圖書信息、 break; case 22://編輯圖書信息、 break; case 23://刪除圖書信息、 break; case 20://返回主菜單 break; case 3: system("cls"); Save(b); Copy(); break; case 0://退出程序 break; } }while(select!=0); return 0;}
int SubMenu4(void){ char menu; do{ system("cls");//清屏,需要使用到stdlib.h puts("\n\t======更新圖書信息======\n"); puts("\t 1.新增圖書信息"); puts("\t 2.刪除圖書信息"); puts("\t 3.編輯圖書信息"); puts("\t 0.返回主菜單"); puts("\n\t=================="); printf("\t請選擇:");//提示選擇 menu=getche(); switch(menu) { case '0': puts("\n\n\t返回主菜單!"); break; case '1': addbook(b); break; case '2': deletebook(b); break; case '3': modifyIndo(b); break; default: puts("\n\n\t選擇錯誤!"); menu='9'; } }while(menu=='9'); return 40+menu-'0';}
void New(BOOK b[]){ int t=0; //找到BOOK中第一個空的位置,存放新輸入 if(LEN>=MAXLEN) { printf("\n\n\t圖書庫已滿!"); return ; }
while(strcmp(b[t].book_name,"")!=0) //找到b中第一個空的位置t t++; addbook(b); //新增,輸入 LEN++; //增1}
int modifyIndo(BOOK b[])//編輯圖書信息{ char no[20]; int i; printno(b);again: printf("\n請輸入你想要編輯的書籍編號:"); fflush(stdin); gets(no); for(i=0;i<=count;i++) { if(strcmp(no,b[i].no)==0) break; } if(i>count) { printf("對不起,你輸入的編號不存在,是否繼續?Y/N:"); if((getchar()=='Y')||(getchar()=='y')) goto again; else return 0; } printf("\n正在修改《%s》的信息……\n",b[i].book_name); printf("請輸入圖書的名字:"); gets(b[i].book_name); printf("請輸入圖書的作者名:"); gets(b[i].writer); printf("請輸入書籍類別:"); gets(b[i].booknum); printf("請輸入書籍的出版單位:"); gets(b[i].press); printf("請輸入書籍的價格:"); gets(b[i].price); printf("\n圖書信息編輯成功!\n");
}
void printno(BOOK b[]){ int i; printf("\n當前庫存中的書籍目錄:\n"); for( i=0;i<=count;i++) { printf("%s %s ",b[i].no,b[i].book_name); if(i%3==0&&i>0) printf("\n"); }}
int output(BOOK b[]) //輸出圖書信息{ if(count<0) { printf("對不起,當前圖書數量為0\n"); return 0; } for(int i=0;i<=count;i++) { printf("\n*************************書籍信息*****************************\n"); printf("序號:%s\n",b[i].no); printf("書名:%s\n",b[i].book_name); printf("作者名:%s\n",b[i].writer); printf("書籍類別:%s\n",b[i].booknum); printf("出版單位:%s\n",b[i].press); printf("書籍價格:%s\n",b[i].price); } return 1; }
int deletebook(BOOK b[]) { char no[20]; int i; printno(b);loop: printf("\n請輸入你要刪除的書籍編號:"); fflush(stdin); gets(no); for(i=0;i<=count;i++) { if(strcmp(no,b[i].no)==0) break; } if(i>count) { printf("對不起,你輸入的編號不存在,是否繼續?Y/N:"); if((getchar()=='Y')||(getchar()=='y')) goto loop; else return 0; } printf("您確定要刪除《%s》嗎?Y/N:",b[i].book_name); if((getchar()=='Y')||(getchar()=='y'))
{ if(i==count) { count--; } else { for(;i<=count;i++) { b[i]=b[i+1]; count--; }
}
} else return 0; }
int loaddata(BOOK b[]){ int i=0; //i:b數組的下標 FILE *fp=fopen(fName,"r"); if(!fp) { printf("\n\t對不起,路徑或者文件錯誤,無法讀入!請重新增加!"); getch(); return 0; } fscanf(fp,"書籍編號\t書名\t作者\t類別\t出版單位\t價格"); while((!feof(fp))) { fscanf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",&b[i].no,&b[i].book_name,&b[i].writer,&b[i].booknum,&b[i].press,&b[i].price); i++; } count=i; fclose(fp); printf("載入成功!!"); return 1;}
int Select(){ int i=0; int c; //c:scanf輸入的返回值,輸入成功返回1;否則返回0 printf("\n\t請按需要選擇圖書信息:"); c=scanf("%d",&i); while(i<1 || i>LEN) { printf("\n\t輸入錯誤!請按序號選擇圖書信息:"); if(c==0) fflush(stdin); c=scanf("%d",&i); } return i-1;} int addbook(BOOK b[]) //增加圖書信息{ int i=0; char c; printf("\n*******************************新增圖書信息****************************\n"); for(;;i++) { if(i>=MAXLEN) { printf("\n對不起,庫存已滿!不能繼續添加。"); } printf("請輸入圖書的序號:"); gets(b[i].no); printf("請輸入圖書的名字:"); gets(b[i].book_name); printf("請輸入圖書的作者名:"); gets(b[i].writer); printf("請輸入書籍類別:"); gets(b[i].booknum); printf("請輸入書籍的出版單位:"); gets(b[i].press); printf("請輸入書籍的價格:"); gets(b[i].price); printf("圖書增加成功!\n"); printf("請問您要繼續添加書籍信息嗎?(Y/N): "); c=getchar(); if(c=='Y'||c=='y') { getchar(); printf("\n"); continue; } else break; } count=i; return i;
}//查重。int Duplicate(char *name,BOOK b[],char *original){ int i,j; int p=0; //重復標志:1 重復 ,0 沒有重復 if(strcmp(name,original)!=0) for(i=0,j=0;j<LEN;) { while(strcmp(b[i].book_name,"")==0) i++;
if(strcmp(name,b[i].book_name) ==0) { p=1; printf("\n\t重復!請重新輸入:"); break; } i++; j++; } return p; }int SubMenu2(void){ char menu,*name; do{ system("cls"); //清屏,需要使用到stdlib.h puts("\n\t======查找圖書信息======\n"); puts("\t 1.圖書信息庫"); puts("\t 2.書名查找"); puts("\t 3.作者名查找"); puts("\t 4.序號查找"); puts("\t 0.返回主菜單"); puts("\n\t=================="); printf("\t請選擇:"); //提示選擇 menu=getche(); switch(menu) { case '0': puts("\n\n\t返回主菜單!"); break; case '1': output(b); getch(); break; case '2': //findbook(name,b,key); getch(); break; case '3': case '4': printno(b); break; default: puts("\n\n\t選擇錯誤!"); menu='9'; } }while(menu=='9'); return 20+menu-'0';}
int Menu(void){ char menu; do{ system("cls"); puts("\n\t======主菜單======\n"); puts("\t 1.查找圖書信息"); puts("\t 2.更新圖書信息"); puts("\t 3.備份圖書信息"); puts("\t 0.退出程序"); puts("\n\t=================="); printf("\t請選擇:"); //提示選擇 menu=getche(); switch(menu) //將用戶輸入的選項menu轉換成系統定義的菜單代碼 {
case '0': puts("\n\n\t退出程序!"); menu=menu-'0'; break;
case '2': menu=SubMenu4();
break; case '3': menu=menu-'0';
break; case '1': menu=SubMenu2();
break; default: puts("\n\n\t選擇錯誤!"); menu='9'; //輸入了無效的菜單代碼,需要重新輸入 } }while(menu=='9'); return menu;}
int Load(BOOK b[]){ FILE *fin; int i=0; fin=fopen(fName,"rb"); if(!fin) { printf("\n\t書籍信息不存在,請先新增加圖書信息!\n\n按任意鍵繼續……"); getch(); return 0; } while(1) { fread(&b[i],sizeof(BOOK),1,fin); if(feof(fin)) break; i++; } fclose(fin); LEN=i; return i;
}
int Save(BOOK b[])//存入文件 {
int i; //i:b數組的下標 FILE *fp=fopen(fName,"w"); if(!fp) { printf("\n\t不能正確保存書籍信息!按任意鍵繼續……"); getch(); return 0; } fprintf(fp,"書籍編號\t書名\t作者\t類別\t出版單位\t價格"); for( i = 0; i <=count; i++) { fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",b[i].no,b[i].book_name,b[i].writer,b[i].booknum,b[i].press,b[i].price); } fclose(fp); printf("保存成功!!"); return 1;}
int Copy(void) //備份圖書信息,復制圖書信息文件{ FILE *fout,*fin; BOOK *p=(BOOK *)malloc(sizeof(BOOK)); //存放從圖書信息庫讀入的臨時數據 char name[20];
fin=fopen(fName,"rb"); if(!fin) { printf("\n\t沒有此圖書信息!"); return 0; }
do{ printf("\n\t請輸入備份文件名:"); scanf("%s",name); strcat(name,".bak"); fout=fopen(name,"wb"); if(!fout) printf("\t無效文件名或路徑!\n"); }while(!fout);
while(1) { fread(p,sizeof(BOOK),1,fin); if(feof(fin)) break; fwrite(p,sizeof(BOOK),1,fout); }
printf("\n\t備份成功!"); free(p); return 1;}
void findbook(char *name,BOOK b[],char *key){
int i,j; //i:數組下標 j:除姓名為空串以外的實際人數 int p=0; printf("請輸入您需要查找圖書信息的書名:"); scanf("%s",name); if(strcmp(name,key)!=0) for(i=0,j=0;j<LEN;) { while(strcmp(b[i].book_name ,"")==0) i++; if(strcmp(name,b[i].book_name) ==0) { p=1; printf("\n%s\t%s\t%s\t%s\t%s\t%s",&b[i].no,&b[i].book_name,&b[i].writer,&b[i].booknum,&b[i].press,&b[i].price); } }}
⑥ 誰能用c語言幫忙說一下這個圖書銷售管理系統的做法最好能給個樣板,要定義兩個結構體嗎
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 100 /*定義圖書總容量為100*/
int Count=0; /*定義全局變數,用來表示圖書的個數*/
struct book /*定義結構體類型*/
{
int num; /*序號為整型*/
char name[40]; /*書名為字元串*/
char author[20]; /*作者為字元串*/
char publish[50]; /*出版社為字元串*/
float price; /*價格為浮點型*/
};
struct book list[N]; /*定義struct book類型的變數 list N個*/
void show_bookinformation(struct book list[]); /*聲明圖書信息瀏覽函數*/
void check_bookinformation (struct book list[]); /*聲明圖書信息查詢函數*/
void modify_bookinformation (struct book list[]); /*聲明圖書信息修改函數*/
void delete_bookinformation (struct book list[]); /*聲明圖書信息刪除函數*/
void reorder_bookinformation(struct book list[]); /*聲明圖書信息排序函數*/
void buytotal(struct book list[]); /*聲明圖書購買信息函數*/
void read(); /*聲明數據讀入函數*/
void input(); /*聲明圖書信息錄入函數*/
void open(); /*聲明數據信息打開函數*/
/*主函數*/
void main()
{
int choice1;
printf(" *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n");
printf(" * 歡迎進入圖書銷售管理系統 *\n");
printf(" *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n");
do
{
printf("################################################################################"); /*顯示菜單*/
printf(" 功能選項: \n");
printf(" 1 : 圖書信息錄入 \n");
printf(" 2 : 圖書信息瀏覽 \n");
printf(" 3 : 圖書信息查詢 \n");
printf(" 4 : 圖書信息修改 \n");
printf(" 5 : 圖書信息刪除 \n");
printf(" 6 : 圖書信息排序 \n");
printf(" 7 : 圖書的購買 \n");
printf(" 0 : 退出系統 \n");
printf("################################################################################");
printf("\t請選擇操作:");
scanf("%d", &choice1);
switch (choice1) /*菜單選擇*/
{
case 1 :
input();
break;
case 2 :
show_bookinformation(list);
break ;
case 3 :
check_bookinformation (list);
break ;
case 4 :
modify_bookinformation (list);
break ;
case 5 :
delete_bookinformation(list);
break ;
case 6 :
reorder_bookinformation(list);
break;
case 7 :
buytotal(list);
break;
case 0 :
break ;
}
}while (choice1!=0);
printf("謝謝! 歡迎下次使用使用!\n");
}
/*打開文件函數*/
void open()
{
int i;
FILE *fp;
if((fp=fopen("book.txt","rb"))==NULL)
{
printf("無法操作,無文件信息!!!\n");
exit(0);
}
for(i=0;i<N;i++)
{
if(fread(&list[i],sizeof(struct book),1,fp)==0)
{
printf("數據輸出失敗!!!\n");
exit(0);
}
}
fclose(fp);
}
/*錄入文件函數*/
void read()
{
int i;
FILE *fp;
if((fp=fopen("book.txt","wr"))==NULL)
{
printf("\n不能打開文件!!!\n");
exit(0);
}
for(i=0;i<N;i++)
if(fwrite(&list[i],sizeof(struct book),1,fp)!=1)
printf("文件寫入錯誤!!!\n");
fclose(fp);
}
/*錄入函數*/
void input()
{
int i,k,j,t;
for(j=0;list[j].num!=0;j++)
t=j+1;
for(i=0;i<N;i++)
{
printf("\t請輸入您的圖書序號:");
scanf("\t%d",&list[i].num);
printf("\t請輸入書名:");
scanf("\t%s",list[i].name);
printf("\t請輸入作者:");
scanf("\t%s",list[i].author);
printf("\t請輸入出版社:");
scanf("\t%s",list[i].publish);
printf("\t請輸入價格:");
scanf("\t%f",&list[i].price);
fflush(stdin);
printf("\t\n是否繼續錄入?(1.是 2.否)");
scanf("%d",&k);
if(k==2) break;
}
Count=i+1;
read();
}
/*刪除函數*/
void delete_bookinformation (struct book list[])
{
int j,k,d,i=0;
open();
printf("請輸入要刪除的圖書的序號:\n");
scanf("%d",&d);
for(j=0;list[j].num!=0;j++)
{
if(list[j].num==d)
{
for(k=j;list[k].num!=0;k++)
list[k]=list[k+1];
i++;
}
}
if(i==0)
printf("圖書銷售系統沒有你輸入的圖書序號,請重新選擇輸入!!!\n");
else
Count=Count-1;
read();
printf("刪除成功\n");
}
/*修改函數*/
void modify_bookinformation (struct book list[])
{
int j,k=0,number;
open();
printf("\t請輸入您要修改的圖書的序號:");
scanf("%d",&number);
for (j=0;list[j].num!=0;j++)
if (list[j].num==number)
{
printf("\n\t請輸入您修改後的圖書信息!\n\n");
printf("\t請輸入您要修改的圖書的序號:");
scanf("%d",&list[j].num);
printf("\t請輸入您修改後的書名:");
scanf("%s",list[j].name);
printf("\t請輸入您修改後的作者名:");
scanf("%s",list[j].author);
printf("\t請輸入您修改後的出版社:");
scanf("%s",list[j].publish);
printf("\t請輸入您修改後的書的價格:");
scanf("%f",&list[j].price);
read();
printf("\n修改成功!\n");
k++;
}
if (k==0)
printf("\n\n\t找不到需要修改的圖書!!");
}
/*輸出函數*/
void show_bookinformation(struct book list[])
{
int i;
open();
printf("\n******************************圖書信息顯示*******************************\n");
printf("圖書序號\t圖書名\t\t作者名\t\t出版社\t\t圖書價格\n");
for(i=0;list[i].num!=0;i++)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[i].num,list[i].name, list[i].author,list[i].publish,list[i].price);
}
}
/*查詢函數*/
void check_bookinformation (struct book list[]) /*查詢圖書信息*/
{
int j,i,t,k=0;
char c[20],d[20];
printf("請輸入查詢方式:\n 1.按書名查詢 2按作者查詢:\n");
scanf("%d",&t);
if(t==1)
{
open();
printf("請輸入要查詢的書名號:\n");
scanf("%s",c);
printf("\n **********************你想要查詢的圖書信息(按作者名)********************** \n");
printf("圖書序號\t圖書名\t\t作者名\t\t出版社\t\t圖書價格\n");
for(j=0;list[j].num!=0;j++)
if(strcmp(c,list[j].name)==0)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[j].num,list[j].name, list[j].author,list[j].publish,list[j].price);
k++;
}
if(k==0)
printf("\n不存在你要查詢的圖書信息!!!\n");
}
if(t==2)
{
open();
printf("請輸入要查詢的作者名:\n");
scanf("%s",d);
printf("圖書序號\t圖書名\t\t作者名\t\t出版社\t\t圖書價格\n");
for(i=0;list[i].num!=0;i++)
if(strcmp(d,list[i].author)==0)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[i].num,list[i].name, list[i].author,list[i].publish,list[i].price);
k++;
}
if(k==0)
printf("\n不存在你要查詢的圖書信息!!!\n");
}
}
/*排序函數*/
void reorder_bookinformation(struct book list[])
{
int i,j,a,k;
struct book t;
FILE *fp;
char temp[40];
open();
printf("\n請選擇排序方式\n1---書名(按字母順序)\n2---價格(按從高到低)\n");
scanf("%d",&a);
switch(a)
{
case 1:
for(i=0;i<Count-1;i++)
{k=i;
for(j=i+1;j<Count;j++)
if(strcmp(list[k].name,list[j].name)>0) k=j;
if(k!=i)
{ strcpy(temp,list[i].name);
strcpy(list[i].name,list[k].name);
strcpy(list[k].name,temp);
}
}
if((fp=fopen("book.txt","w"))==NULL)
{
printf("can't open the file!\n");
exit(0);
}
printf("新序列為:\n");
printf("圖書序號\t圖書名\t\t作者名\t\t出版社\t\t圖書價格\n");
for(j=0;j<Count;j++)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[j].num,list[j].name, list[j].author,list[j].publish,list[j].price);
}
read();
break;
case 2:
for(k=0;list[k].num!=0;k++)
for(j=0;list[j].num!=0;j++)
if(list[j].price<list[j+1].price)
{t=list[j];list[j]=list[j+1];list[j+1]=t;}
printf("圖書序號\t圖書名\t\t作者名\t\t出版社\t\t圖書價格\n");
for(j=0;list[j].num!=0;j++)
{
printf(" %d\t\t%s\t%s\t\t%s\t%6.2f\n",list[j].num,list[j].name, list[j].author,list[j].publish,list[j].price);
k++;
}
read();
break;
}
}
/*購書清單*/
void buytotal(struct book list[])
{
int k,m,n,q,r,t=0;
float sum=0;
char e[50],f[50],l[50],o[50],p[50];
printf("\n ***************************************************\n");
printf("\n 人民郵電出版社樣書清單 \n");
printf("\n ***************************************************\n");
printf(" 請輸入所購各圖書的序號(輸入0 結束):\n");
scanf("%d",&q);
do
{
for(r=0;r<N;r++)
{
if(q==list[r].num)
{
sum=sum+list[r].price;
t++;
}
}
scanf("%d",&q);
} while(q!=0);
printf(" 合計發書:%d\n",t);
printf(" 收書單位:");
scanf("%s",e);
printf(" 發書依據:");
scanf("%s",f);
printf(" 價格:%.2f\n",sum);
printf(" 郵政編碼:");
scanf("%d",&k);
printf(" 收貨地址:");
scanf("%s",l);
printf(" 聯系電話:");
scanf("%d",&m);
printf(" 制單日期:");
scanf("%d",&n);
printf(" 貨運公司:");
scanf("%s",o);
printf(" 驗書人:");
scanf("%s",p);
}
這個給你參考,不知行不行,行的話,分給我吧
⑦ 如何使用C語言編寫圖書管理系統
圖書管理系統是運行於Windows系統下的應用軟體,主要用於對圖書館中的圖書信息進行增、刪、改、查等操作,並且還可對使用該系統的用戶進行登錄名和密碼的管理等。系統給用戶提供了一個簡單的人機界面,使用戶可以根據提示輸入操作項,調用系統提供的管理功能。
所需功能類似於學生成績管理系統,界面可參考附錄C。用戶分為管理員和一般人員兩大類。
功能需求描述如下。
①用戶登錄:根據用戶輸入的用戶名和密碼判斷是否允許該用戶使用本系統,並且當用戶登錄後根據用戶許可權判斷用戶可以使用哪些功能。學生只有瀏覽等許可權而不能進行實質性改動。
②提供系統主控平台:系統主控平台也應根據用戶許可權不同而有所區別,只列出在用戶許可權范圍內的功能供用戶選擇。系統主控平台包括輸入功能選項、調用相應程序兩大需求。教師和學生對應的系統主控平台是不同的。所能進行的操作也不相同。
③創建圖書信息文件:用戶根據提示輸入圖書編號、圖書分類號、書名、作者姓名、出版社名、出版年月、定價、存庫數量和借閱和上架情況等等信息存儲在系統磁碟的文件中。以便進行管理、查找和備份。
④增加圖書信息:可在原有圖書信息文件的基礎上增加新的圖書信息記錄並繼續保存至磁碟,並且將增加後的文件存儲狀況顯示給用戶。
⑤刪除圖書信息:提示用戶輸入要進行刪除操作的圖書編號,如果在文件中有該信息存在,則將該書號所對應的記錄刪除。並選擇是否繼續進行刪除操作。
⑥修改圖書信息:提示用戶輸入要進行修改操作的書號,如果在文件中有該息存在,則將提示用戶輸入該書號對應的要修改的選項,結果存儲於文件。該部分需求也需要提示用戶選擇是否繼續進行修改操作。
⑦查詢圖書信息:提供按書號或書名等查詢。在該功能中,也需提示用戶是否需要繼續查再繼續查找,則返回主界面。
⑧一般用戶查詢個人的借閱情況並按日期進行排序:。
⑨管理員和一般用戶管理:管理員對用戶的管理也需要進行用戶的創建、增加、刪除、瀏覽。管理員創建的用戶存儲在名為yonghu的磁碟文件中,每當有用戶登錄系統時,會根據該文件中的用戶名和密碼進行核實判斷,用戶才能夠順利登錄。管理員還具有用戶的功能。增加的用戶及密碼、許可權等也被繼續存儲在yonghu文件中。當某些用一用該系統時,還可以進行刪除操作,並且管理員具有修改用戶許可權的功能,一般用戶和管理員對於系統的許可權是不一樣的。