雜志訂閱4 -- 課程設計報告_第1頁
雜志訂閱4 -- 課程設計報告_第2頁
雜志訂閱4 -- 課程設計報告_第3頁
雜志訂閱4 -- 課程設計報告_第4頁
雜志訂閱4 -- 課程設計報告_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 測控技術與儀器 專業(yè)課程設計題單 班級 學號 姓名 課程名稱 計算機課程設計 課 題 雜志訂閱管理系統(tǒng) 設計要求 (1)分組后,每組抽取一個題目,每人完成該題目 的一個功能模塊的設計; (2)鋸齒型書寫格式,菜單式界面 ; (3)必須上機調(diào)試通過; (4)每人單獨完成一份完整的課程設計報告。 課 題 發(fā) 給 日 期 課程設計完成日期 指 導 教 師 評語: 計算機課程設計細則一、設計要求:1、分組后,每組抽取一個題目,每人完成該題目的一個功能模塊的設計。2、模塊化程序設計,鋸齒型書寫格式。3、輸出要求: 1) 應用程序正常運行后,要在屏幕上顯示一個文字菜單;2) 要求用戶輸入數(shù)據(jù)時,要給出清

2、晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式等;3)為各項操作功能設計一個菜單,應用程序運行后,先顯示這個菜單,然后用戶通過菜單項選擇希望進行的操作項目。4、必須上機調(diào)試通過。二、設計報告格式:寫設計報告(要求正規(guī)打印,A4幅面),內(nèi)容包括:1、題目(封面)2、計算機課程設計細則3、前言,需求分析(鼓勵設置目錄)4、概要設計(程序設計組成框圖、流程圖)5、詳細設計(模塊功能說明(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關系描述等)6、源程序清單和執(zhí)行結果:清單中應有足夠的注釋7、用戶使用說明8、調(diào)試與測試:調(diào)試方法,測試結果及采取的解決措施的分析與討論。9、附錄或參考資料 三、檢查要求:1、每

3、個人必須有可運行的程序2、每個人必須單獨完成一份完整的課程設計報告。(打印稿)四、打分標準:1、教師定期檢查學生進度,學生不得以自己有私人電腦為借口而不來上機。2、根據(jù)程序運行結果;3、根據(jù)計算機課程設計報告,學生能正確并熟練地解釋清楚教師對程序的提問。以上三項缺一不可,否則不能到得相應學分。雜志訂閱管理系統(tǒng)設有一本雜志,該雜志最多擁有訂戶不超過10戶,每個訂戶的信息包括:姓名,訂戶編號,性別,電話號碼,訂閱數(shù),訂閱日期,訂閱期限(某年某月) ,設計一雜志訂閱管理系統(tǒng) ,系統(tǒng)以菜單方式工作,能提供以下功能:1、錄入訂戶信息到文件由李琴波完成2、主界面及瀏覽所有訂戶信息由周鑫完成3、查詢功能(至

4、少實現(xiàn)兩種方式):如:按訂戶編號查詢、按訂閱期限查詢等由李永健完成4、修改功能:修改訂戶信息 由程蔚濯完成5、刪除功能:刪除已到期的訂戶記錄 由饒雅清完成6、統(tǒng)計功能:統(tǒng)計本期雜志訂戶數(shù)和訂閱總量等由張佩利完成附一:時間安排表教學內(nèi)容學時地點備注設計動員,布置任務0.5天1021118周周一上午查閱資料,分析、討論與設計1天圖書館、1021118周周一下午至周二上午集體討論0.5天1021118周周二下午編寫程序,進行調(diào)試4天1021118周周三至19周周一完成模塊聯(lián)調(diào),進行測試2天1021119周周二至周三成果驗收,完成設計報告2天1021119周四至周五本人完成統(tǒng)計功能模塊設計雜志訂閱管理

5、系統(tǒng)課程設計目 錄一、前言-5 1.1 特色-5二、需求分析-6 2.1 系統(tǒng)目標-6 2.2 運行環(huán)境-6 2.3 用戶特點-6 2.4 功能要求-6三、概要設計-7四、主界面流程圖-9五、統(tǒng)計訂戶信息流程圖-10六、詳細設計-11七、數(shù)據(jù)結構設計-11八、源程序清單-12 8.1 源代碼-12 8.2 統(tǒng)計程序源代碼-16九、用戶使用說明-18十、調(diào)試與測試-22 10.1 邏輯調(diào)試-22 10.2 語法調(diào)試-22 10.3 測試結果-22 10.4 采取的解決措施的分析與討論-22十一、心得體會-24十二、參考文獻-25一、前言 C語言是一個程序語言,設計目標是提供一種能以簡易的方式編譯

6、、處理低階內(nèi)存、產(chǎn)生少量的機械碼以及不需要任何執(zhí)行環(huán)境支援便能執(zhí)行的編程語言。C語言也很適合搭配匯編語言來使用。盡管C語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱MCU)以及超級電腦等作業(yè)平臺。1.1特色: C語言是一個有結構化程式設計、具有變量作用域(variable scope)以及遞歸功能的過程式語言。 傳遞參數(shù)是以值傳遞(Pass-by-value),也可以透過指針來傳遞參數(shù)(Pass-by-address)。 不同的變量類型可以用結構體(struct)組合在一起。 只有32

