一、問題描述
1、 圖書的新增:可以分別進行圖書(如書名、編號、作者、書的**等)資訊與會員(卡號、所借書的名稱等)資料的錄入。
2、 圖書查詢:可以將圖書的資訊(書名、編號、作者、書的**)輸出到螢幕上。
3、 操作:使用者可以進行借書、還書、以圖書名進行查詢、修改使用者資料,新增會員等功能。
4、 儲存:可以將錄入的資訊儲存進文件。
5、 匯入:可以從文件中匯出圖書資訊與使用者資訊供程式用。
6、 退出:退出程式。
二、需求分析
該系統需要設計如下功能:
1. 圖書資訊管理
2. 圖書的錄入
3. 圖書的查詢
4. 會員的新增
5. 會員借書
6. 會員還書
7. 退出
三、系統概述設計
自然語言演算法描述
1新增書資訊
2查詢書資訊
系統的管理和操作 3新增會員卡(新增會員)
4會員借書
5會員還書
函式及其呼叫
子函式的例表:
insetbook圖書資訊輸入函式
searchbook查詢書資訊
addcards新增會員卡(新增會員)
lendbook會員借書
backbook還書
四、系統詳細設計
圖書資訊:定義乙個book的結構體
使用者資訊:定義乙個會員numbers和乙個會員卡cards的結構體
設計思想
先實現主選單,這樣就有了乙個總體的方向.然後主選單用乙個switch(a)語句實現,這樣在main()只要對這個函式呼叫即可,使程式整體顯得有規劃.然後根據主選單的內容,分別定義不同的函式.
然後要做的就是對這些函式的具體實現.程式用到的兩載體主要是三個結構體:struct book{} struct numbers{} struct cards{}通過相應函式實現numbers,cards對book的一些操作.
能過資訊管理函式,實現對圖書資訊與會員資訊的輸入功能.然後通過儲存的函式將相應資料儲存在」 data.dat」和card.
txt 「record.txt」三個檔案中.而瀏覽資訊的函式主要是對這些資訊的輸出.
而操作主要包括了:借書,還書等函式然而為了方便會員在借書時能記得圖書的相關資訊,我們在操作中加入了以書名瀏覽函式.然後如果已經存在了」 data.
dat」 和card.txt 「record.txt兩個檔案,會員就不必再次輸入圖書資訊與使用者資訊,這樣使程式的操作簡單多了,然後為了會員在使用程式時方便改**書與會員的相關資訊
函式的相互關係與呼叫
由main()通過 switch(a)語句來實現函式呼叫
五、系統測試
程式設計出現的問題
1. 首先是由於缺乏整體的規劃,使在寫**的過程式中整體看起來很混亂,常常實現了這個函式才發現還需要另乙個函式,這樣寫乙個算乙個的方法使在寫這個程式的時候走了許多彎路.後來由於有了個整體的規劃,寫出了乙個初步的演算法,使得原來複雜的問題變得簡單起來.
同時也要注意函式的命名,好的命名有利於增強程式的可讀性,還有**的書寫規範.要適當的學會使自己的程式**整潔好看.
2. 設計結構體陣列時沒有注意到結構體陣列大小,使得除錯出現了呼叫記憶體錯誤的問題。
3. 程式大部分都是由c語言實現的.由於我對c語言檔案及結構體部分不是很熟悉,讓我在寫如檔案儲存和匯入函式的時候費了許多時間.
然而由於若全用c語言寫**太長,所以如有些簡單的操作如:清屏,延緩就用了windows.h中的相關函式system(「cls」);system(「pause」;)使程式簡單化.
4. 在使用輸出語句時,我引用了c++中的語法,這樣使得輸出語句更易操作,介面更加美觀。
程式效果
insetbook();實現效果很好
searchbook();開始出現記憶體呼叫錯誤,經除錯後得到解決 addcards() ; 實現效果很好
lendbook() ; 實現效果時好時壞
backbook() ; 效果一般。
雖然函式能達到預定效果,但還存在許多不足。
六、 經驗總結
通過這次「圖書管理系統」課程設計,我學到了課本以外的東西,這讓我明白,僅僅能讀懂程式永遠是不夠的,必須的動手寫,要不然只會眼高手低。我們要從實踐中才能學到更多的東西。而實踐又要以理論為基礎,要是c語言知識不紮實,做出的程式是漏洞百出。
所以,我們要將理論與實踐結合起來,把我們在課堂上學到的東西運用在實踐中,這樣才能提高我們程式設計能力。
首先是對c語言的掌握。我跟我的搭檔一起完成了圖書管理系統的設計,毫無疑問,要寫好乙個這麼大的系統,不僅需要分析所需模組功能的能力,更重要的是要將之轉化為c語言源**,用c語言翻譯出來,這就要求我們不得不一遍又一遍地溫習書上的的內容,本來那些遺忘的知識,在我們不斷的看書與實踐中又一點一點地清晰起來,並且毫無疑問,我們對這些知識的理解又上公升了乙個層次。
七、參考文獻
[1]譚浩強.c語言教程.北京:清華大學出版社,2002,4
[2]嚴蔚敏.資料結構.北京:清華大學出版社,2009,7
[3]網路」關於怎麼獲得系統當前時間」,」關於檔案的輸入與輸出」「部分源**「等。
#include
#include
#include
#include
#include
void lendbook();
#define n 10
typedef struct //圖書結構體
book;
typedef struct /*定義借書人會員,用於存放借出的書籍*/
numbers;
typedef struct /*會員卡的資料型別*/
cards;
book bk[1000];
numbers number[1000] ;
cards card[1000];
void write_file() //寫檔案
}void insetbook()
void searchbook()
{ printf("\t\t圖書查詢t\t\n");
cout<<"請輸入你要查詢的書籍名"< file *fp;
char bookname[20];
int i;
fp=fopen("c:data.dat","r");
// cout<<"請輸入你要查詢的書籍";
scanf("%s",bookname);
for(i=0;fread(&bk[i],sizeof(book),1,fp)!=1;i++)
圖書管理系統測試報告書
軟體測試報告書 軟體名稱 圖書管理系統 測試人員 苗玉丹 測試日期 2011年6月6號 目錄1 簡介 4 1.1 編寫目的 4 1.2 專案背景 4 1.3 系統簡介 4 1.4 術語和縮寫詞 4 1.5 參考資料 4 2 測試概要 4 2.1 測試用例設計 5 2.2 測試環境與配置 5 2.3 ...
c語言程式設計報告圖書管理系統
中國地質大學 本科生課程 封面 課程名稱 c語言課程設計 教師姓名樊媛媛 本科生姓名 本科生學 本科生專業 所在院系 類別日期 注 1 無評閱人簽名成績無效 2 必須用鋼筆或原子筆批閱,用鉛筆閱卷無效 3 如有平時成績,必須在上面評分表中標出,並計算入總成績。課程設計評語 2 目錄 3 1 課程 題...
物件導向程式設計圖書管理系統
物件導向程式設計 c 專案名稱 圖書管理系統設計 學校 學院 班級 姓名學號 同組成員者 完成時間 2010年12月28日 成績 指導教師簽名 時間 一 問題分析與功能定義 二十一世紀是資訊的社會,資訊作為社會最主要的資源,將成為戰略資源引起人們廣泛的關注。如何獲取資訊?圖書是我們最好的獲取資訊的方...