




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課 程 報 告課 程 名 稱: 程序設(shè)計實踐 專 業(yè) 班 級 : 計算機科學(xué)與技術(shù)1203班 學(xué) 生 姓 名 : 董鵬軍 學(xué) 號 : 201216010305 任 課 教 師 : 張苗 學(xué) 期 : 2012-2013學(xué)年第二學(xué)期 課程報告任務(wù)書題 目圖書信息管理系統(tǒng)主要內(nèi)容開發(fā)一個圖書信息管理系統(tǒng),圖書信息包括:圖書編號、書名、作者、出版社、類別、出版時間、價格等基本信息(也可以根據(jù)自己情況進行擴充,比如是否借出、庫存量等)。使之能提供以下基本功能:(1)圖書信息錄入功能(圖書信息用文件保存)輸入v(2)圖書信息瀏覽功能輸出(3)查詢功能(至少一種查詢方式)、排序功能(至少一種排序方式): l 按書名查詢 按作者名查詢 按照價錢排序 按出版時間排序等等(4)圖書信息的刪除與修改擴展功能:可以按照自己的程度進行擴展。比如(1)簡單的權(quán)限處理 (2)報表打印功能(3)甚至根據(jù)自己情況,可以加上學(xué)生信息,并擴充為圖書借閱系統(tǒng)。(4)模糊查詢 (5)綜合查詢 (6)統(tǒng)計功能 比如統(tǒng)計處某一類別的圖書信息 或 篩選出小于指定數(shù)量庫存的圖書信息等等,總之,可以根據(jù)自己需求進行分析功能。任務(wù)要求一、提交材料應(yīng)包括:(1)系統(tǒng)源代碼 (2)課程報告二、整個設(shè)計過程具體要求(1)需求分析 要求學(xué)生對案例系統(tǒng)進行分析,設(shè)計出需要完成的功能,完善各個模塊的調(diào)用關(guān)系;(2)設(shè)計過程 要求學(xué)生進一步明確各模塊調(diào)用關(guān)系,進一步完善模塊函數(shù)細節(jié)(函數(shù)名、參數(shù)、返回值等)(3)實現(xiàn)過程 要求學(xué)生養(yǎng)成良好的編碼習(xí)慣、完成各個模塊并進行測試,最終完成系統(tǒng)整體測試;(4)總結(jié)階段 按照要求完成系統(tǒng)設(shè)計和實現(xiàn)報告,并進行總結(jié)、答辯。成績評定報告撰寫情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)總分內(nèi)容20分規(guī)范程度5分程序測試5分基本功能20分擴展功能10分自述情況10分答辯情況30分成績評定教師: 261 需求分析根據(jù)題目要求,應(yīng)當(dāng)把圖書信息用結(jié)構(gòu)體形式輸入,再定義一個全局變量和文件指針進行整個程序的運行,然后把圖書信息送到文件中,所以應(yīng)該提供一個結(jié)構(gòu)體和文件的輸入輸出等操作;在程序中需實現(xiàn)圖書信息錄入,瀏覽,查詢,刪除和修改等功能的操作,所以需要建立相應(yīng)的模塊來實現(xiàn);另外還需提供鍵盤式選擇菜單實現(xiàn)功能,在運行時達到所要目的。2 概要設(shè)計 我的圖書信息管理系統(tǒng)包括以下幾個模塊 1-從文件中打開圖書信息模塊 2-新建書庫模塊 3-插入圖書模塊 4-刪除圖書信息模塊5-按編號排序模塊6-輸出圖書信息模塊7-保存圖書信息到文件模塊;8-查詢圖書信息模塊對于圖書信息的保存,我采用的是結(jié)構(gòu),新建的圖書用鏈表將其連接起來,采用文件保存,程序主要包括庫函數(shù),用結(jié)構(gòu)定義圖書信息,定義函數(shù),main函數(shù),以上定義函數(shù)的實現(xiàn)。3 詳細設(shè)計 (1)頭函數(shù)名#include#include#include (2)對書籍信息的定義struct Book_Listchar book_number20; /*圖書編號*/char book_name40; /*該書書名*/char book_writter30; /*此書的作者*/char book_publiction40; /*該書的出版社*/char book_sort30; /*圖書類別*/char book_born20; /*出版時間*/double price; /*這本書的單價*/struct Book_List *next; /*圖書單的單向指針*/; (3)對子函數(shù)的定義struct Book_List *Creat_Book_List(struct Book_List *head1); /新建圖書鏈表void book_save(struct Book_List *); /保存圖書信息到文件struct Book_List *Open_book(); /從文件中讀取書目信息struct Book_List *book_Sort(struct Book_List *head1); /對圖書鏈表按編號排序void Printf_out(struct Book_List *); /輸出鏈表中的信息struct Book_List *Insert_Book_list(struct Book_List *); /插入圖書信息struct Book_List *Delete_Book_List(struct Book_List * ); /刪除圖書struct Book_List *T_book_number(struct Book_List *);/按書號刪除struct Book_List *T_book_name(struct Book_List *);/按書名刪除void book_hunt(struct Book_List *head1);/搜索圖書void book_number(struct Book_List *head1);/通過圖書編號檢索圖書信息void book_name(struct Book_List *head1);/通過圖書書名檢索圖書信息void book_writer(struct Book_List *head1);/通過作者檢索圖書信息void Printf(struct Book_List *); /輸出單個書目的信息int Count1=0; (4)各個函數(shù)的實現(xiàn)1.新建鏈表函數(shù)的實現(xiàn)struct Book_List *Creat_Book_List(struct Book_List *head1)/新建圖書鏈表struct Book_List *tail , *p;char book_number20; /*圖書編號*/char book_name40; /*該書書名*/char writter30; /*此書的作者*/char book_publiction40; /*該書的出版社*/char book_sort30; /*圖書類別*/char book_born20; /*出版時間*/double price; int size = sizeof(struct Book_List);int choice = 1;if(head1 != NULL) p = head1; while(p-next != NULL) p = p - next; tail = p; while(choice != 0) system(cls); printf( 【建 立 書 籍 信 息】nn); printf(請輸入圖書編號:); scanf(%s, book_number ); printf(請輸入圖書出版社:); scanf(%s, book_publiction); printf(請輸入圖書名:); scanf(%s, book_name); printf(請輸入作者:); scanf(%s,writter); printf(請輸入圖書類別:); scanf(%s, book_sort); printf(請輸入出版時間:); scanf(%s,book_born); printf(請輸入圖書價格:); scanf(%lf, &price ); p = (struct Book_List *)malloc(size); strcpy(p - book_number , book_number); strcpy(p - book_name , book_name); strcpy(p - book_writter , writter); strcpy(p - book_publiction , book_publiction); strcpy(p - book_sort , book_sort); strcpy(p - book_born , book_born); p - price = price; p - next = NULL; if(head1 = NULL) head1 = p; else tail - next = p; tail = p; printf(是否繼續(xù)建立圖書信息(1/0 ?)n); scanf(%d, &choice);return head1;2.插入圖書信息函數(shù)的實現(xiàn)struct Book_List *Insert_Book_list(struct Book_List *head ) /插入圖書信息struct Book_List *ptr1 , *ptr2 , *p;char book_number20; /*圖書編號*/char book_name40; /*該書書名*/char writter30; /*此書的作者*/char book_publiction40; /*該書的出版社*/char book_sort30; /*圖書類別*/char book_born20; /*出版時間*/double price; int choice = 1;int size = sizeof(struct Book_List);while(choice = 1)system(cls);printf( 【插 入 如 書 籍 信 息】nn); printf(請輸入圖書編號:); scanf(%s, book_number ); printf(請輸入圖書出版社:); scanf(%s, book_publiction); printf(請輸入圖書名:); scanf(%s, book_name);printf(請輸入作者:); scanf(%s,writter); printf(請輸入圖書類別:); scanf(%s, book_sort);printf(請輸入出版時間:); scanf(%s,book_born); printf(請輸入圖書價格:); scanf(%lf, &price ); p = (struct Book_List *)malloc(size); strcpy(p - book_number , book_number); strcpy(p - book_name , book_name); strcpy(p - book_writter , writter); strcpy(p - book_publiction , book_publiction); strcpy(p - book_sort , book_sort); strcpy(p - book_born , book_born); p - price = price; p - next = NULL; /書庫信息為空時 if(head = NULL) head = p; /書庫信息不為空 elseptr1 = head; ptr2 = head - next; while(ptr2 != NULL) ptr1 = ptr1 - next; ptr2 = ptr2 - next; ptr1 - next = p; printf(-此圖書信息插入成功!-n); printf(是否繼續(xù)建立圖書信息(1/0 ?)n); scanf(%d, &choice); return head;3.刪除圖書信息函數(shù)的實現(xiàn)struct Book_List *Delete_Book_List(struct Book_List *head ) /刪除圖書int choice , i = 1; /鏈表為空if(head = NULL)printf(書庫信息為空,請先建立書庫信息。n);printf(想要新建書庫請輸入2,退出請輸入0:);scanf(%d, &choice);if(choice = 2) head = Creat_Book_List(head); return head;elsereturn NULL; while(i = 1) system(cls);printf( 刪 除 圖 書 信 息 n);printf( 通過圖書編號-請輸入1 通過書名-請輸入2 退出刪除-請輸入0 n);printf(請輸入操作對應(yīng)的輸入數(shù): );scanf(%d, &choice);switch(choice)case 1:head = T_book_number(head);getchar();break;case 2:head = T_book_name(head);getchar();break;case 0:printf(退出刪除操作成功n);i = 0;getchar();break;default:printf(輸入錯誤,退出系統(tǒng)。n);i = 0;getchar();return head;struct Book_List *T_book_number(struct Book_List *head) /通過圖書編號刪除圖書信息struct Book_List *ptr1 , *ptr2 , *p;char book_number20;int flag = 1; printf(請輸入需要刪除圖書編號:);scanf(%s, book_number);for(p = head;p != NULL;p= p - next)if(strcmp(p - book_number , book_number) = 0) flag = 0;break;if(flag = 1)printf(沒 有 找 到 編 號 為 %s 的 圖 書 信 息!n, book_number); else /要刪除結(jié)點在表頭 if(strcmp(head - book_number , book_number) = 0) do ptr1 = head; head = head - next; free(ptr1);while( strcmp(head - book_number , book_number) = 0); printf(刪 除 圖 書 信 息 成 功 !n); /要刪除節(jié)點為非表頭結(jié)點 else ptr1 = head; ptr2 = head - next; while(ptr2 != NULL) if(strcmp(ptr2 - book_number , book_number) = 0) ptr1 - next = ptr2 - next; free(ptr2); else ptr1 = ptr2; ptr2 = ptr1 - next; printf(刪 除 圖 書 信 息 成 功 !n); getchar();return head;struct Book_List *T_book_name(struct Book_List *head) /通過圖書書名刪除圖書信息struct Book_List *ptr1 , *ptr2 , *p;char book_name20;int flag = 1; printf(請輸入需要刪除圖書書名:);scanf(%s, book_name);for(p = head;p != NULL;p= p - next)if(strcmp(p - book_name , book_name) = 0) flag = 0;break;if(flag = 1)printf(沒 有 找 到 書 名 為 %s 的 圖 書 信 息!n, book_name); else /要刪除結(jié)點在表頭 if(strcmp(head - book_name , book_name) = 0) do ptr1 = head; head = head - next; free(ptr1); while( strcmp(head - book_name , book_name) = 0); printf(刪 除 圖 書 信 息 成 功 !n); /要刪除節(jié)點為非表頭結(jié)點 else ptr1 = head; ptr2 = head - next; while(ptr2 != NULL) if(strcmp(ptr2 - book_name , book_name) = 0) ptr1 - next = ptr2 - next; free(ptr2); else ptr1 = ptr2; ptr2 = ptr1 - next; printf(刪 除 圖 書 信 息 成 功 !n);getchar();return head;4.排序函數(shù)的實現(xiàn)struct Book_List *book_Sort(struct Book_List *head1) /排序函數(shù)struct Book_List *head; /定義鏈表的頭指針struct Book_List *min;struct Book_List *p_min; /min前的節(jié)點struct Book_List *tail; /定義鏈表的尾指針struct Book_List *p , *ptr;head = NULL;while(head1 != NULL)p = head1;while(p - next != NULL)p = p - next;ptr = p;for(p = head1,min = head1;p - next != NULL;p = p - next)if(strcmp(p - next) - book_number , min - book_number) next;if(head = NULL)head = min;tail = min;elsetail - next = min;tail = min;if(min = head1)head1 = head1 - next;else if(min = ptr)p_min - next = NULL;elsep_min - next = min - next;if(head != NULL)tail - next = NULL;printf(排序成功!n);getchar();return head;5.將圖書寫入文件和讀出文件函數(shù)的實現(xiàn)void book_save(struct Book_List *head) /保存圖書信息到文件FILE *fp;struct Book_List *p;if(fp = fopen(書庫信息.txt , w) = NULL)printf(書 庫 信 息 文 件 打 開 出 錯 ! n);exit(0);for(p = head;p != NULL;p = p - next) fprintf(fp , %s %s %s %s %s %s %.2fn , p - book_number ,p - book_name ,p - book_writter ,p - book_publiction ,p - book_sort ,p - book_born, p - price );if(fclose(fp)printf(不 能 關(guān) 閉 書 庫 信 息 文 件!n);exit(0);elseprintf(-圖 書 信 息 保 存 成 功 -n);getchar();struct Book_List *Open_book() /從文件中打開圖書信息FILE *fp;int size = sizeof(struct Book_List);struct Book_List *head , *p , *tail ;head = tail = NULL; if(fp = fopen(書庫信息.txt , r) = NULL)printf(書 庫 信 息 文 件 打 開 出 錯 ! n);exit(0);printf(tttt-書 庫 信 息 文 件 打 開 成 功-!n);while(!feof(fp)p = (struct Book_List *)malloc(size); fscanf(fp , %s%s%s%s%s%s%lf , &p - book_number ,&p - book_name ,&p - book_writter,&p - book_publiction ,&p - book_sort ,&p - book_born, &p - price ); if(feof(fp) break; p - next = NULL;if(head = NULL)head = p;elsetail - next = p;tail = p;if(fclose(fp)printf(不 能 關(guān) 閉 書 庫 信 息 文 件!n);exit(0);getchar();return head;6.搜索圖書信息函數(shù)的實現(xiàn)void book_hunt(struct Book_List *head1)/搜索圖書信息int choice , i = 1; /鏈表為空if(head1 = NULL)printf(書庫信息為空,請先輸入n);return;while(i = 1) system(cls);printf( 【搜 索 圖 書】 n);printf( 1-通過圖書編號 n);printf( 2-通過書名 n);printf( 3-通過作者 n);printf( 0-退出 n);printf(請輸入操作對應(yīng)的輸入數(shù): );scanf(%d, &choice);switch(choice)case 1: book_number(head1);getchar(); break;case 2:book_name(head1);getchar(); break;case 3:book_writer(head1);getchar(); break;case 0:printf(退出操作成功n);i = 0;getchar(); break;default:printf(輸入錯誤,退出系統(tǒng)。n);i = 0;getchar();return;void book_number(struct Book_List *head1) /通過圖書編號檢索圖書信息struct Book_List *p ;char book_number20;int flag = 0; printf(請 輸 入 要 查 詢 的 圖 書 編 號:);scanf(%s, book_number);for(p = head1;p != NULL;p= p - next)if(strcmp(p - book_number , book_number) = 0) flag = 1;break;if(flag = 0)printf(沒 有 找 到 編 號 為 %s 的 圖 書 信 息!n, book_number);else Printf(p); /輸出搜索到的圖書信息getchar();void book_name(struct Book_List *head1) /通過圖書書名檢索圖書信息struct Book_List *p;char book_name40;int flag = 0; printf(請 輸 入 要 查 詢 的 圖 書 書 名:);scanf(%s, book_name);for(p = head1;p != NULL;p= p - next)if(strcmp(p - book_name , book_name) = 0) flag = 1;break;if(flag = 0)printf(沒 有 找 到 編 號 為 %s 的 圖 書 信 息!n, book_name);else Printf(p); /輸出搜索到的圖書信息getchar();void book_writer(struct Book_List *head1) /通過作者檢索圖書信息struct Book_List *p;char book_writter30;int fla
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年交通設(shè)備制造業(yè)數(shù)字化轉(zhuǎn)型升級政策環(huán)境分析報告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺傳感器網(wǎng)絡(luò)自組網(wǎng)技術(shù)在航空航天領(lǐng)域的應(yīng)用分析
- 2025年分布式能源系統(tǒng)生物質(zhì)能源應(yīng)用中的能源互聯(lián)網(wǎng)發(fā)展優(yōu)化報告
- 2025年鄉(xiāng)村振興背景下職業(yè)技能培訓(xùn)的可持續(xù)發(fā)展策略報告
- 2025年CCS項目在能源領(lǐng)域應(yīng)用的經(jīng)濟效益與投資決策支持研究報告
- 2025年醫(yī)療美容消費者心理特點與服務(wù)質(zhì)量優(yōu)化路徑報告
- 輕工行業(yè)25W22:關(guān)稅博弈繼續(xù)漿價震蕩分化
- 施工凈化車間管理制度
- 固體廢物收集點管理制度
- 所屬分公司財務(wù)管理制度
- 肝門部膽管癌診斷和治療指南(2025版)解讀課件
- 水上簡易浮筒浮橋施工方案
- 2024-2025學(xué)年部編版七年級歷史第二學(xué)期期末測試卷(含答案)
- 2025年湖南湘西州花垣縣事業(yè)單位招聘工作人員71人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年河南交投交通建設(shè)集團限公司招聘(152人)高頻重點提升(共500題)附帶答案詳解
- 2025年高中歷史畢業(yè)會考全部基礎(chǔ)知識復(fù)習(xí)提綱(完整版)
- 2025年江蘇銀寶控股集團限公司(鹽城)公開招聘18名工作人員高頻重點提升(共500題)附帶答案詳解
- 電商平臺品牌授權(quán)使用協(xié)議
- DB51T 3163-2023 四川省集中式飲用水水源保護區(qū)勘界定標(biāo)技術(shù)指南
- 水泥土擠密樁的施工方案
- 急性粒-單核細胞白血病病因介紹
評論
0/150
提交評論