7、個保留字(reserved keywords),使變量、函數(shù)命名有更多彈性。 部份的變量類型可以轉(zhuǎn)換,例如整型和字符型變量。 透過指針(pointer),C語言可以容易的對內(nèi)存進行低階控制。 編譯預處理(preprocessor)讓C語言的編譯更具有彈性。二、需求分析2.1系統(tǒng)目標本系統(tǒng)總體目標是運用該管理系統(tǒng),對一期雜志的訂閱用戶信息進行統(tǒng)一,方便的管理。在設計該管理系統(tǒng)的過程中,應實現(xiàn)以下操作:1) 程序正常運行后,在屏幕上顯示一個文字菜單;2)用戶輸入數(shù)據(jù)時,給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式等;3)應用程序運行后,先顯示主菜單,用戶可以根據(jù)菜單選擇所需操作,繼而完成相應

8、的操作。4)具有較高的可靠性和可用性;5)使用方便,直觀且便于操作;6)系統(tǒng)易于管理維護。2.2 運行環(huán)境 一臺能運行.exe可執(zhí)行文件和讀取txt文本文檔的計算機或其他電子設備。2.3 用戶特點 具備基礎的計算機操作技能、了解簡單的英語單詞。2.4 功能需求1)錄入訂戶信息到文件2)主界面及瀏覽所有訂戶信息3)查詢功能(至少實現(xiàn)兩種方式): 如:按訂戶編號查詢、按訂閱期限查詢等4)修改功能:修改訂戶信息 5)刪除功能:刪除已到期的訂戶記錄 6)統(tǒng)計功能:統(tǒng)計本期雜志訂戶數(shù)和訂閱總量等三、概要設計雜志訂閱管理系統(tǒng)按姓名查找訂戶信息按訂戶編號查找訂戶信息瀏覽所有訂戶信息添加新訂戶信息刪除訂戶信息

9、修改訂戶信息統(tǒng)計本期雜志訂戶數(shù)統(tǒng)計本期雜志訂閱總量退出 程序框圖1. 主要的結構體為node,包括用戶的基本信息:姓名,訂戶編號,性別,地址,電話號碼,訂閱數(shù)和訂閱期限。全局變量為結構體變量typedef struct entry。主函數(shù)采用while循環(huán)語句,9個語句分別對應9個子函數(shù),操作簡單方便。2. 調(diào)用void insert()函數(shù),增加新訂戶。打開文件,采用while語句判斷用戶數(shù)是否超過10個,若沒有,采用for循環(huán)依次寫入需添加的用戶信息并保存,即完成添加用戶功能。3. 調(diào)用int del()函數(shù),刪除到期訂戶記錄。采用while語句依次檢查文件中的到期用戶,采用if判斷語判斷

