圖書信息管理系統(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度恒溫恒濕儲(chǔ)藏室建設(shè)與維護(hù)合同3篇
- 2025年度影視制作車輛借用及拍攝服務(wù)合同2篇
- 領(lǐng)導(dǎo)干部談心談話記錄
- 2024年質(zhì)押借款補(bǔ)充合同模板
- 2024收銀員崗位技能提升及入職培訓(xùn)合同3篇
- 不銹鋼建筑安裝工程承攬協(xié)議版B版
- 2024年軟件開發(fā)購(gòu)買合同
- 2024智能家居弱電裝修系統(tǒng)合同
- 2024年度特制版權(quán)轉(zhuǎn)讓協(xié)議(專業(yè)版)
- 專業(yè)化集裝箱物流配送服務(wù)協(xié)議2024版B版
- 高速公路收費(fèi)站員工年度考評(píng)辦法
- 【課件】跨學(xué)科實(shí)踐:探索廚房中的物態(tài)變化問(wèn)題-人教版八年級(jí)上冊(cè)物理
- 房地產(chǎn)企業(yè)崗位招聘筆試題題庫(kù)之四(含答案)營(yíng)銷副總經(jīng)理
- 名著導(dǎo)讀《儒林外史》閱讀周計(jì)劃 統(tǒng)編版語(yǔ)文九年級(jí)下冊(cè)
- 某集團(tuán)下屬子公司年度經(jīng)營(yíng)績(jī)效管理辦法全套
- 2024年天津市中考?xì)v史試卷真題(含答案逐題解析)
- DL∕T 681.1-2019 燃煤電廠磨煤機(jī)耐磨件技術(shù)條件 第1部分:球磨機(jī)磨球和襯板(代替DLT 681-2012)
- AQ/T 1121-2023 煤礦安全現(xiàn)狀評(píng)價(jià)實(shí)施細(xì)則(正式版)
- 四川省成都市青白江區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期末數(shù)學(xué)試題(含答案詳解)
- 骨科中醫(yī)護(hù)理方案培訓(xùn)計(jì)劃(2篇)
- 2024年美國(guó)X射線熒光光譜儀(XRF)市場(chǎng)現(xiàn)狀及上下游分析報(bào)告
評(píng)論
0/150
提交評(píng)論