圖書館管理系統(tǒng)(C語言程序的設(shè)計)_第1頁
圖書館管理系統(tǒng)(C語言程序的設(shè)計)_第2頁
圖書館管理系統(tǒng)(C語言程序的設(shè)計)_第3頁
圖書館管理系統(tǒng)(C語言程序的設(shè)計)_第4頁
圖書館管理系統(tǒng)(C語言程序的設(shè)計)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 圖書館管理系統(tǒng)(C語言程序設(shè)計).txt生活是一千瘡百孔的網(wǎng),它把所有激情的水都漏光了。寂寞就是你說話時沒人在聽,有人在聽時你卻沒話說了! 百度知道 > 電腦/網(wǎng)絡(luò) > 程序設(shè)計 > C/C+添加到搜藏已解決 圖書管理系統(tǒng)C語言設(shè)計(c#免入) 懸賞分:100 - 解決時間:2010-6-25 14:38 1、功能描述,新進圖書基本信息的輸入。2. 圖書基本信息的查詢。3. 對撤消圖書信息的刪除。4. 為借書人辦理注冊。5辦理借書手續(xù)(非注冊會員不能借書)。6辦理還書手續(xù)信息描述:有關(guān)該系統(tǒng)基本信息的描述,如:圖書名稱、圖書編號、單價、作者、存在狀態(tài)、借書人、性別、學號等大

2、一新生的課程設(shè)計,那個只能用C語言來做,拜托各位了,兩天之后要上交,網(wǎng)上找的調(diào)試都不成功。記住一定要用C語言啊,千萬不要用C+,調(diào)試成功后有懸賞分的 問題補充:我的是g080166sina. 各位大俠,答完后記得留自己的名字啊,這樣我也好給分對了,是要在vc的系統(tǒng)編譯提問者: g080166 - 五級最佳答案#include <dos.h>#include <bios.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#inc

3、lude <string.h>#define LEFT 0x4b00 /*左*/#define RIGHT 0x4d00 /*右*/#define DOWN 0x5000 /*下*/#define UP 0x4800 /*上*/#define SPACE 0x3920 /*空格*/#define ESC 0x011b /* ESC鍵*/#define ENTER 0x1c0d /*回車鍵*/#define Backspace 0xe08 /*擦除鍵*/#define ALT_B 12288 /*組合鍵ALT_B */#define ALT_M 12800/*組合鍵ALT_M */#

4、define ALT_H 8960/*組合鍵ALT_H */int key;/*按鍵變量*/int textx,texty;/*光標坐標,x行,y列*/struct menustruct/*菜單用的結(jié)構(gòu)體*/ char name10;/*主菜單名*/ char str1020;/*選項*/ int n;/*選項數(shù)*/ml3;/*使用了3個,可根據(jù)需要增刪*/typedef struct BookList/*書的結(jié)構(gòu)體*/ char num20;/*圖書編號*/ char name20;/*書名*/ int price;/*書的價格*/ char person20;/*借閱人*/ int yes

5、;/*判斷書是否存在或者已經(jīng)借出,1存在,0借出*/ struct BookList *next;Book;typedef struct MemberList/*會員的結(jié)構(gòu)體*/ char name20;/*會員的*/ char sex2;/*會員的性別*/ int age;/*會員的年齡*/ struct MemberList *next;Member;char save4096;/*保存文本區(qū)域空間*/*char sav14096;*/char c4096;/*清屏專用空間*/int i,j;/*常用變量*/void Menu();/*初始化界面*/void Selectitem();/*

6、定義菜單*/void DrawSelectitem();/*顯示主菜單*/void BlackText(int x,int y,char *z);/*選中菜單*/void RedText(int x,int y,char *z);/*正常菜單*/void Run();/*具體操作過程*/void DrawMl(int n);/*顯示下拉菜單*/void MoveMl(int n,int x);/*菜單選項的控制*/void Enter(int m,int n);/*菜單選項的具體功能*/void BookAdd();/*添加圖書*/void BookConsult();/*圖書查詢*/void

7、 BookDel();/*刪除圖書資料*/void BookBorrow();/*借書*/void BookReturn(); /*還書*/void MemberAdd(); /*增加會員*/void MemberConsult();/*查詢會員*/void MemberDel(); /*刪除會員*/void MemberBook(); /*查詢會員借書信息*/void Help(); /*幫助*/void Ver(); /*版本信息*/void ClrScr();/*自定義清屏函數(shù)*/void DrawFrame(int left,int up,int right,int down,int

8、textcolor,int backgroundcolor);/*畫邊框*/*主函數(shù)*/void main(void) Menu();/*初始化界面*/ Run();/*具體操作過程*/*初始化界面*/void Menu() system("cls"); /*調(diào)用系統(tǒng)的清屏命令*/ textbackground(BLUE);/*將背景設(shè)置為藍色*/ window(1,1,25,80); clrscr(); textx=3;/*光標初始化位置*/ texty=2; gotoxy(1,2); printf("%c",218);/*畫左上角*/ for(i=0

9、;i<78;i+) printf("%c",196); /*畫水平直線*/ printf("%c",191);/*畫右上角*/ for(i=3;i<=23;i+) gotoxy(1,i); printf("%c",179); /*畫垂直線*/ gotoxy(80,i); printf("%c",179); printf("%c",192); /*畫左下角*/ for(i=0;i<78;i+) printf("%c",196); printf("%c

10、",217); /*畫右下角*/ gotoxy(1,1); textcolor(7); /*設(shè)置灰色*/ for(i=0;i<80;i+) cprintf("%c",219);/*用符號實現(xiàn)畫主菜單的灰色背景區(qū)*/ Selectitem(); /*調(diào)用選項函數(shù)*/ DrawSelectitem(); /*畫選項*/ gettext(2,3,78,23,c); /*保存當前文本區(qū)域*/*定義菜單*/void Selectitem() strcpy(,"Book");/*下面的具體選項補空格是為了各菜單黑色背景一樣*/ str

11、cpy(ml0.str0,"Add ");/*添加圖書*/ strcpy(ml0.str1,"Find ");/*查詢圖書*/ strcpy(ml0.str2,"Delete ");/*刪除圖書資料*/ strcpy(ml0.str3,"Borrow ");/*借書*/ strcpy(ml0.str4,"Return ");/*還書*/ strcpy(ml0.str5,"Exit ");/*退出系統(tǒng)*/ ml0.n=6; /*保存菜單的項數(shù)*/ strcpy(

12、,"Member"); strcpy(ml1.str0,"Register ");/*添加新會員*/ strcpy(ml1.str1,"Find ");/*查詢會員資料*/ strcpy(ml1.str2,"Delete ");/*刪除會員資料*/ strcpy(ml1.str3,"Member&book "); ml1.n=4; strcpy(,"Help");/*系統(tǒng)幫助*/ strcpy(ml2.str0,"This System &q

13、uot;); strcpy(ml2.str1,"Ver "); ml2.n=2;/*顯示主單名*/void DrawSelectitem() for(i=0;i<3;i+) RedText(i,1,); /*顯示主菜單名,且首字母為紅色*/*正常顯示菜單*/void RedText(int x,int y,char *z) textbackground(7); /*設(shè)置背景顏色為淺灰色*/ gotoxy(3+x*20,y); for(j=0;zj;j+) if(j=0) textcolor(RED);/*第一個字母顯示紅色*/ else textcol

14、or(BLACK); /*設(shè)置黑色*/ cprintf("%c",zj); /*輸出菜單名*/ /*顯示選中菜單*/void BlackText(int x,int y,char *z) textbackground(0); /*設(shè)置背景顏色為黑色*/ textcolor(15); /*設(shè)置文本顏色為白色*/ gotoxy(3+20*x,y);/*定位坐標*/ cputs(z); /*輸出菜單名字符串*/*按鍵操作過程*/void Run() while(1) gotoxy(texty,textx); key=bioskey(0);/*接收按鍵*/ switch(key)

15、case ALT_B: case ESC: DrawMl(0);break; /*顯示下拉菜單1*/ case ALT_M: DrawMl(1);break;/*顯示下拉菜單2*/ case ALT_H: DrawMl(2);/*顯示下拉菜單3*/ case UP: /*上光標鍵的操作控制*/ if(textx=3) textx=23; textx-; gotoxy(texty,textx); break; case DOWN: /*下光標鍵的操作控制*/ if(textx=23) textx=3; textx+; gotoxy(texty,textx); break; case LEFT:

16、/*左光標鍵的操作控制*/ if(texty=2) texty=79; texty-; gotoxy(texty,textx); break; case Backspace: /*擦除鍵的設(shè)置*/ if(texty=2&&textx=3) continue; else if(texty!=2) texty-; /*擦除鍵的細節(jié)問題,先擦去東西,然后光標還要往后退一格*/ else if(texty=2) texty=78; textx-; gotoxy(texty,textx); printf(" "); gotoxy(texty,textx); break

17、;/*end case 0xe08*/ case RIGHT: /*右光標鍵的操作控制*/ if(texty=79) texty=2; texty+; gotoxy(texty,textx); break; case SPACE: /*空格鍵的操作*/ if(texty=79) continue; else gotoxy(texty,textx); /*空格的細節(jié)操作*/ printf(" "); texty+; gotoxy(texty,textx); break; case ENTER: /*回車的控制操作*/ if(textx=23) continue; textx+

18、; texty=2; gotoxy(texty,textx); break; default : /*非控制鍵的結(jié)果*/ if(texty=79&&textx=23)/*到達最后就不再輸出*/ continue; else if(texty=79&&textx!=23) /*到行的最后*/ textx+; texty=2; gotoxy(texty,textx);/*輸出結(jié)果*/ printf("%c",key); if(texty=79) /*如果texty=79就不執(zhí)行*/ continue; else /*如果沒到行尾就繼續(xù)執(zhí)行,使光標

19、向前移動一位*/ texty+; /*大循環(huán)的大括號*/*畫邊框函數(shù)*/void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor) textbackground(bcolor); /*背景顏色*/ textcolor(bcolor); /*文本顏色*/ for(i=l;i<=r;i+) /*輸出背景區(qū)域*/ for(j=u;j<=d;j+) gotoxy(i,j); printf("%c",219); /*輸出背景字符*/ textcolor(tcolor);/*邊框顏色*/ for(i=u+1;i

20、<d;i+) /*在背景區(qū)域輸出邊框線*/ gotoxy(l,i); cprintf("%c",179); /*垂直線*/ gotoxy(r,i); cprintf("%c",179); for(i=l+1;i<r;i+) gotoxy(i,u); cprintf("%c",196); /*水平線*/ gotoxy(i,d); cprintf("%c",196); gotoxy(l,u); cprintf("%c",218);/*左上角*/ gotoxy(r,u); cprintf(

21、"%c",191);/*右上角*/ gotoxy(l,d); cprintf("%c",192);/*左下角*/ gotoxy(r,d); cprintf("%c",217); /*右下角*/* gettext(l+1,u+1,r-1,d-1,save1);*/*保存邊框區(qū)域*/*顯示具體下拉選擇項目*/void DrawMl(int n) gettext(1,1,80,25,save);/*保存被掩蓋的地方*/ BlackText(n,1,);/*反選顯示主菜單*/ DrawFrame(3+20*n-1,2,3+20

22、*n+19,3+mln.n,0,7);/*下拉菜單的邊框*/ for(i=3;i<3+mln.n;i+)/*輸出所選菜單各選項*/ if(i=3) BlackText(n,i,mln.stri-3);/*默認選中第一項*/ else RedText(n,i,mln.stri-3);/*其余各項首字符紅色顯示*/ gotoxy(79,1); MoveMl(n,3);/*菜單選項的控制*/*菜單選項的控制,n決定水平項,x決定下拉的選項*/void MoveMl(int n,int x) int flag=1; while(flag) gotoxy(79,1); key=bioskey(0)

23、;/*接收按鍵*/ gotoxy(79,1); switch(key) case ESC:/*退出循環(huán)*/ puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子*/ flag=0; break; case LEFT:/*移到左邊的選項*/ puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子*/ if(n=0)/*往左移動越界的話移到最后一個選項*/ DrawMl(2); else DrawMl(n-1); flag=0; break; case RIGHT:/*移動右邊的選項*/ puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子

24、*/ if(n=2)/*往右移動越界的話移到第一個選項*/ DrawMl(0); else DrawMl(n+1); flag=0; break; case UP:/*具體選項往上移動*/ RedText(n,x,mln.strx-3);/*輸出紅色字體*/ if(x=3)/*移到最上面再按上鍵,就移到最下面*/ x=3+mln.n-1; else x-;/*移動到新的要顯示的容*/ BlackText(n,x,mln.strx-3);/*輸出黑色字體*/ flag=1; break; case DOWN:/*具體選項往下移動*/ RedText(n,x,mln.strx-3); if(x=(

25、3+mln.n-1)/*移動到最底下再按下鍵就移到最上面*/ x=3; else x+;/*移動到新的要顯示的容*/ BlackText(n,x,mln.strx-3); flag=1; break; case ENTER: puttext(1,1,80,25,save);/*恢復(fù)打開菜單前的樣子*/ Enter(n,x-3);/*菜單選項的具體功能*/ flag=0; break; gotoxy(79,1); /*菜單選項的具體功能*/void Enter(int m,int n) switch(m) case 0:switch(n) /*選擇了圖書菜單選項*/ case 0:BookAdd

26、();break;/*添加圖書*/ case 1:BookConsult();break;/*圖書查詢*/ case 2:BookDel();break;/*刪除一本圖書資料*/ case 3:BookBorrow();break;/*借書*/ case 4:BookReturn();break;/*還書*/ case 5:exit(0);break; break;/*退出系統(tǒng)*/ case 1: switch(n) /*選擇了會員菜單選項*/ case 0: MemberAdd();break;/*添加會員*/ case 1: MemberConsult();break;/*會員查詢*/ c

27、ase 2:MemberDel();break;/*刪除一個會員資料*/ case 3:MemberBook();/*查詢某個會員所借圖書情況*/ break; case 2:switch(n) /*選擇了幫助菜單選項*/ case 0:Help();break; case 1:Ver(); /*結(jié)束外switch*/void BookAdd() FILE *fp; Book consultbook; fp=fopen("book.txt","rb");/*讀方式打開文件*/ if(fp=NULL) fp=fopen("book.txt&quo

28、t;,"wb"); /*寫方式打開文件*/ else/*如果有書就添加*/ fclose(fp); fp=fopen("book.txt","ab");/*追加方式打開文件*/ ClrScr();/*清屏*/ printf("Please intput a new book num: ");/*逐個輸入新圖書的資料*/ gets(consultbook.num); gotoxy(2,4); printf("Please input the new book name: "); gets(cons

29、); gotoxy(2,5); printf("Please input the new book's price: "); scanf("%d%*c",&consultbook.price); strcpy(consultbook.person,""); consultbook.yes=1;/*表示書存在未借出*/ consultbook.next=NULL; fwrite(&consultbook,sizeof(Book),1,fp);/*塊寫*/ fclose(fp); /*關(guān)閉文

30、件*/ ClrScr();/*圖書查詢*/void BookConsult() FILE *fp; Book consultbook; char bookname20; /*書名*/ int flag=0,i=0; ClrScr(); gotoxy(2,3); printf("Please input the book name: "); gets(bookname); /*輸入要查詢的圖書名*/ fp=fopen("book.txt","rb"); if(fp=NULL)/*沒找到文件*/ ClrScr(); gotoxy(2,3)

31、; printf("Error!"); fclose(fp); return; else while(!feof(fp)/*查詢圖書資料*/ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(,bookname)=0)/*如果查找到*/ ClrScr(); gotoxy(2,3+i*5); printf("This book %s information as follow:",); gotoxy(2,4+i*5); printf(&q

32、uot;This book num is %s.",consultbook.num); gotoxy(2,5+i*5); printf("This book's price is %d.",consultbook.price); gotoxy(2,6+i*5); printf("This book is browwed by %s.",consultbook.person); gotoxy(2,7+i*5); printf("This book's state is %d.",consultbook.yes)

33、; i+; flag=1; /*查找數(shù)據(jù)標志*/ if(flag=0) ClrScr(); gotoxy(2,3); printf("Sorry, %s doesn't exist in the library!",bookname); fclose(fp);/*刪除圖書資料*/void BookDel() FILE *fp; Book *head,*p,*q; char bookname20; fp=fopen("book.txt","rb");/*讀方式打開文件*/ if(fp=NULL)/*沒找到文件*/ gotoxy(

34、2,3); printf("Error!"); fclose(fp); return; head=p=q=(Book*)malloc(sizeof(Book);/*將文件容放入鏈表*/ fread(p,sizeof(Book),1,fp); /*讀第一條記錄*/ while(!feof(fp) q=p; p=(Book*)malloc(sizeof(Book); fread(p,sizeof(Book),1,fp); /*讀記錄*/ q->next=p;/*新記錄插入到鏈表的尾*/ p->next=NULL;/*最后一個結(jié)點的后繼為空*/ fclose(fp);

35、 ClrScr(); printf("Input the book name: "); gets(bookname); /*輸入圖書名*/ p=head; while(p!=NULL)/*按名字查找要刪除的圖書*/ if(strcmp(p->name,bookname)=0)/*找到要刪除的圖書*/ if(p=head) /*如果是第一個結(jié)點*/ head=head->next; else q->next=p->next;/*不是第一個結(jié)點*/ break; q=p; /*指針后移*/ p=p->next; fp=fopen("boo

36、k.txt","wb");/*刪除后從鏈表的頭開始重新保存*/ while(head!=NULL) fwrite(head,sizeof(Book),1,fp);/*塊寫*/ head=head->next; fclose(fp); ClrScr(); /*借書*/void BookBorrow() FILE *fp; Book consultbook; Member consultmember; char bookname20,membername20; int flag=0,mflag=0; ClrScr(); gotoxy(2,3); printf(&

37、quot;Please input the mermber name: "); gets(membername); /*輸入會員名*/ if(fp=fopen("member.txt","rb")=NULL)/*沒找到文件*/ gotoxy(2,3); printf("Cannot open file!n"); return; else while(!feof(fp)/*查詢會員資料*/ fread(&consultmember,sizeof(Member),1,fp); if(strcmp(consultmembe

38、,membername)=0) mflag=1; /*是會員標志*/ break; fclose(fp); if(mflag=0) gotoxy(2,4); printf("You are not a member now,pleas register first!");/*不是會員不能借書*/ return; gotoxy(3,5); printf("Please input the book name: "); gets(bookname); /*輸入圖書名*/ ClrScr(); if(fp=fopen("book.txt&q

39、uot;,"rb+")=NULL)/*沒找到文件*/ gotoxy(2,3); printf("Cannot open file!n"); return; while(!feof(fp)/*查詢圖書資料*/ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(,bookname)=0) if(consultbook.yes=0)/*圖書已經(jīng)借出的判斷*/ gotoxy(2,3); printf("This book has borrowed!n");

40、 break; else consultbook.yes=0; /*作借出標志*/ strcpy(consultbook.person,membername);/*登記借書會員*/ fseek(fp,-1L*sizeof(Book),1);/*從當前位置前移一條記錄指針*/ fwrite(&consultbook,sizeof(Book),1,fp);/*寫記錄*/ gotoxy(2,3); printf("Borrowed success!n"); flag=1;/*借出書標志*/ break; if(flag!=1) ClrScr(); gotoxy(2,3);

41、 printf("Borrowed fail!n");/*借書失敗*/ fclose(fp);/*還書*/void BookReturn() FILE *fp; Book consultbook; char bookname20; int flag=0; ClrScr(); if(fp=fopen("book.txt","rb+")=NULL)/*沒找到文件*/ gotoxy(2,3); printf("Can't open file!n"); return; printf("Please inp

42、ut the book name: "); gets(bookname); /*輸入圖書名*/ ClrScr(); while(!feof(fp)/*查詢圖書資料*/ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(,bookname)=0) if(consultbook.yes=0)/*圖書已經(jīng)借出的判斷*/ consultbook.yes=1;/*作圖書未借書標志,表示已還書*/ strcpy(consultbook.person,""); fseek(fp,-1L*si

43、zeof(Book),1); fwrite(&consultbook,sizeof(Book),1,fp); gotoxy(2,3); printf("Return book success!n"); flag=1; break; if(flag!=1) printf("Return fail!n"); fclose(fp);/*清除屏幕*/void ClrScr() int i,j; puttext(2,3,78,23,c);/*剛開始已經(jīng)用gettext把藍色的一塊地方保存下來,現(xiàn)在再還原*/ gotoxy(2,3);/*會員注冊*/void

44、 MemberAdd() FILE *fp; Member consultmember; fp=fopen("member.txt","rb"); if(fp=NULL)/*如果沒會員就新建*/ fp=fopen("member.txt","wb"); else/*如果有會員就添加*/ fclose(fp); fp=fopen("member.txt","ab");/*追加方式打開*/ ClrScr(); gotoxy(2,3); printf("Please in

45、tput new member's name: ");/*逐個輸入會員的資料*/ gets(); gotoxy(2,4); printf("Please input new member's sex: "); gets(consultmember.sex); gotoxy(2,5); printf("Please input new member's age: "); scanf("%d%*c",&consultmember.age); fwrite(&am

46、p;consultmember,sizeof(Member),1,fp);/*寫入記錄*/ fclose(fp); ClrScr();/*查詢會員*/void MemberConsult() FILE *fp; Member consultmember; char membername20; int flag=0; ClrScr(); gotoxy(2,3); printf("Please input the member's name: ");/*輸入要查詢的會員名*/ gets(membername); fp=fopen("member.txt","rb&quo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論