圖書信息管理系統(tǒng)設(shè)計(jì)_第1頁
圖書信息管理系統(tǒng)設(shè)計(jì)_第2頁
圖書信息管理系統(tǒng)設(shè)計(jì)_第3頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、WORD格式東南大學(xué)C 語言課程設(shè)計(jì)報(bào)告課程名稱:計(jì)算機(jī)綜合課程設(shè)計(jì)學(xué)院:土木工程學(xué)院設(shè)計(jì)題目:圖書信息管理系統(tǒng)設(shè)計(jì)級(jí)別:A級(jí)學(xué)生*:學(xué)號(hào):同組學(xué)生:學(xué)號(hào):指導(dǎo)教師:2021年09 月05日專業(yè)資料整理WORD格式- 1 -專業(yè)資料整理WORD格式課程報(bào)告任務(wù)書題目圖書信息管理系統(tǒng)圖書信息包括:登錄號(hào),書名,作者名,分類號(hào),出版單位,出版時(shí)間,價(jià)格等。試 設(shè)計(jì)一圖書信息管理系統(tǒng),使之提供以下功能:1) 系統(tǒng)以菜單方式工作;主 2)圖書信 息錄 入 功能圖書信息用文本文件形式保存 ;要3)圖書信息瀏覽功能;內(nèi)查詢和排序功能:4)容按書名查找;按作者名查找;5) 圖書信息刪除功能;6) 圖書信息修

2、改功能。采用模塊化程序設(shè)計(jì);鼓勵(lì)可視化編程;源程序中應(yīng)有足夠的注釋;任學(xué)生可自行增加新功能模塊視情況可另外加分;務(wù)必須上機(jī)調(diào)試通過;要求注重算法運(yùn)用,優(yōu)化存儲(chǔ)效率與運(yùn)算效率;需提交源程序 ( 含有注釋 ) 及相關(guān)文件 ( 數(shù)據(jù)或數(shù)據(jù)庫文件 ) ;(cpp 文件、 txt或 dat 文件等 )提交設(shè)計(jì)報(bào)告書成績評(píng)定評(píng)定教師專業(yè)資料整理WORD格式- 2 -專業(yè)資料整理WORD格式摘要:隨著當(dāng)今社會(huì)開展, 信息化水平逐步提高, 對(duì)圖書管理有了新的要求, 因此,編寫一個(gè)信息管理系統(tǒng)是十分必要的。為了滿足圖書管理的要求, 通過計(jì)算機(jī)技術(shù)給圖書管理人員帶來便利。 使用C語言編寫圖書管理系統(tǒng),其中主要運(yùn)用

3、了構(gòu)造化設(shè)計(jì)與鏈表構(gòu)造。本系統(tǒng)主要實(shí)現(xiàn)圖書信息管理的功能, 通過此系統(tǒng)可對(duì)圖書館庫存圖書信息進(jìn)展管理和維護(hù)操作。實(shí)現(xiàn)了圖書館內(nèi)管理的一般功能,包括圖書信息錄入、瀏覽、排序、刪除和修改等功能。 所設(shè)計(jì)的系統(tǒng)以菜單方式工作, 為用戶提供清晰的使用提示, 依據(jù)用戶的選擇來進(jìn)展各種處理。圖書信息包括登錄號(hào)、書名、作者名、分類號(hào)、出版單位、出版時(shí)間、價(jià)格等。圖書信息的錄入和顯示要求有一定的標(biāo)準(zhǔn)格式,錄入的圖書信息用文件形式保存, 并可以對(duì)其進(jìn)展瀏覽、 查詢、刪除和修改等根本操作。關(guān)鍵字:圖書信息管理C語言鏈表構(gòu)造目錄1. 設(shè)計(jì)的目的與要求 -42. 分析 -43. 總體設(shè)計(jì) -54. 主要功能算法 -5

