圖書信息管理系統(tǒng)c語(yǔ)言_第1頁(yè)
圖書信息管理系統(tǒng)c語(yǔ)言_第2頁(yè)
圖書信息管理系統(tǒng)c語(yǔ)言_第3頁(yè)
圖書信息管理系統(tǒng)c語(yǔ)言_第4頁(yè)
圖書信息管理系統(tǒng)c語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

圖書信息管理系統(tǒng)c語(yǔ)言.doc 免費(fèi)下載

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

文檔簡(jiǎn)介

1、. . . . 航空航天大學(xué)理學(xué)院C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告題目: 圖書信息管理系統(tǒng) 專 業(yè): 信息與計(jì)算科學(xué) 班 級(jí):學(xué) 號(hào): 學(xué)生:指導(dǎo)教師:2010年 7月 9日19 / 23課程設(shè)計(jì)成績(jī)?cè)u(píng)定表姓 名學(xué) 號(hào)評(píng)語(yǔ)成績(jī)平時(shí)成績(jī)階段考核課程設(shè)計(jì)報(bào)告總成績(jī)指導(dǎo)教師(簽字)教研室主任(簽字)目 錄一、題目簡(jiǎn)介1二、概要設(shè)計(jì)21、無(wú)文件時(shí)的輸入:22、有原文件時(shí)的輸入:23、刪除:24、修改:25、瀏覽:26、查詢:27、儲(chǔ)存28、讀?。?三、詳細(xì)設(shè)計(jì)41、無(wú)文件時(shí)的輸入:42、有原文件時(shí)的輸入43、刪除:54、修改:55、瀏覽:66、查詢:77、儲(chǔ)存:78、讀?。?五、解決方案91、讀取時(shí)頭指針的

2、指向問(wèn)題:92、菜單無(wú)法返回:93、自動(dòng)存儲(chǔ):9參考文獻(xiàn)11一、 題目簡(jiǎn)介1、系統(tǒng)以菜單方式工作2、圖書信息錄入功能(圖書信息用文件保存)-輸入3、圖書信息瀏覽功能-輸出4、圖書信息查詢功能算法,查詢方式:按書名、按作者名等查詢5、圖書信息的刪除與修改不知道圖書的總數(shù)和可能的總數(shù),于是使用了鏈表。題目要求基本可分為三類:對(duì)鏈表的修改、鏈表的輸出和鏈表的存取。菜單化操作與圖書信息文件形式保存都不算太困難,真正的關(guān)鍵還是在鏈表的使用。輸入和輸出功能,乃至儲(chǔ)存和讀取都是對(duì)整條鏈表的全部操作。而查詢,刪除,修改則需要先找到目標(biāo)節(jié)點(diǎn),然后只對(duì)目標(biāo)節(jié)點(diǎn)進(jìn)行操作,其中,刪除、查詢與修改又有所不同,考慮到可能

3、的重號(hào)情況(查詢里不同書同一作者的情況更加常見),進(jìn)行刪除、查詢時(shí)就不能單單只找到一個(gè)符合條件的節(jié)點(diǎn),而必須將整條鏈表中所有符合條件的節(jié)點(diǎn)全部篩選出來(lái),但是修改若將全部符合條件的全部帥選并替換,則一口氣將出現(xiàn)大量重復(fù)信息,而且很難處理,于是使用修改時(shí),每次進(jìn)行修改重號(hào)信息只取第一條進(jìn)行修改。二、概要設(shè)計(jì)1、無(wú)文件時(shí)的輸入:包含了有原文件但原文件為空時(shí)的情況,重點(diǎn)是將頭指針清空以便使數(shù)據(jù)正確輸入即可。2、有原文件時(shí)的輸入:包含了無(wú)原文件但已經(jīng)輸入數(shù)據(jù)的情況,直接在原有鏈表后繼續(xù)添加數(shù)據(jù)。3、刪除:運(yùn)用搜索找到指定的節(jié)點(diǎn),然后將下一節(jié)點(diǎn)直接連接到上一節(jié)點(diǎn),以起到刪除該節(jié)點(diǎn)的功能。4、修改:運(yùn)用搜索