10、系統(tǒng)中是否存在到期用戶,若存在,刪除其用戶信息并保存。即完成刪除操作。4. 調(diào)用int customerNum()和int orderNum()函數(shù),統(tǒng)計雜志訂閱用戶數(shù)和訂閱總量。主要采用while循環(huán)語句依次統(tǒng)計訂戶數(shù)和訂閱總量并輸出,即完成統(tǒng)計操作。5. 調(diào)用void modify()函數(shù),修改訂戶信息。用While循環(huán)語句依次查找文件中需要修改的用戶,用if語句判斷所需修改用戶是否存在并逐次修改其信息并保存,即實現(xiàn)修改功能。6. 調(diào)用void showlist()函數(shù),瀏覽所有訂戶信息。在程序運行開始時鍵入“hello”時系統(tǒng)會顯示一次當前訂戶信息,按3調(diào)用模塊時,用指針P依次指向文件中

11、信息,并依次輸出信息。7. 調(diào)用int searchbyName()和int searchByid()函數(shù),以姓名和訂戶編號查找用戶信息。采用while循環(huán)語句依次查找系統(tǒng)中所存在的所有用戶,采用if語句判斷是否存在所查找用戶并輸出。8. 調(diào)用void tuichu()函數(shù),退出并判斷是否保存當前訂戶信息。在程序運行結束時,系統(tǒng)會自動根據(jù)用戶需求做出相應的響應,即完成是否(y/n)保存操并退出系統(tǒng)。四、主界面流程圖:開始提示驗證信息(Hello)輸入password,判斷是否為Hello?根據(jù)i值調(diào)用相應功能模塊函數(shù)結束五、統(tǒng)計訂戶信息流程圖:開始進入主界面,選擇統(tǒng)計功能判斷p計數(shù)器累加輸出計

12、數(shù)值結束六、詳細設計雜志訂閱管理系統(tǒng)該系統(tǒng)管理一期雜志,最多訂戶不超過10戶,其訂戶信息包括:姓名,訂戶編號,性別,電話號碼,訂閱數(shù),訂閱日期,訂閱期限(某年某月),此外,該系統(tǒng)以菜單方式工作,提供以下功能:1、錄入訂戶信息到文件2、主界面及瀏覽所有訂戶信息3、查詢功能(能夠?qū)崿F(xiàn)兩種查詢方式): 即按訂戶編號查詢、按訂戶姓名查詢等4、修改功能:修改訂戶信息 5、刪除功能:刪除已到期的訂戶記錄 6、統(tǒng)計功能:統(tǒng)計本期雜志訂戶數(shù)和訂閱總量。七、數(shù)據(jù)結構設計:在整個程序中采用了多種數(shù)據(jù)類型:整型int 整型 長整型long基本類型字符型 char空類型 viod 數(shù)據(jù)類型 構造類型 結構體類型( s

13、truct | )指針類型 ( T * )、數(shù)組、鏈表八、源程序清單8.1源代碼:#include /*標準輸入輸出頭文件*/#include /*申請動態(tài)內(nèi)存頭文件*/#include /*字符串頭文件*/int flag=0; /*定義整型變量flag并賦值0*/typedef struct entry /*聲明結構體*/ char id30; /*定義字符型數(shù)組*/ char gender; /*定義字符型變量*/char name20; /*定義字符型數(shù)組*/long tele; /*定義長整型變量*/int quantity; /*定義整型變量*/ char date20; /*定義

14、字符型數(shù)組*/ char dueDate20; /*定義字符型數(shù)組*/ struct entry *next; /*定義指向entry結構體的指針*/node;node *head, *tail; /* 頭指針,尾指針指向node中的結構體*/ void draw_service() /* service 菜單模塊*/ printf(t*n); printf(t* *n); printf(t* Welcome to Magzine Customer Managment System *n); printf(t* *n); printf(t*n); printf(nnnn); printf(*n

15、); /*輸出*/printf(* please choose a service *n); printf(* *n); printf(* 1.-serach by name *n); printf(* 2.-serach by id *n); printf(* 3.-display *n); printf(* 4.-add new record *n); printf(* 5.-delete *n); printf(* 6.-modify *n); printf(* 7.-show customer number *n); printf(* 8.-show magzine quantity

16、*n); printf(* 9.-exit *n); printf(* *n); printf(*n);void read() int i; /*定義整型變量i*/node *p, *s, *pre; /*定義三個指向結構體的指針變量*/FILE *fp=NULL; /*將NULL賦給指向文件的指針*/if (fp = fopen(info.txt,r+) = NULL) /*以讀寫方式打開文件,打開失敗返回NULL*/ printf(ERROR openning filen); /*輸出信息*/ system(pause); /*系統(tǒng)暫停*/ return; p=head; s=head;