4、5. 完整程序及注釋 -86. 調(diào)試分析 -247. 總結(jié) -288. 辯論記錄 -299. 教師意見 -29專業(yè)資料整理WORD格式- 3 -專業(yè)資料整理WORD格式1. 設(shè)計(jì)的目的與要求1.1 設(shè)計(jì)的目的使用鏈表和構(gòu)造等構(gòu)造數(shù)據(jù),編寫一 C 語言程序,實(shí)現(xiàn)圖書信息管理的功能, 通過此系統(tǒng)可對(duì)圖書館圖書信息進(jìn)展管理和維護(hù)等操作, 給圖書管理人員帶來便利。1.2 設(shè)計(jì)的要求圖書信息包括:登錄號(hào),書名,作者名,分類號(hào),出版單位,出版時(shí)間,價(jià)格等。試設(shè)計(jì)一圖書信息管理系統(tǒng),使之提供以下功能:( 1系統(tǒng)以菜單方式工作( 2 圖 書信 息錄 入功 能圖書信息用文本文件形式保存( 3圖書信息瀏覽功能(

5、4查詢和排序功能:按書名查找按作者名查找( 5圖書信息刪除功能( 6圖書信息修改功能2.分析根據(jù)題目要求,應(yīng)當(dāng)把圖書信息用構(gòu)造體形式輸入,再定義一個(gè)全局變量和文件指針進(jìn)展整個(gè)程序的運(yùn)行,然后把圖書信息送到文件中,所以應(yīng)該提供一個(gè)構(gòu)造體和文件的輸入輸出等操作;在程序中需實(shí)現(xiàn)圖書信息錄入,瀏覽,查詢,排序,刪除和修改等功能的操作,所以需要建立相應(yīng)的函數(shù)模塊來實(shí)現(xiàn);另外還需提供鍵盤式選擇菜單實(shí)現(xiàn)功能,在運(yùn)行時(shí)到達(dá)所要目的。專業(yè)資料整理WORD格式- 4 -專業(yè)資料整理WORD格式3.總體設(shè)計(jì)根據(jù)題目要求,我們經(jīng)過分析和討論后,決定將此系統(tǒng)分為十個(gè)功能模塊:( 1 菜單項(xiàng)選擇擇模塊( 2圖書信息錄入功

6、能模塊( 3 圖書信息瀏覽功能模塊( 4 圖書信息查詢功能模塊( 5 圖書信息排序功能模塊( 6 圖書信息刪除功能模塊( 7 圖書信息修改功能模塊( 8 圖書數(shù)據(jù)保存功能模塊( 9 信息文件翻開功能模塊( 10退出系統(tǒng)功能模塊4. 主要功能的算法4.1錄入函數(shù)算法專業(yè)資料整理WORD格式- 5 -專業(yè)資料整理WORD格式4.2按書名查找算法按作者名與此類似4.3 刪除圖書信息算法修改與此類似專業(yè)資料整理WORD格式- 6 -專業(yè)資料整理WORD格式4.4 顯示函數(shù)算法5. 完整程序及注釋#include<iostream.h>/* 引用庫函數(shù) */#include <stdi

7、o.h># include <string.h># include <conio.h># include <stdlib.h># include <windows.h>typedef struct book_info/ 定義圖書信息的構(gòu)造體變量并聲明新的類型名char AN10;/*登錄號(hào) */char name20;/*書名 */char author20;/*作者名 */char clc10;/*分類名 */char company20;/*出版單位 */char date20;/*出版日期 */char price10;/*價(jià)格 */

8、struct book_info *next;專業(yè)資料整理WORD格式- 7 -專業(yè)資料整理WORD格式Booklist,*Pointer;int num=0;/全局變量的定義Pointer Head=NULL;/頭指針為空FILE *fp;/指向文件的指針/* 聲明函數(shù) */int menu_select();/*主菜單函數(shù) */void Insert(Pointer * Head);/*錄入函數(shù) */void Scan(Pointer Head);/*顯示函數(shù) */void Search_name(Pointer Head);/*按書名查找函數(shù) */void Search_author(P

9、ointer Head);/*按作者名查找函數(shù) */void Listbyname(Pointer *Head);/*按書名排序函數(shù) */void Delete(Pointer * Head);/刪除函數(shù)void Update(Pointer Head);/修改函數(shù)void Save();/用文本文件形式保存函數(shù)void Read();/讀入文本文件函數(shù)void Exit();/退出函數(shù)void main()/ 主函數(shù)system("cls");/*運(yùn)行前清屏 */for(;)switch(menu_select()case 1:Insert(& Head);bre

10、ak;case 2:Scan(Head);break;專業(yè)資料整理WORD格式- 8 -專業(yè)資料整理WORD格式case 3:Search_name(Head);break;case 4:Search_author(Head);break;case 5:Listbyname(&Head);break;case 6:Delete(&Head);break;case 7:Update(Head);break;case 8:Save();break;case 9:Read();break;case 0:Exit();default:putchar('a');menu_

11、select() / 主菜單函數(shù)int a;printf("nttt歡迎使用圖書信息管理系統(tǒng)nnnnntt *請按任意鍵進(jìn)入系統(tǒng)菜單 ! * n");getch();system("cls");printf("tt*MENU*n");/主菜單專業(yè)資料整理WORD格式- 9 -專業(yè)資料整理WORD格式printf("tt1.錄入圖書信息 n");printf("tt2.瀏覽圖書信息 n");printf("tt3.按書名查詢圖書信息 n");printf("tt4.按

12、作者名查詢圖書信息 n");printf("tt5.圖書信息排序 n");printf("tt6.刪除圖書信息 n");printf("tt7.修改圖書信息 n");printf("tt8.圖書數(shù)據(jù)保存 n");printf("tt9.圖書信息文件翻開 n");printf("tt0.退出 n");printf("tt*n");doprintf("nt請選擇您所需要的效勞:");scanf("%d",&am

13、p;a);while (a<0|a>9);return a;void Insert(Pointer * Head)/ 錄入圖書信息函數(shù)char AN10 ;char c;Pointer p,q,r;printf("ntt*請輸入圖書信息*n");/*交互輸入 */printf("ntt請輸入登錄號(hào) :");scanf("%s",AN);p=q= * Head;/檢測登錄號(hào)是否重復(fù)專業(yè)資料整理WORD格式-10-專業(yè)資料整理WORD格式while(p!=NULL)if(strcmp(p->AN,AN)=0)printf

14、 ("已經(jīng)有一樣的登錄號(hào): ");return;elseq=p;p=p->next;r=(Pointer)malloc(sizeof(Booklist);r->next=NULL;if(r=NULL)printf("分配空間失敗 !");return;if(q=NULL)* Head=r; else q->next=r;strcpy(r->AN,AN);printf("ntt輸入書名 :"); /錄入圖書信息scanf("%s",r->name);getchar();printf(&q

15、uot;ntt輸入作者名 :");scanf("%s",r->author);getchar();printf("ntt輸入分類號(hào) :");scanf("%s",r->clc) ;getchar();printf("ntt輸入出版單位 :");scanf("%s",r->company) ;getchar();printf("ntt輸入出版日期 :");專業(yè)資料整理WORD格式-11-專業(yè)資料整理WORD格式gets(r->date) ;pr

16、intf("ntt輸入價(jià)格 :");scanf("%s",r->price); doprintf("ntt錄入成功 !");num+;printf("選擇是否繼續(xù)錄入 (Y/N)" :");/*連續(xù)錄入圖書信息 */getchar();scanf("%c",&c);if(c='y'|c='Y')Insert(Head);elseif(c='n'|c='N')return;elseprintf("nt

17、t輸入錯(cuò)誤,請重新輸入!");while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Scan(Pointer Head)/ 顯示圖書信息函數(shù)Pointer p;p=Head;if(p=NULL)printf("記錄為空 ");/檢測是否有圖書信息else專業(yè)資料整理WORD格式-12-專業(yè)資料整理WORD格式printf("nt共有 %d條記錄 ",num);while(p!=NULL)printf(&

18、quot;nntt登錄號(hào): %-10s",p->AN);/顯示圖書信息printf("ntt書名:%-20s",p->name);printf("ntt作者名:%-20s",p->author);printf("ntt分類號(hào):%-10s",p->clc);printf("ntt出版單位: %-20s",p->company);printf("ntt出版時(shí)間: %-20s",p->date);printf("ntt價(jià)格:¥%-10s"

19、;,p->price);p=p->next;printf("ntt請按任意鍵回到主菜單");return;void Search_name(Pointer Head)/ 按書名查找函數(shù)int flag=0;/標(biāo)記變量的初值char name10;Pointer p;printf ("n請輸入需要查詢的書名:");scanf("%s",name);printf("ntt*以下是您查找的信息*");p=Head;while(p!=NULL)if(strcmp(p->name,name)=0)/查找符合

20、的圖書專業(yè)資料整理WORD格式-13-專業(yè)資料整理WORD格式printf("nt登錄號(hào):%-10s",p->AN);printf("nt書名:%-20s",p->name);printf("nt作者名:%-20s",p->author);printf("nt分類號(hào):%-10s",p->clc);printf("nt出版單位: %-20s",p->company);printf("nt出版時(shí)間: %-20s",p->date);printf

21、("nt價(jià)格:¥%-10s",p->price);flag=1;/找到標(biāo)記變量設(shè)為1p=p->next;/指針走到下一個(gè)節(jié)點(diǎn)elsep=p->next;if(flag=0)printf("ntt沒有一樣書名紀(jì)錄 ");printf("ntt請按任意鍵返回主菜單");getchar();void Search_author(Pointer Head)/按作者名查找函數(shù)int flag=0;char author10;Pointer p;printf ("n請輸入需要查詢的作者名:");scanf(&

22、quot;%s",author);printf("ntt*以下是您查找的信息*");p=Head;while(p!=NULL)/查找符合的圖書專業(yè)資料整理WORD格式-14-專業(yè)資料整理WORD格式if(strcmp(p->author,author)=0)/*找到圖書顯示信息 */printf("nt登錄號(hào):%-10s",p->AN);printf("nt書名:%-20s",p->name);printf("nt作者名:%-20s",p->author);printf("

23、;nt分類號(hào):%-10s",p->clc);printf("nt出版單位: %-20s",p->company);printf("nt出版時(shí)間: %-20s",p->date);printf("nt價(jià)格:¥%-10s",p->price);flag=1;p=p->next;elsep=p->next;if(flag=0)printf("ntt沒有一樣作者名紀(jì)錄 ");printf("ntt請按任意鍵返回主菜單");getch();void Listb

24、yname(Pointer *Head)/按書名排序函數(shù)Pointer p,q;int i,j;char t10;char c;if(Head=NULL)專業(yè)資料整理WORD格式-15-專業(yè)資料整理WORD格式printf("ntt沒有任何資料! n");return;if(num=0)/檢查是否存在數(shù)據(jù)可供排序printf("ntt圖書信息記錄為空!請按任意鍵返回主菜單。");getchar();return;p=q=*Head;for(i=0;i<num;i+)/排序for (j=i+1;j<num;j+)q=p;p=p->next

25、;/使指針指向下一個(gè)結(jié)點(diǎn)if(strcmp(q->name,p->name)>0)/檢查二者排序先后/p指針對(duì)應(yīng)數(shù)據(jù)應(yīng)排于 q 指針對(duì)應(yīng)數(shù)據(jù)后, p, q進(jìn)展數(shù)據(jù)交換strcpy(t,p->AN);strcpy(p->AN,q->AN);strcpy(q->AN,t);strcpy(t,p->author);strcpy(p->author,q->author);strcpy(q->author,t);strcpy(t,p->clc);strcpy(p->clc,q->clc);strcpy(q->clc

26、,t);專業(yè)資料整理WORD格式-16-專業(yè)資料整理WORD格式strcpy(t,p->company);strcpy(p->company,q->company);strcpy(q->company,t);strcpy(t,p->date);strcpy(p->date,q->date);strcpy(q->date,t);strcpy(t,p->name);strcpy(p->name,q->name);strcpy(q->name,t);strcpy(t,p->price);strcpy(p->price

27、,q->price);strcpy(q->price,t);q=*Head;p=*Head;doprintf("nt排序完成,是否顯示 (Y/N)" :");/*詢問是否顯示排序結(jié)果*/getchar();scanf("%c",&c);if(c='y'|c='Y')Scan(*Head);/顯示排序結(jié)果elseif(c='n'|c='N')return;/返回主菜單else專業(yè)資料整理WORD格式-17-專業(yè)資料整理WORD格式printf("ntt輸

28、入錯(cuò)誤,請重新輸入!");/錯(cuò)誤那么繼續(xù)詢問while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Delete(Pointer *Head)/* 刪除函數(shù) */int flag=1;char AN10;char c,z;Pointer p,q;printf("ntt*圖書刪除 *n");printf("t請輸入要?jiǎng)h除圖書的信息的登錄號(hào):");scanf("%s",AN);p=q=*H

29、ead;/* 查找符合條件的圖書 */while(p!=NULL&&flag)if(strcmp(p->AN,AN)=0)/*找到該圖書 */printf("tn登錄號(hào): %-10s",p->AN);/顯示即將要?jiǎng)h除的圖書的信息printf("tn書名: %-20s",p->name);printf("tn作者名: %-20s",p->author);printf("tn分類號(hào): %-10s",p->clc);printf("tn出版單位: %-20s&quo

30、t;,p->company);printf("tn出版時(shí)間: %-20s",p->date);printf("tn價(jià)格:¥ %-10sn",p->price);printf("確定刪除 "確定請輸 Y,其它那么不刪除 ");/詢問是否刪除getchar();scanf("%c",&z);if(z='Y'|z='y')專業(yè)資料整理WORD格式-18-專業(yè)資料整理WORD格式if(p=*Head)*Head=p->next;free(p);/*刪

31、除圖書信息 */elseq->next=p->next;free(p);flag=0;elseprintf("圖書信息未刪除,返回主菜單。");return;elseq=p;p=p->next;/*指針走到下一個(gè)節(jié)點(diǎn) */printf("tt刪除成功! n");if(flag)printf("t沒有找到可以刪除的數(shù)據(jù)!");doprintf("選擇是否繼續(xù)刪除 (Y/N)" :");/*連續(xù)刪除圖書信息 */getchar();scanf("%c",&c);i

32、f(c='y'|c='Y')Delete(Head);/*繼續(xù)刪除 */elseif(c='n'|c='N')return;/*不刪除返回主菜單 */elseprintf("ntt輸入錯(cuò)誤,請重新輸入!");專業(yè)資料整理WORD格式-19-專業(yè)資料整理WORD格式while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Update(Pointer Head)/* 圖書信息

33、修改函數(shù) */int flag=1;char AN10;char c;Pointer p;printf("ntt*圖書信息修改 *n");printf("t請輸入要修改的圖書的登錄號(hào):");scanf("%s",AN);/*查找符合條件的圖書 */p=Head;while(p!=NULL&&flag)if(strcmp(p->AN,AN)=0)printf("ntt請輸入登錄號(hào) :");/*修改圖書信息 */scanf("%s",p->AN);printf("

34、;ntt輸入書名 :");scanf("%s",p->name);getchar();printf("ntt輸入作者名 :");scanf("%s",p->author);getchar();printf("ntt輸入分類號(hào) :");scanf("%s",p->clc) ;getchar();專業(yè)資料整理WORD格式-20-專業(yè)資料整理WORD格式printf("ntt輸入出版單位 :");scanf("%s",p->co

35、mpany) ;getchar();printf("ntt輸入出版日期 :");gets(p->date);printf("ntt輸入價(jià)格 :");scanf("%s",p->price);flag=0;printf("修改成功 !n");elsep=p->next;/*指針走到下一個(gè)節(jié)點(diǎn) */if(flag)printf("ntt沒有該圖書記錄 !");doprintf("選擇是否繼續(xù)修改 (Y/N)" :");/*連續(xù)修改圖書信息 */getc

36、har();scanf("%c",&c);if(c='y'|c='Y')Update(Head);/*繼續(xù)修改 */elseif(c='n'|c='N')return;/不修改,返回菜單elseprintf("ntt輸入錯(cuò)誤,請重新輸入!");while(c!='y'&&c!='n'&&c!='Y'&&c!='N');/輸入錯(cuò)誤那么繼續(xù)詢問專業(yè)資料整理WORD格式-21-專

37、業(yè)資料整理WORD格式void Save()/* 以文本文件形式保存的函數(shù)*/Pointer p;p=Head;char file20;/*用來存放文件保存路徑以及文件名*/printf("請輸入文件路徑及文件名:");scanf("%s",file);if(fp=fopen(file,"w+")=NULL)/*判斷能否翻開文件 */printf("不能翻開文件 !n");return;while(p!=NULL)fprintf(fp,"%st%st%st%st%st%st%sn",p->

38、AN,p->name,p->author,p->clc,p->company,p->date,p->price);/將數(shù)據(jù)寫入文件p=p->next;/*下移一個(gè)結(jié)點(diǎn) */fclose(fp);/寫入完成,關(guān)閉文件printf("文件已經(jīng)保存 !n");return ;void Read()/* 讀入文本文件的函數(shù) */Pointer p,q;int m=0;char file20;printf("請輸入文件路徑及文件名:");scanf("%s",file);/*輸入文件路徑及名稱 */專業(yè)

39、資料整理WORD格式-22-專業(yè)資料整理WORD格式if(fp=fopen(file,"r+")=NULL)/檢查文件是否存在printf("不能翻開文件 !n");return;m=m+1;if(m=1)p=(Pointer)malloc(sizeof(Booklist);/*開辟一個(gè)新單元 */Head=p;/ 將 p 的地址賦給頭指針Headfscanf(fp,"%st%st%st%st%st%st%stn",&p->AN,&p->name,&p->author,&p->c

40、lc,&p->company,&p->date,&p->price);/*文件讀入 */donum=num+1;/ 記錄書籍信息量if(num=1) /區(qū)別開鏈表開頭與中間的處理方法Head->next=p;else q->next=p;q=p;p=(Pointer)malloc(sizeof(Booklist); /*開辟一個(gè)新單元 */fscanf(fp,"%st%st%st%st%st%st%stn",&p->AN,&p->name,&p->author,&p->clc,&p->company,&p->date,&p->price);/讀入文件數(shù)據(jù)while(!feof(fp);/ 檢查文件是否完畢,假設(shè)是那么停頓讀入,否那么繼續(xù)讀入 q->

溫馨提示

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

評(píng)論

0/150

提交評(píng)論