




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學號2012-2013學年 第二學期高級語言程序設計課程設計報告題目:備忘錄專業:計算機科學與技術班級:姓名:指導教師:成績:計算機與信息工程系年月日0 / 33目錄1設計內容及要求.21.1設計內容.21.2設計任務及具體要求.22概要設計.32.1該系統的功能簡介.32.2 總體程序框圖.32.3各個模塊之間的主要關系.43 3設計過程或程序代碼.53.1各個模塊的程序流程圖及運行界面.53.2對關鍵代碼加以分析說明.74程序調試分析.135小結.14致謝.15參考文獻.16附:源程序.301 設計內容及要求1.1設計內容備忘錄主要根據課程設計要求進行設計,能夠進行個人的事件記錄,可以將程
2、序使用者的時間安排,重要事件,以及個人行程等事件做出具體詳細的記述,并能夠使使用者在程序上完成查看時間的功能,足以使得使用者避免忘記一些重要事件,也可以為使用者帶來一些便利,幫助使用者節省了時間。電子備忘錄相較于筆記本,其最大的好處在于可以不受紙張的限制,并切實的使用者可以在短時間內記述大量事件;查詢時也可以節省大量的時間,使得使用者可以減短查詢時間,方便快捷。同時,使用電子備忘錄也是一種現代化的代表,將電子科技應用與人們的日常生活中,達到現代實惠的先進水平。該系統功能主要包括三大模塊:1) 備忘錄的信息錄入 2)備忘錄信息的查看 3)進出備忘錄系統1.2設計任務及具體要求主要利用C語言的文件
3、操作能力設計開發一個小型的備忘錄系統,至少具有如下功能:備忘錄的信息錄入,備忘錄的信息查詢和退出備忘錄系統。操作界面要符合用戶的一般習慣,圖形或文本界面都可以。要求:利用C語言編寫一個備忘錄程序,能實現一些基本的操作,達到一些基本的信息錄入,查詢,提醒以及編寫等功能,能根據課程設計的要求,查閱相關文獻,為完成設計準備必要的知識; 提高自身用高級語言進行程序設計的能力,重點提高用C語言進行文件操作和繪圖應用的編程技術水平;初步了解軟件開發的一般方法和步驟; 提高撰寫技術文檔的能力。并且對C語言的一些基本語句以及功能有一些更加深刻的認識和理解。能夠利用C語言解決一些生活中的基本問題。2 概要設計2
4、.1系統的功能簡介該系統的主要功能是實現重要信息的錄入,包括錄入的當前時間,事件的重要性以及提醒時間。能夠在設定時間內對使用者提醒,避免使用者忘記重要事件,造成不必要的麻煩。2.2 總體程序框圖備忘錄備忘錄主菜單編輯備忘錄推出備忘錄提 醒 我查詢備忘錄輸入新備忘 通過備忘時間編輯備忘通過備忘名稱編輯備忘通過備忘時間查詢備忘通過備忘名稱查詢備忘 圖2.12.3各個模塊之間的主要關系該程序的功能主要是實現備忘錄的錄入,能在系統內對錄入的信息進行查詢,并對相對重要的相應信息進行提醒。各個模塊之間的關系是相互聯系的。首先,主函數包含了所有的子函數。主函數是整個程序的核心。子函數之間也有聯系的,對重要的
5、信息查詢,必須是在信息錄入的情況下進行的。因此對重要事件信息的錄入時非常重要的。在退出備忘錄系統的子函數之間是沒有多大聯系的。3設計過程或程序代碼3.1各個模塊的程序流程圖備忘錄開始 main()函數開始執行顯示備忘錄主菜單判斷 case 5case 4case 3case 2case 1調用input_memo()函數實現個人備忘輸入功能調用exit(0)退出程序調用search_memo()函數顯示個人備忘查詢功能菜單調用modify_memo()函數顯示個人備忘修改功能菜單調用remind_me()函數顯示個人備忘提醒功能菜單判斷 判斷 case 2case 2case 1case 1調
6、用modify_by_event_date() 函數實現個人備忘的時間時間功能調用modify_ name() 函數實現個人備忘的名稱修改功能調用search_by_ event_date() 函數實現個人備忘的時間查詢功能調用search_by _name() 函數實現個人備忘的名稱查詢功能 圖3.13.2對關鍵代碼加以分析說明1 ) 函數 名稱:main() 函數 功能:實現個人備忘錄的主菜單顯示功能和各個函數功能的調用功能 函數 參數:void 函數返回值:void2 ) 函數 名稱:input_memo()函數 功能:實現個人備忘內容的輸入功能函數 參數:void函數返回值:void3
7、 ) 函數 名稱:search_memo()函數 功能:實現個人備忘內容查詢功能的菜單函數 參數:void函數返回值:void4 ) 函數 名稱:search_by_name() 函數 功能:實現個人備忘內容通過備忘名稱查詢的功能 函數 參數:void 函數返回值:void5 ) 函數 名稱:search_by_event_date()函數 功能:實現個人備忘內容通過備忘時間查詢的功能函數 參數:void函數返回值:void6 ) 函數 名稱:modify_memo() 函數 功能:實現個人備忘內容修改功能的菜單 函數 參數:void 函數返回值:void7 ) 函數 名稱:modify_by
8、_name() 函數 功能:實現個人備忘內容通過備忘名稱修改的功能 函數 參數:void 函數返回值:void8 ) 函數 名稱:modify_by_event_date() 函數 功能:實現個人備忘內容通過備忘時間修改的功能函數 參數:void函數返回值:void9 ) 函數 名稱:remind_me()函數 功能:實現個人備忘的提醒功能函數 參數:void函數返回值:void4設計結果與分析1) 運 行 備 忘 錄 程 序運行程序,進入備忘錄系統的主菜單,按照系統提示進行操作,完成系統的操作圖4.1 2) 輸入數字進行菜功能的選擇,輸入數字1,執行輸入新備忘的功能,調用輸入新備忘的函數顯示
9、結果如下:圖4.23)輸入數字2,執行個人備忘的查詢功能,調用備忘查詢函數,顯示備忘查詢的功能菜單。結果如下:圖4.3 4)輸入數字1,執行通過個人備忘的名稱查詢功能,調用備忘名稱查詢函數,顯示通過備忘名稱查詢的結果,如下:圖4.45)輸入數字2,執行通過個人備忘的時間查詢功能,調用備忘時間查詢函數,顯示通過備忘時間查詢的結果,如下:圖4.5 6)返回主菜單,輸入數字3,執行個人備忘的修改功能,調用備忘修改函數,顯示備忘修改的功能菜單。結果如下: 圖4.67)輸入數字1,執行通過個人備忘的名稱修改功能,調用備忘名稱修改函數,顯示通過備忘名稱修改的結果,如下: 圖4.78)輸入數字2,執行通過個
10、人備忘的時間修改功能,調用備忘時間修改函數,顯示通過備忘時間修改的結果,如下:圖4.89)返回主菜單,輸入數字4,執行個人備忘的提醒功能,調用備忘提醒函數,顯示備忘提醒的功能菜單。結果如下:圖4.9 當把程序寫好并進行調試時,并不是一帆風順的,總會遇到很多在調試時遇到的錯誤。(1)首先在定義函數時,不能輸入漢字。否則會程序會顯示錯誤。(2)如果要調用查詢函數,增詞函數,刪除函數,修改函數等要在主函數前面進行申明,否則會顯示警告。(3)如果程序在運行的過程中,對于一個循環語句,如果你返回的值始終是真的,那么程序將進如死循環。(4)對應該有花括弧的復合語句,忘記加花括弧。 (5)所調用的函數在調用
11、語句之后才定義,而又在調用前未加說明。5 小 結 在這次的課程設計中,我利用C語言完成了一個小型的備忘錄系統,能夠對信息進行錄入與查詢,并能夠提醒用戶。通過實驗,基本上掌握了C語言的基本用法與功能。對于所學知識有了更深的認識。 在本課程設計的設計過程中,我剛開始感覺到有點頭痛。要通過一學期C語言的學習后將所學知識運用起來有點困難,但回過頭來再去看教課書,對于這些知識點有關的背景,概念和解決方案更進一步的理解,感覺也不是很難。另外我還體會了從事C語言課程設計工作需要特別謹慎認真地態度和作風,一點都不能馬虎。每個細微的細節都必須十分注意,如果不認真思考,就會出現或大或小的錯誤。如果把早期的錯誤隱藏
12、下來,對后面的工作影響就會很大,甚至有時會推倒很多前面做的工作。有時候,我自己覺得我寫的程序非常正確,但是就是編譯通不過,在查找錯誤的過程中,面臨著否認自己的過程,非常的痛苦,而且由于自己的經驗及各方面的能力的不足,所以進展的速度非常的緩慢,往往幾天的時間沒有一點進展。這時候,我一般是先自己通過書本,手冊和資料找解決辦法,實在沒轍才向老師同學請教。 在開始編寫程序的時候,我看到別人的程序功能非常的詳細,而且界面非常漂亮,總是希望自己的程序也非常的完善,但是,發現編一個好的程序不是一蹴而就的事情,需要長時間的積累和經驗。在反反復復的學習中,我終于作出一個簡單的程序,雖然這個程序的功能非常簡單,而
13、且在實際運用中還有些不足,因為工資的的內容非常豐富,我涉及到的僅僅是工資管理的一部分簡單內容,離實際的客戶需求肯定還有差距。由于我的知識淺薄,經驗不足及閱歷頗淺,在該系統的設計方面還有很多不足,比如功能過少,界面不醒目等問題,我會在以后的學習過程中,根據具體要求不斷的修改、完善,爭取使系統慢慢趨于完美。致謝在這次C語言課程設計中,我遇到了一些困難,因為通過書本以及自身的不足所難以解決。所以我想任課老師進行了詢問。他給予了我一些代碼以及注意事項上的幫助,使我能夠完成這次課程設計。在此,我對他們表示感謝!感謝他們在我面對困難時給了我幫助和支持。也感謝那些給我幫助的所有同學!參考文獻1譚浩強著.C程
14、序設計.清華大學出版社,1999年第二版2譚浩強,張基溫,唐永炎編著.C語言程序設計.高等教育出版社,19923譚浩強編著.QBASIC語言教程.電子工業出版社,19974譚浩強.C程序設計M.清華大學出版社,20055Herbert Schildt著.戴健鵬譯.C語言大全.電子工業出版社,1994年第二版6美SCHILDTH.C語言大全M.王子恢等譯.電子工業出版社,2001源程序#include<stdio.h> #include<string.h>#include<stdlib.h> #define Namelength 60 #define Date
15、length 50 #define Contentlength 800 struct memo char nameNamelength; char event_dateDatelength; char contentContentlength; char remind_dateDatelength; ;void input_memo(); void search_memo();void modify_memo();void modify_name();void modify_by_event_date();void remind_me();void remind();void search_b
16、y_name();void search_by_event_date();void main()FILE *fp; int number_menu; char a;printf("nn*-*-*-* 歡 迎 使 用 備 忘 錄 *-*-*-*n"); loop:printf("nn*-*-*-* 備 忘 錄 主 菜 單 *-*-*-*n"); printf(" ="); printf("n 1 輸 入 新 備 忘; "); printf("n "); printf("n 2 查 詢 備
17、 忘; "); printf("n "); printf("n 3 編 輯 備 忘; "); printf("n "); printf("n 4 提 醒 我; ");printf("n "); printf("n 5 退 出 備 忘; n"); printf(" ="); printf("n請 輸 入 菜 單 功 能 的 數 字:"); a = getch(); if(a>='1'&&a&
18、lt;='5') printf("nn您 輸 入 的 數 字 是 : %c",a); number_menu = (a - '0'); else printf("nn您 輸 入 的 數 字 是 : %c",a); printf("nn對 不 起,您 的 輸 入 有 誤,請 輸 入 正 確 的 菜 單 功 能 數 字,謝 謝。n"); goto loop; switch(number_menu) case 1:input_memo(); goto loop; case 2:search_memo(); g
19、oto loop; case 3:modify_memo(); goto loop; case 4:remind_me(); goto loop; case 5:exit(0);default:printf("n對 不 起,您 的 輸 入 有 誤,請 輸 入 正 確 的 菜 單 功 能 數 字,謝 謝。n"); goto loop; void input_memo() struct memo m;FILE *fp;if(fp=fopen("memo","a")=NULL)printf("對 不 起,無 法 打 開 文 件!n
20、");exit(1);printf("nn請 輸 入 新 備 忘。 (如 果 您 想 返 回 上 級 菜 單,請 輸 入 0。):n");printf("n請 輸 入 新 的 備 忘 名 稱:");scanf("%s",);while(strcmp(,"0")printf("n請 輸 入 新 的 備 忘 時 間:");scanf("%s",m.event_date);printf("n請 輸 入 新 的 備 忘 內 容:"
21、);scanf("%s",m.content);printf("n請 輸 入 新 的 備 忘 提 醒 時 間:");scanf("%s",m.remind_date);fprintf(fp,"name:%snevent_date:%sncontent:%snremind_date:%sn", ,m.event_date,m.content,m.remind_date);printf("=");printf("n您 輸 入 的 新 備 忘 是:nn");printf
22、("名 稱:%snn",);printf("備 忘 時 間:%snn",m.event_date);printf("備 忘 內 容:%snn",m.content);printf("提 醒 時 間:%snn",m.remind_date);printf("=");printf("n恭 喜 您,新 備 忘 已 經 輸 入 成 功!n");printf("n請 輸 入 另 一 個 新 備 忘! (如 果 您 想 返 回 上 級 菜 單,請 輸 入 0。):n
23、");printf("n請 輸 入 新 的 備 忘 名 稱:");scanf("%s",);fclose(fp); void search_memo() int sm; char a; loop:printf("nn*-*-*-*-* 查 詢 備 忘 *-*-*-*-*n"); printf("n1 通 過 備 忘 名 稱 查 詢;n"); printf("n2 通 過 備 忘 時 間 查 詢;n");printf("n3 返 回 上 級 菜 單;nn"
24、); printf("n請 輸 入 菜 單 上 的 數 字 :");a = getch(); if(a>='1'&&a<='3') printf("nn您 輸 入 的 數 字 是 : %c",a); printf("n"); sm = (a - '0'); else printf("nn您 輸 入 的 數 字 是 : %c",a); printf("nn對 不 起,您 的 輸 入 有 誤,請 輸 入 正 確 的 菜 單 功 能 數
25、 字,謝 謝。n"); goto loop; switch(sm)case 1:search_by_name(); goto loop; case 2:search_by_event_date(); goto loop; case 3:break;default:printf("n對 不 起,您 的 輸 入 有 誤,請 輸 入 正 確 的 菜 單 功 能 數 字,謝 謝。nn");goto loop; void search_by_name() struct memo i;FILE *fp;int j=0, k=0, l=0;char nameNamelength
26、='n','a','m','e',':'char new_nameNamelength;if(fp=fopen("memo","r")=NULL)printf("對 不 起,無 法 打 開 文 件!n");exit(1);printf("n請 輸 入 需 要 查 詢 的 備 忘 名 稱 ( 返 回 上 級 菜 單,請 輸 入 0 ):");scanf("%s",new_name);if (new_name != 0)
27、for(j=0; j<sizeof(new_name); )if(new_namej='n')break;else j+;for(l=0; l<j; l+)name5+l=new_namel;while(! feof(fp)fscanf(fp,"%s%s%s%sn",,i.event_date,i.content,i.remind_date);if(!strcmp(name,)printf("n已 經 查 到,結 果 如 下:n");printf("=");printf("
28、n您 查 詢 的 結 果 是 :nn");printf("%snn",);printf("%snn",i.event_date);printf("%snn",i.content);printf("%snn",i.remind_date);printf("=");k=1;break; if(!k)printf("n對 不 起,沒 有 查 詢 結 果!請 重 新 輸 入,謝 謝。n");fclose(fp);void search_by_event_date
29、() struct memo i;FILE *fp;int j=0,k=0,l=0; char event_dateDatelength='e','v','e','n','t','_','d','a','t','e',':'char new_event_dateDatelength;if(fp=fopen("memo","r+")=NULL)printf("n對 不 起,
30、無 法 打 開 文 件!n");exit(1);printf("n請 輸 入 需 要 查 詢 的 備 忘 時 間 (返 回 上 級 菜 單,請 輸 入 0 ):");scanf("%s",new_event_date);if (new_event_date != 0)for(j=0;j<sizeof(new_event_date);)if(new_event_datej='n')break;else j+;for(l=0; l<j; l+)event_date11+l=new_event_datel; while(!
31、feof(fp)fscanf(fp,"%s%s%s%s",,i.event_date,i.content,i.remind_date);if(!strcmp(event_date,i.event_date)printf("n已 經 查 到,結 果 如 下:n");printf("=");printf("n您 查 詢 的 結 果 是 :nn");printf("%snn",);printf("%snn",i.event_date);printf(&quo
32、t;%snn",i.content);printf("%snn",i.remind_date);printf("=");k=1;break;if(!k) printf("n對 不 起,沒 有 查 詢 結 果!請 重 新 輸 入,謝 謝。n");fclose(fp);void modify_memo() int mb;char a;loop:printf("nn*-*-*-* 編 輯 備 忘 *-*-*-*n"); printf("n1 通 過 備 忘 名 稱 編 輯;n"); prin
33、tf("n2 通 過 備 忘 時 間 編 輯;n"); printf("n3 返 回 上 級 菜 單;n"); printf("n請 輸 入 菜 單 上 的 數 字 :"); a = getch(); if(a>='1'&&a<='3') printf("nn您 輸 入 的 數 字 是 :%cn",a); mb = (a - '0'); else printf("nn您 輸 入 的 數 字 是 :%c",a); prin
34、tf("nn對 不 起,您 的 輸 入 有 誤,請 輸 入 正 確 的 菜 單 功 能 數 字,謝 謝。n"); goto loop; switch(mb)case 1:modify_name(); goto loop;case 2:modify_by_event_date(); goto loop;case 3:break;default:printf("n對 不 起,您 的 輸 入 有 誤,請 輸 入 正 確 的 菜 單 功 能 數 字,謝 謝。nn"); goto loop;void modify_name() struct memo i;FILE
35、 *fp;int j=0,k=0,l=0;long offset; char nameNamelength='n','a','m','e',':'char new_nameNamelength;printf("n請 輸 入 您 要 修 改 的 備 忘 名 稱:");scanf("%s",new_name);for(j=0;j<sizeof(new_name);)if(new_namej='n')break;else j+;for(l=0; l<j;
36、 l+)name5+l=new_namel; if(fp=fopen("memo","r+")=NULL)printf("n對 不 起,無 法 打 開 文 件!n");exit(1);while(!feof(fp)offset=ftell(fp);fscanf(fp,"%s%s%s%s",,i.event_date,i.content,i.remind_date);if(!strcmp(name,)k=1;break;if(k)printf("n已 經 查 到,結 果 如 下:n&
37、quot;);printf("=");printf("n您 查 詢 的 結 果 是 :nn");printf("%snn",);printf("%snn",i.event_date);printf("%snn",i.content);printf("%snn",i.remind_date);printf("=");printf("n請 輸 入 新 備 忘 n");printf("=");printf(&q
38、uot;n請 輸 入 新 備 忘 的 名 稱 :");scanf("%s",);printf("n請 輸 入 新 備 忘 的 時 間 :");scanf("%s",i.event_date);printf("n請 輸 入 新 備 忘 的 內 容 :");scanf("%s",i.content);printf("n請 輸 入 新 備 忘 的 提 醒 時 間 :");scanf("%s",i.remind_date);fseek(fp,
39、offset,SEEK_SET);fprintf(fp,"nname:%snevent date:%sncontent:%snremind_date:%sn", ,i.event_date,i.content,i.remind_date);printf("n恭 喜 您,編 輯 成 功!n");printf("=n");elseprintf("n對 不 起,沒 有 查 詢 結 果,請 重 新 輸 入,謝 謝。");fclose(fp); void modify_by_event_date() struct
40、 memo i;FILE *fp;int j=0,k=0,l=0;long offset; char event_dateDatelength='e','v','e','n','t','_','d','a','t','e',':'char new_event_dateDatelength;printf("n請 輸 入 您 要 修 改 的 備 忘 時 間 :");scanf("%s"
41、,new_event_date);for(j=0;j<sizeof(new_event_date);)if(new_event_datej='n')break;else j+;for(l=0; l<j; l+)event_date11+l=new_event_datel;if(fp=fopen("memo","r+")=NULL)printf("n對 不 起,無 法 打 開 文 件!n");exit(1);while(!feof(fp)offset=ftell(fp);fscanf(fp,"%s%
42、s%s%s",,i.event_date,i.content,i.remind_date);if(!strcmp(event_date,i.event_date)k=1;break; if(k)printf("n已 經 查 到,結 果 如 下:n");printf("=");printf("n您 查 詢 的 結 果 是 :nn");printf("%snn",);printf("%snn",i.event_date);printf("%snn"
43、;,i.content);printf("%snn",i.remind_date);printf("=");printf("n請 輸 入 新 備 忘 n");printf("=");printf("n請 輸 入 新 備 忘 的 名 稱 :");scanf("%s",);printf("n請 輸 入 新 備 忘 的 時 間 :");scanf("%s",i.event_date);printf("n請 輸 入 新 備 忘 的 內 容 :");scanf("%s",i.content);printf("n請 輸 入 新 備 忘 的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西工程職業學院《生物醫學數據處理與統計分析》2023-2024學年第二學期期末試卷
- 齊魯醫藥學院《公共空間設計》2023-2024學年第二學期期末試卷
- 湖北工業大學《游戲原畫設計》2023-2024學年第二學期期末試卷
- 湖南鐵道職業技術學院《財政學專業英語》2023-2024學年第二學期期末試卷
- 四川工商學院《方劑學A》2023-2024學年第二學期期末試卷
- 江西環境工程職業學院《中西醫結合傳染病學》2023-2024學年第二學期期末試卷
- 陜西國際商貿學院《醫學機能學實驗》2023-2024學年第二學期期末試卷
- 南通大學《傳染病學(含小兒)A》2023-2024學年第二學期期末試卷
- 浙江工業職業技術學院《運籌學Ⅱ》2023-2024學年第二學期期末試卷
- 西安理工大學《翻譯簡史》2023-2024學年第二學期期末試卷
- 中學化學實驗員培訓材料
- 30題投資管理類崗位常見面試問題含HR問題考察點及參考回答
- 校園網絡運維服務需求
- 2023調度自動化系統主站信息自動聯調技術規范
- 物流公司運輸安全管理制度
- 三個合伙人分配合同范本
- PLC課程設計-四人搶答器
- 資產管理+數據資產確權登記導則(2022年)
- SL637-2023年《水力機械輔助設備系統安裝工程施工質量驗收評定標準》
- 油霧潤滑操作規程及要求
- 漿料回收工藝及流程
評論
0/150
提交評論