版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、電子信息工程系課程設計報告成 績:課程名稱:高級語言程序設計(C)課程設計指導教師(簽名):實驗項目名稱:簡易書店管理系統(tǒng) 實驗時間:6.236.27班級:計教131 姓名:張兆杰 學號:7 實 驗 目 的: 1. 提高分析問題、解決問題的能力以及實際動手能力。2. 深入理解C語言中控制語句、數(shù)組、函數(shù)、指針、結構體等知識的滲透交互應用,提高用C語言解決實際問題的技術和能力。3. 初步理解數(shù)據(jù)處理的一般方法,了解數(shù)據(jù)的讀取、處理、保存等技術。4. 通過具體而微的圖書管理系統(tǒng),初步了解系統(tǒng)開發(fā)的一般過程、形式。了解并基本掌握結構化程序設計,加強對一個系統(tǒng)開發(fā)的整體把控能力。實 驗 環(huán) 境:Tur
2、bo C2.0/win-tc實驗項目及分析: 0. 前言軟件開發(fā)流程(Software development process)即軟件設計思路和方法的一般過程,包括設計軟件的功能和實現(xiàn)的算法和方法、軟件的總體結構設計和模塊設計、編程和調(diào)試、程序聯(lián)調(diào)和測試以及編寫、提交程序(請同學們查閱軟件開發(fā)流程的相關文獻)。作為一個小系統(tǒng),本實驗的開發(fā)過程大致包括:功能(需求)分析、系統(tǒng)設計、編程實現(xiàn)和調(diào)試、測試、提交程序和相關文檔。1. 功能(需求)分析書店為了能實現(xiàn)日常的經(jīng)營,經(jīng)常涉及到到事物及應該具有的功能是:圖書入庫(進書采購時)、圖書銷售、查看圖書的庫存情況(清單)、圖書刪除、數(shù)據(jù)保存、數(shù)據(jù)備份等
3、功能。在現(xiàn)實中的商店,商品都具有一個條形碼,用來唯一識別商品種類。這是一個重要的數(shù)據(jù)信息,對于圖書來說,就是ISBN號,現(xiàn)實商店中都用條碼閱讀器來閱讀,本實驗中條件所限,使用鍵盤輸入書號來模擬條碼閱讀器。2. 系統(tǒng)設計2.0 涉及到的數(shù)據(jù)結構l 圖書信息數(shù)據(jù)類型,采用結構體,包含了書號、書名、作者、單價、庫存數(shù)量等核心信息:typedef struct char bkno10;/*書號*/ char bkname20;/*書名*/ char author10;/*作者*/ float price; /*單價*/ int num;/*庫存數(shù)量(單位:冊)*/ BOOK;l 最大數(shù)組長度,實驗中設
4、置為1000;#define MAXNUM 1000l 圖書書庫,用BOOK類型的數(shù)組bk保存,每個數(shù)組單元代表一種圖書,退出系統(tǒng)時應該保存在文件中,為全局數(shù)組: BOOK bkMANUM;l 圖書種類數(shù)量,為全局變量,退出系統(tǒng)時應該保存在文件中:int BKNUM =0; /*不同圖書的數(shù)量,初始值為0*/2.1 圖書進庫:采購時,讀取條形碼(ISBN號),如果該書已經(jīng)存在(書號已經(jīng)在數(shù)據(jù)庫中了),直接顯示該圖書信息,輸入數(shù)量后,修改書庫中的圖書數(shù)量;如果書號不在書庫,則錄入該圖書詳細信息,并添加信息到書庫bk數(shù)組。相關函數(shù)原型:void bookin()2.2 圖書銷售:如果顧客將購買某本
5、書,營業(yè)員讀取條形碼(ISBN號),系統(tǒng)會告知該書是否在庫存清單中,如果不在,顯示適當?shù)奶崾拘畔?;如果在,系統(tǒng)顯示該書的詳細信息并詢問所需的冊數(shù)。如果庫存書的冊數(shù)不足,顯示相應的銷售失敗的提示信息;冊數(shù)足夠則顯示這些書的總價格,此時銷售成功,在書庫中的冊數(shù)減去銷售的冊數(shù)。相關函數(shù)原型:void booksail ()2.3 圖書列表:顯示庫存中現(xiàn)有的圖書,每20行暫停。相關函數(shù)原型:void booklist()2.4 打開和保存數(shù)據(jù)文件:所有圖書相關信息都可以保存在磁盤文件(saledata.txt)上,程序開始后,先從數(shù)據(jù)文件讀取數(shù)據(jù)(到數(shù)組),以數(shù)組為中心進行圖書進、銷等操作;所有操作結
6、束后,退出程序時必須把數(shù)組數(shù)據(jù)保存回磁盤文件,并把原數(shù)據(jù)文件作為備份文件saledata.bak。相關函數(shù)原型:void rdata(),從文件讀取數(shù)據(jù)到bk數(shù)組。 void wdata() 保存bk數(shù)組的數(shù)據(jù)到文件,同時備份舊文件。2.5 友好的界面:要求有友好的操作界面,以上功能都能在界面中以適當?shù)男问襟w現(xiàn)并方便地操作。相關函數(shù)原型: int showsel():清屏并顯示功能選項。2.6 文件結構:前兩字節(jié)存放記錄個數(shù)(即不同書的數(shù)量BKNUM),這兩個字節(jié)之后的內(nèi)容是每個不同的書具體信息記錄(即用來存放bk數(shù)組的所有有效數(shù)據(jù))2.7 可以自由發(fā)揮,實現(xiàn)其他相關功能,比如圖書查詢等。(該
7、部分請根據(jù)自己的設計進行完善)實 驗 過 程 和 結 果:(程序運行過程截圖,打印后,配上說明文字。)系統(tǒng)主界面。圖書列表。圖書進庫,可以增加已有的書本的數(shù)量,也可以新增書本。這是圖書入庫后的新列表。這是零售清單,可以購買并結算已有的圖書。當輸入不存在的圖書時,系統(tǒng)會提示先入庫,然后再進行銷售。這是按書名模糊搜索。這是按作者模糊搜索。這是刪除圖書前的列表。這是刪除圖書后的列表,此時已刪除完012這本書。實 驗 心 得:(總結在實驗中的設計、編程實現(xiàn)、編譯、運行、測試等各環(huán)節(jié)中所出現(xiàn)的問題及解決方法。) 通過這周的課程設計,我認識到C語言是一門比較難的課程。需要多花時間上機練習。這次的程序訓練培
8、養(yǎng)了我實際分析問題、編程和動手能力,使我掌握了程序設計的基本技能,提高了我適應實踐編程的能力。 當我第一次聽到老師說要寫個兩百多行的程序時,對于我這C語言基礎一般的人來說,就覺得好難,剛開始我一點頭緒也沒有,于是就上網(wǎng)查找資料,可是網(wǎng)絡上有些代碼又不易理解,這下我就很苦惱了,可是沒辦法啊,程序還是要寫的。還好在上機的時候,老師的講解很通俗易懂,慢慢的我就有了點信心。老師給了我們大體的框架,我就一點點的進行功能的完善。 圖書列表完成的挺順利,可是在圖書入庫時,卻老是出錯,還好老師進行了細心的講解,最后順利的完成了。圖書銷售因為與圖書入庫挺像的,只要做些修改,就可以完成了,也還算順利。在圖書查詢這
9、個功能中,因為要做到模糊搜索,難度還是有點大的,于是我就不斷的上網(wǎng)查資料,一點點的理解別人的程序,經(jīng)過不斷的修改、調(diào)試,總算是完成了這個功能。在刪除圖書這個功能中,我又遇到了困難,我向同學進行了請教,雖然在使用時還不是那么的人性化,但也算完成了。 通過這周的課程設計,我明白了要完成一個優(yōu)秀的程序,必須要熟練掌握各種語句的特點及用法,要學會舉一反三,充分實現(xiàn)C程序的靈活性。在平時的學習實踐中,要不斷開動腦筋,活學活用。要發(fā)揚團體合作的精神,互幫互助,共同進步。善于發(fā)問,善于思考。 代碼如下:#include stdio.h#include conio.h#include stdlib.h#inc
10、lude #define ISBN 3#include int i,bknum;FILE *fp;int Mark=0;typedef struct char isbn10;/*書號*/ char bkname20;/*書名*/ char author10;/*作者*/ float price; /*單價*/ int num;/*數(shù)量(單位:冊)*/ BOOK;BOOK bk1000;rdata()FILE *fp;if (fp=fopen(bookdata.txt,rb)=NULL) printf(Can not open the file!n);return;fread(&bknum,si
11、zeof(int),1,fp);fread(bk,sizeof(BOOK),bknum,fp);fclose(fp);wdata()FILE *fp;if ( (fp=fopen(bookdata.txt,wb)=NULL) printf(Can not open the file!n);return;fwrite(&bknum , sizeof(int) , 1 ,fp);fwrite(bk,sizeof(BOOK),bknum,fp);fclose(fp);void pb(int i,int j)/*輸出bki,j=0時 不輸出“書號 書名 等.” ;i=-1時 不輸出數(shù)據(jù)*/if(j!=
12、0) printf(%-14s%-22s%-14s%-9s%-5sn,書號,書名,作者,單價,數(shù)量);printf(-n);if(i!=-1 ) printf(%-14s%-22s%-14s%-9.2f%-5dn,bki.isbn,bki.bkname ,bki.author,bki.price,bki.num); booklist()/*#輸出圖書列表#*/char text10;int i,j,k,t20=1,tip=0;system(CLS);printf(n 輸入【 del 書號 】并回車可執(zhí)行刪除操作如:del 001n ); printf(n 輸入f可刷新列表哦!t 輸入000返回
13、n);printf(n-n); pb(-1,1);if(bknum)for(i=0;ibknum;i+,t20+)pb(i,0);if(t20=20) printf(nn);system(PAUSE);printf(n); if(!bknum) printf(列表為空!nn); while(1) scanf(%s,text); if(strcmp(text,del)=0) /*刪除指令*/tip=0;scanf(%s,text); for(j=0;jbknum;j+)if(strcmp(text,bkj.isbn)=0)for(k=j;kbknum;k+)bkk=bkk+1;bknum-;pr
14、intf(n刪除成功!nn);tip=1; if(tip=0) printf(n未找到刪除項!nn); if(strcmp(text,000)=0) return; if(strcmp(text,f)=0) booklist();return; fflush(stdin); Mark=0;bklist()int i; system(cls);printf(%-10s%-20s%-10s%-6s%5sn,書號,書名,作者,單價,數(shù)量);printf(-n);for(i=0;ibknum;i+) printf(%-10s%-20s%-10s%-6.2f%5dn, bki.isbn,bki.bkna
15、me,bki.author,bki.price,bki.num);getch(); bkin()int i,n1;char b10;system(cls);printf(nnn);printf(- 圖書進庫 -n);printf(-n);printf(nnn);printf(請輸入書號:);scanf(%s,b);while(strcmp(b,000) for(i=0;ibknum;i+) if(strcmp(bki.isbn,b)=0) break; if(ibknum) printf(該書已存在,請輸入書的數(shù)量n); scanf(%d,&n1); bki.num+=n1; else str
16、cpy(bki.isbn,b); printf(請輸入書名:); scanf(%s,bki.bkname); printf(請輸入作者:); scanf(%s,bki.author); printf(請輸入價格:); scanf(%f,&bki.price); printf(請輸入數(shù)量:); scanf(%d,&bki.num); bknum+; printf(請輸入書號:); scanf(%s,b); wdata();bksell()int i,count=0;char b10;BOOK s100;float sum=0,in,out;system(cls);printf(-圖書銷售-nnn
17、);printf(請輸入書號:);scanf(%s,b);while(strcmp(b,000) for(i=0;ibknum;i+) if(strcmp(bki.isbn,b)=0) break; if(i0) scount+=bki;bki.num-; sum+=bki.price; elseprintf(sorry,該書庫存不足,按任意鍵返回.);getch(); else printf(該書未入庫,請先入庫后再進行銷售.);getch(); system(cls); printf(-n); printf( 零售清單t輸入000可進行結算哦!n);printf(-n); printf(%
18、-10s%-20s%-10s%-6s%5sn,書號,書名,作者,單價,數(shù)量); printf(-n); for(i=0;icount;i+) printf(%-10s%-20s%-10s%-6.2f%5dn, si.isbn,si.bkname,si.author,si.price,si.num); wdata(); printf(請輸入書號:); scanf(%s,b); printf(-n); printf(總價:%.2fn,sum); printf(您購買的書本數(shù)量為:%d,count); printf(n請輸入收入金額:); scanf(n%f,&in); out=in-sum; pr
19、intf(找零:%6.2f,out); getch(); bkfind()int select=-1,tip=0,k,i,l,t=0,j=0/*j 判斷字符*/;char d,in20,bj20;while(1)fflush(stdin);tip=0;system(CLS);printf(nn請按需求進行查詢:nntttt1. 搜書名nntttt2. 搜作者nntttt0. 退出n) ;switch(getch()case 0:return;break;case 1:select=1;break;case 2:select=2;break;if(select=1)printf(n請輸入書名:)
20、;tip=0;gets(in);fflush(stdin);if(strlen(in)=0) continue;for(i=0,t=0;ibknum;i+)if(strcmp(in,bki.bkname)=0) pb(i,1);t=1;tip=1;if(t!=1)for(i=0,j=0;ibknum;i+)if(strcmp(in,bki.bkname)=0) pb(i,1);t=1;tip=1;else if(t!=1)for(k=0;kstrlen(in);k+)for(l=0;l=strlen(in) printf(n); pb(i,1);tip=1; j=0; if(bknum=0|tip=0) printf(n找不到對應的書!); if(select=2)printf(n請輸入作者名:);tip=0;gets(in);fflush(stdin);if(strlen(in)=0) continue;for
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 樂隊訓練第二學期計劃2篇
- 主診醫(yī)師述職報告范文(6篇)
- 中學生繁星春水讀后感
- 高職傷逝課件教學課件
- 探究性閱讀課教案
- 美術大綱課件教學課件
- 輪椅車座椅 第14部分:與外力控制以維持組織完整性有關的概念 征求意見稿
- 農(nóng)小蜂-中國香蕉市場動態(tài)監(jiān)測(2024年10月)
- 八年級上學期語文1月月考試卷
- 初中化學基礎知識與題目(含答案)
- 生活中的工業(yè)設計智慧樹知到期末考試答案章節(jié)答案2024年南開大學
- 化妝品生產(chǎn)工藝驗證報告范文模板-新規(guī)要求工藝參數(shù)及關鍵控制點驗證
- AutoCAD 2018基礎教程綜合實例
- 服務類驗收單
- 城市管理大數(shù)據(jù)平臺 第2部分:數(shù)據(jù)分級分類
- 工程施工合同履約課件
- 《整式的加減》第1課時 教學設計
- 醫(yī)院科研工作計劃及實施方案
- 橋梁結構健康監(jiān)測系統(tǒng)實施和驗收規(guī)范
- 2024安徽交控集團所屬企業(yè)校園招聘筆試參考題庫附帶答案詳解
- 退休項目經(jīng)理返聘合同-工程管理
評論
0/150
提交評論