4、找到指定的節(jié)點(diǎn),直接將該鏈表節(jié)點(diǎn)重新賦值。5、瀏覽:將全體鏈表全部輸出。6、查詢:按指定條件運(yùn)用搜索找到指定的鏈表,只輸出該節(jié)點(diǎn)的數(shù)據(jù)。7、儲(chǔ)存:將鏈表的信息以文件形式保存。8、讀?。簩㈡湵硇畔奈募凶x取出來(lái)。圖書信息管理系統(tǒng)對(duì)鏈表的修改輸出存取有原文件時(shí)的輸入無(wú)文件時(shí)的輸入瀏覽查詢儲(chǔ)存讀取對(duì)鏈表進(jìn)行了刪除對(duì)鏈表進(jìn)行了修改 系統(tǒng)模塊圖三、詳細(xì)設(shè)計(jì)1、無(wú)文件時(shí)的輸入:選項(xiàng)用的整形,修改數(shù)據(jù)用的結(jié)構(gòu)體。head=NULL;p1=head;輸入p1;p1=p1->next;直到 輸入的學(xué)號(hào)=02、有原文件時(shí)的輸入:選項(xiàng)用的整形,修改數(shù)據(jù)用的結(jié)構(gòu)體p1=head;輸入p1;p1=p1->

5、next;直到 輸入的學(xué)號(hào)=03、刪除:選項(xiàng)用的整形,修改數(shù)據(jù)用的結(jié)構(gòu)體p1=head;學(xué)號(hào)=輸入的學(xué)號(hào)ynp1=p1->next;學(xué)號(hào)=輸入的學(xué)號(hào)刪除p1;4、修改:p1=head;學(xué)號(hào)=輸入的學(xué)號(hào)ynp1=p1->next;學(xué)號(hào)=輸入的學(xué)號(hào)修改p1;5、瀏覽:選項(xiàng)用的整形,瀏覽數(shù)據(jù)用的結(jié)構(gòu)體p1=head;輸出p1;p1=p1->next;直到p1=NULL;6、查詢:選項(xiàng)用的整形,瀏覽數(shù)據(jù)用的結(jié)構(gòu)體p1=head;學(xué)號(hào)=輸入的學(xué)號(hào)ynp1=p1->next;學(xué)號(hào)=輸入的學(xué)號(hào)瀏覽p1;7、儲(chǔ)存:選項(xiàng)用的整形,修改數(shù)據(jù)用的結(jié)構(gòu)體,存儲(chǔ)時(shí)使用的文件類型。p1=head;

6、儲(chǔ)存p1;p1=p1->next;直到 要儲(chǔ)存的學(xué)號(hào)=08、讀?。哼x項(xiàng)用的整形,修改數(shù)據(jù)用的結(jié)構(gòu)體,存儲(chǔ)時(shí)使用的文件類型。p1=head;讀取p1;p1=p1->next;直到 讀取的學(xué)號(hào)=0五、解決方案1、讀取時(shí)頭指針的指向問(wèn)題: 修改前 頭指針總是無(wú)確指向正確數(shù)據(jù),導(dǎo)致頭指針指向全部都是亂碼,后來(lái)將頭指針的讀取單獨(dú)做一個(gè)函數(shù)出現(xiàn),雖然是程序更為拖沓,但總算是使程序正常運(yùn)行。 修改后2、菜單無(wú)法返回:無(wú)論進(jìn)行任何行為之后,按照程序的流程,程序都會(huì)自動(dòng)退出,而不是返回菜單,允許用戶經(jīng)行其他操作(如刪除一條數(shù)據(jù)后,無(wú)法觀察是否刪除成功),給用戶的使用造成不便。后將主菜單函數(shù)從單線程改

7、為dowhile循環(huán),若用戶沒(méi)有選擇退出選項(xiàng),則程序一直運(yùn)行。3、自動(dòng)存儲(chǔ):最開始函數(shù)是每次執(zhí)行一次對(duì)鏈表的修改都會(huì)自動(dòng)儲(chǔ)存,如果用戶進(jìn)行了誤操作(如誤刪),則沒(méi)有挽救的機(jī)會(huì),后加入了一個(gè)全局變量,每次對(duì)數(shù)據(jù)稱有進(jìn)行改動(dòng)操作時(shí),即會(huì)改動(dòng)該全局變量,當(dāng)用戶退出時(shí),會(huì)根據(jù)該全局變量是否發(fā)生改變而判斷是否需要用戶存盤,而用戶也可選擇是否存盤,以減少誤操作的可能。 修改后參考文獻(xiàn)1、 潭浩強(qiáng)著.C程序(第二版)。:清華大學(xué),19992、 潭浩強(qiáng)編著。C+程序設(shè)計(jì)。:清華大學(xué),20043、 潭浩強(qiáng),基溫,唐永炎編著。C語(yǔ)言程序設(shè)計(jì)。:高等教育,19924、 潭浩強(qiáng)編著。C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版)