17、/*將頭指針的起始地址賦給指針變量p,s*/i = 0;printf(Reading records from filen);while ( (fscanf(fp,%s %s %c %ld %d %s %s, /*將fp指定的文件按給定格式輸入數(shù)據(jù)送到指定內(nèi)存單元*/ p-id, p-name, &p-gender, &p-tele, &p-quantity ,p-date, p-dueDate) != EOF)printf(No.%dt id:%st name:%st gender:%ct telephone: %ldt quantity:%dt issueDate:%st dueDate:

18、%snn, i,p-id, p-name, p-gender, p-tele, p-quantity, p-date, p-dueDate);i+;flag+;if(i=10)printf(用戶最多只能十個n);break;s = (node *)malloc(sizeof(node); /*分配字節(jié)存儲區(qū)*/pre = p;p-next = s;p = s;pre-next = NULL;free(s); /*釋放內(nèi)存*/p-next=NULL;tail = pre; fclose(fp); /*關閉文件*/ printf(File Reading Succeeded!n);system(p

19、ause); /*系統(tǒng)暫停*/int main()system(color 3f); /*設置背景色及字體色*/ char password20 = hello , inputpass20; /*定義一個字符型數(shù)組*/ int choice; head=(node *)malloc(sizeof(node); /*head為動作指針,申請內(nèi)存空間,分配SIZE字節(jié)的內(nèi)存區(qū)*/ while (1) /*當表達式為非0時,執(zhí)行while語句中的內(nèi)嵌語句 */ printf(t*n);printf(t* *n);printf(t* Welcome to Magzine Customer Managm

20、ent System *n);printf(t* *n);printf(t*n);printf(please input the Password(the password is hello)n);scanf(%s, inputpass); /*從鍵盤輸入通行字*/ if (strcmp(password,inputpass) = 0) /*判斷通行字是否正確*/break; else system(cls); /*清屏*/printf(nWrong Password please try againn); /*輸出提示語句*/ read(); /*調(diào)用read函數(shù)*/int count =

21、0; /*定義一個整形變量count,將0賦給這個變量 */while (1) /*當表達式為非0時,執(zhí)行while語句中的內(nèi)嵌語句 */system(cls); /*清屏*/ system(color 2f); /*設置背景色及字體色*/draw_service(); /*調(diào)用draw_service()模塊*/scanf(%d, &choice); switch (choice) /*利用switch語句實現(xiàn)多分支選擇結構*/ case 1: searchbyName(); break; /*實現(xiàn)按姓名查找操作*/ case 2: searchbyid(); break; /*按訂戶編號信

22、息查找*/ case 3: showlist();break; /*瀏覽所有訂戶信息 */ case 4: insert(); break; /*錄入訂戶信息*/ case 5: del();break; /*刪除訂戶信息*/ case 6: modify();break; /*修改訂戶信息*/ case 7: system(cls); count = customerNum(); /*清屏,將訂戶總數(shù)賦給count*/ printf(There are %d customers.n, count); /*輸出count值*/ system(pause);break; /*系統(tǒng)暫停,按任意鍵繼

23、續(xù)*/ case 8: system(cls); count = orderNum(); /*清屏,將訂戶數(shù)賦給count*/ printf(There are %d magzine ordered.n, count); /*輸出count*/ system(pause);break; /*系統(tǒng)暫停,按任意鍵繼續(xù)*/ case 9: writefile(); break; /*保存當前信息*/ case 10: exit();return 0; /*退出*/ return 0;8.2統(tǒng)計模塊源代碼:int customerNum() node *p; p = head; /* 將頭指針head

24、的起始地址賦給指針p */ int count = 0; while (p) count+; p = p-next; /*使p指向下一個結點*/ return count;int orderNum() node *p; int count = 0; p = head; while (p) count += p-quantity; p = p-next; return count;九、用戶使用說明用戶運行程序后,需按要求從鍵盤輸入通行字“hello”,驗證通過后可瀏覽當前所有訂戶信息(姓名,訂戶編號,性別,電話號碼,訂閱數(shù),訂閱日期,訂閱期限),按任意鍵,進入選擇菜單,根據(jù)用戶需求從鍵盤輸入相應

25、數(shù)字調(diào)用相應模塊,實現(xiàn)訂戶所需服務。退出時,系統(tǒng)會自動輸出提示語以判斷是否(y/n)需要保存添加,修改,或者刪除后的用戶信息并作出相應選擇。完成用戶需求后,按任意鍵退出即可。運行界面十、調(diào)試與測試10.1 邏輯調(diào)試設計主界面時需要先判斷當前文件中是否存有內(nèi)容,有則直接進行各功能的選擇和函數(shù)的調(diào)用,沒有則先錄入信息再進行各功能的選擇和函數(shù)的調(diào)用。當函數(shù)調(diào)用完成后必須要進行保存。10.2語法調(diào)試在寫好程序后,進行上機調(diào)試中有許多由于疏忽而造成的錯誤。1)定義變量類型錯誤,用戶姓名應該定義為字節(jié)類型。2)當語句結束時,最后不能忽略分號。3)不同程序段調(diào)用相同函數(shù)的函數(shù)名要統(tǒng)一,對于不同函數(shù)要用到相同