8、。:清華大學(xué)19995、 潭浩強(qiáng)編著。QBASIC語(yǔ)言教程。:電子工業(yè),19976、 潭浩強(qiáng),田淑清編著。PASCAL語(yǔ)言程序設(shè)計(jì)(第二版)。:高等教育,1998附錄(源程序清單)#include <stdio.h>#include <malloc.h>#include <string.h>#define LEN sizeof(struct book)struct book char dengluming20; char shuming30; char zuozheming20; char fenleihao20; char chubandanwei50;

9、char chubanshijian20; int jiage; struct book *next;struct book *head,*dlm;char del_dlm20;int saveflag=0;int xx=0;struct book *creat(struct book *head) struct book *p1,*p2; head=NULL; p1=p2=head=(struct book *)malloc(LEN); printf("nDengluhao:"); scanf("%s",p1->dengluming); prin

10、tf("nShuming:"); scanf("%s",p1->shuming); printf("nZuozheming:"); scanf("%s",p1->zuozheming); printf("nFenleihao:"); scanf("%s",p1->fenleihao); printf("nChubandanwei:"); scanf("%s",p1->chubandanwei); printf(&

11、quot;nChubanshijian:"); scanf("%s",p1->chubanshijian); printf("nJiage:"); scanf("%d",&p1->jiage); saveflag=1; while(strcmp(p1->dengluming,"0")!=0) p2->next=p1; p2=p1; p1=(struct book *)malloc(LEN); printf("nDengluhao"); pf0(); sc

12、anf("%s",p1->dengluming); if(strcmp(p1->dengluming,"0")=0) break; printf("nShuming:"); scanf("%s",p1->shuming); printf("nZuozheming:"); scanf("%s",p1->zuozheming); printf("nFenleihao:"); scanf("%s",p1->fen

13、leihao); printf("nChubandanwei:"); scanf("%s",p1->chubandanwei); printf("nChubanshijian:"); scanf("%s",p1->chubanshijian); printf("nJiage:"); scanf("%d",&p1->jiage); getch(); p2->next=NULL; xx=0; getch(); return(head);void s

14、ave(struct book *head) FILE *fp; struct book *p; int count=0;if(fopen("f:books","r")=NULL) xx=1; fp=fopen("f:books","wb"); if(fp=NULL) printf("nOpen file error!n"); getchar(); return; p=head; while(p) if(fwrite(p,LEN,1,fp)=1) p=p->next; count+; el

15、se break; if(count>0) getchar(); printf("nSave file complete,totai saved's record number is:%dn",count); saveflag=0; fclose(fp);pri() printf("nDengluhao Shuming Zuozhehao Fenleihao Chubandanwei Chubanshijian Jiagen");pf0() printf("(or input 0 to back):");void pri

16、nt(struct book *head) struct book * p; p=head; pri(); if(head!=NULL) do pr(p); p=p->next; while(p!=NULL); getch();pr(struct book *p) printf("%s %s %s %s %s %s %dn",p->dengluming,p->shuming,p->zuozheming,p->fenleihao,p->chubandanwei,p->chubanshijian,p->jiage);struct

17、book *del(struct book *head,char dengluming20) struct book *p1,*p2; int t=0; if(head=NULL) printf("nwu xinxi!n");return head; for(p2=p1=head;p1->dengluming!=NULL;p1=p1->next) if(strcmp(dengluming,p1->dengluming)=0) if(p1=head) head=p1->next; else p1=p1->next;p2->next=p1;p

18、1=p2; t=1; saveflag=1; p2=p1; if(t=1) printf("Delete %s success!n",dengluming); else printf("meiyou %s!n",dengluming); return(head);struct book *qrdlm(struct book *head,char dengluming20) struct book *p1; if(head=NULL) printf("nwu xinxi!n");return head; p1=head; while(s

19、trcmp(dengluming,p1->dengluming)!=0&&p1->next!=NULL) p1=p1->next; if(strcmp(dengluming,p1->dengluming)=0) pri(); else printf("meiyou %s!n",dengluming); for(p1=head;p1->dengluming!=NULL;p1=p1->next) if(strcmp(dengluming,p1->dengluming)=0) pr(p1); return(head);st

20、ruct book *qrsm(struct book *head,char shuming20) struct book *p1; if(head=NULL) printf("nwu xinxi!n");return head; p1=head; while(strcmp(shuming,p1->shuming)!=0&&p1->next!=NULL) p1=p1->next; if(strcmp(shuming,p1->shuming)=0) pri(); else printf("meiyou %s!n",s

21、huming); for(p1=head;p1->dengluming!=NULL;p1=p1->next) if(strcmp(shuming,p1->shuming)=0) pr(p1); return(head);struct book *qrzz(struct book *head,char zuozheming20) struct book *p1; if(head=NULL) printf("nwu xinxi!n");return head; p1=head; while(strcmp(zuozheming,p1->zuozheming

22、)!=0&&p1->next!=NULL) p1=p1->next; if(strcmp(zuozheming,p1->zuozheming)=0) pri(); else printf("meiyou %s!n",zuozheming); for(p1=head;p1->dengluming!=NULL;p1=p1->next) if(strcmp(zuozheming,p1->zuozheming)=0) pr(p1); return(head);qur(struct book *head) char denglumi

23、ng20,shuming30,zuozheming20; int m; do printf("1.By dengluhaon2.By shumingn3.By zuozhemingn0.back"); scanf("%d",&m); while(m<0|m>3); switch(m) case 1:printf("nPlease input the dengluming:"); scanf("%s",dengluming); head=qrdlm(head,dengluming);break;

24、case 2:printf("nPlease input the shuming:"); scanf("%s",shuming); head=qrsm(head,shuming);break; case 3:printf("nPlease input the zuozheming:"); scanf("%s",zuozheming); head=qrzz(head,zuozheming); getch();struct book *modify(struct book *head,char dengluming20

25、) struct book *p1; if(head=NULL) printf("nwu xinxi!n");return head; p1=head; while(strcmp(dengluming,p1->dengluming)!=0&&p1->next!=NULL) p1=p1->next; if(strcmp(dengluming,p1->dengluming)=0) printf("nDengluhao"); scanf("%s",p1->dengluming); printf(

26、"nShuming:"); scanf("%s",p1->shuming); printf("nZuozheming:"); scanf("%s",p1->zuozheming); printf("nFenleihao:"); scanf("%s",p1->fenleihao); printf("nChubandanwei:"); scanf("%s",p1->chubandanwei); printf(&quo

27、t;nChubanshijian:"); scanf("%s",p1->chubanshijian); printf("nJiage:"); scanf("%d",&p1->jiage); saveflag=1; else printf("meiyou %s!n",dengluming); getch(); return(head);void modi() char dengluming20; print(head); printf("Please input the den

28、gluming"); scanf("%s",dengluming); head=modify(head,dengluming);struct book * insert(struct book *head,struct book *dlm)struct book *p0,*p1; p1=head; p0=dlm; if(head=NULL) head=p0;p0->next=NULL; else while(p1->next!=NULL) p1=p1->next; p1->next=p0;p0->next=NULL; saveflag

29、=1; return(head);load() int m,n; struct book *p1,*p2; int count=0; FILE *fp; system("cls"); head=(struct book *)malloc(LEN); head->next=NULL; fp=fopen("f:books","ab+"); if(fp=NULL) printf("nCant't open filen"); exit(0); if(fread(head,LEN,1,fp)=1) p2=hea

30、d; p1=head->next; count+; else xx=1; while(!feof(fp) p1=(struct book *)malloc(LEN); if(!p1) printf("Memory malloc failure!n"); exit(0); if(fread(p1,LEN,1,fp)=1) p1->next=NULL; p2->next=p1; p2=p1; count+; fclose(fp); printf("nOpen file sucess,the total records number is:%dn&qu

31、ot;,count); getch();manu() int m,n; do do system("cls"); printf("Tushu xinxin1.Shurun2.Liulann3.Chaxunn4.Shanchun5.Xiugain0.tuichun"); scanf("%d",&m); while(!(m>=0&&m<=5); switch(m) case 1:if(xx!=1) inserts(); else head=creat(head);break; case 2:print(

32、head);break; case 3:qur(head);break; case 4:dels();break; case 5:modi();break; case 0:if(saveflag=1) printf("Do you want to save thhe mofified recourd to file?n1.Yesn2.NOn"); scanf("%d",&n); if(n=1) save(head); system("cls"); printf("nnnnnnnnnnnnnnn Thank you f

33、or useness!"); printf("nn May the Light with you!"); getch(); break; while(m!=0);dels() print(head); printf("ninput the deleted dengluhao:"); pf0(); scanf("%s",&del_dlm); while(strcmp(del_dlm,"0")!=0) head=del(head,del_dlm); print(head); printf("input the deleted dengluhao:"); pf0(); scanf("%s",&del_dlm); getch();inserts() dlm=(struct book *)malloc(LEN); printf("nDengluhao"); pf0(); scanf("%s",dlm->dengluming); printf("nShuming:"); scanf("%s",dlm->shuming);

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論