26、的數(shù)據(jù)時, 定義此數(shù)據(jù)的變量也要統(tǒng)一。4)當字符串進行比較是否相等時,不能用“=”來進行比較,必須用strcmp來進行比較,strcmp是用于字符串比較的,而“=”是用于數(shù)據(jù)比較的。5) 清屏功能必須要寫在函數(shù)段的輸出前才有效,并且每個函數(shù)段都要用到清屏功能。6)主界面的設計當中也要進行對文件的輸入、讀取和保存的使用。7)在程序結束之前,要保存文件以免丟失文件。10.3 測試結果經(jīng)過反復的調(diào)試之后,對每一個錯誤和警告進行修改,對每一個函數(shù)的功能進行分析,對各模塊之間的函數(shù)關系進行整理,逐個改正錯誤,使得調(diào)試成功!10.4 采取的解決措施的分析與討論(1)在編寫復雜的程序時要多利用函數(shù),用一個函

27、數(shù)來實現(xiàn)一個單獨的功能。各函數(shù)之間除用參數(shù)傳遞數(shù)據(jù)外,盡量少出現(xiàn)耦合關系,便于分別檢查和處理。(2)編譯時出現(xiàn)語法錯誤的信息,調(diào)試時根據(jù)提示信息找出程序中出錯之處并進行逐一分析改正,直至無錯誤出現(xiàn)。(3)運行結果錯誤時,大多屬于邏輯錯誤。我們采用以下辦法:將程序與流程圖仔細對照,如果流程圖是正確的,程序?qū)戝e了,是很容易發(fā)現(xiàn)的。例如,復合語句忘記寫花括弧,只要一對照流程圖就能很快發(fā)現(xiàn)。果正確與否。實在找不到錯誤,可以采用“分段檢查”的方法。在程序不同的位置設幾個printf函數(shù)語句,輸出有關變量的值,逐段往下檢查。直到找到在某一段中數(shù)據(jù)不對為止。這時就已經(jīng)把錯誤局限在這一段中了。不斷減小“查錯區(qū)”,就能發(fā)現(xiàn)錯誤所在。也可以用“條件編譯”命令進行程序調(diào)試(在程序調(diào)試階段,若干printf函數(shù)語句就要進行編譯并執(zhí)行。當調(diào)試完畢,這些語句不用再編譯了,也不再被執(zhí)行了)。這種方法可以不必一一去掉

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論