




已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
xxxxxxx高級語言課程設計實驗報告系 別:xxxxxxxx專業(yè)班級:xxxxxxxxx學 號:xxxxxxxxxxx班內(nèi)序號:xx姓 名:xxxx指導老師:xxxxxxxxx 實驗課題:學生通訊信息管理系統(tǒng)實驗時間:2008.6.102008.6.202008年6月17日一、實驗目的1. 熟悉c語言的編譯,鏈接和運行過程;2. 掌握c語言的數(shù)據(jù)類型,熟悉整型、實型、字符型變量的定義方式及如何給它們賦值,掌握不同的類型數(shù)據(jù)之間的賦值規(guī)律,賦值使用方法;3. 掌握if語句及switch語句的運用方法及嵌套應用方法;4. 掌握實現(xiàn)循環(huán)結構的三種語句while、 do-while.、for 的使用;5. 掌握c語言函數(shù)的定義,聲名及調(diào)用方法和調(diào)用過程;6. 掌握c語言主函數(shù)和被調(diào)用函數(shù)之間的參數(shù)傳遞方式,學會函數(shù)的嵌套調(diào)用和遞歸調(diào)用的過程和方法;7. 掌握數(shù)組的定義,賦值引用及輸入輸出方法,并正確用字符數(shù)組儲存字符串,學會字符串的使用;8. 掌握結構體類型變量的定義和使用;9. 掌握指針變量和指向指針的指針變量的定義及使用,進一步了解指向結構體數(shù)組的指針變量的概念及使用方法;10. 掌握鏈表的概念及鏈表的操作,并理解鏈表與數(shù)組的不同點及優(yōu)缺點;11. 掌握文件和文件指針的定義及文件建立,打開,關閉,讀寫等的操作方法12. 能夠采用模塊化思想調(diào)試程序;二實驗內(nèi)容1. 編寫程序并進行調(diào)試運行;2. 輸入學生通訊信息并保存于文件,每個學生包含信息如:序號,姓名,省份,電話,生日,郵編,大學,班級,qq號信息;3. 對已存入的學生信息進行更新操作,包括添加一個學生信息、刪除某個學生信息和修改某個學生信息;4. 通過輸入姓名,學號的方式查詢學生信息;5. 可以通過省份,生日來統(tǒng)計通訊信息;6. 最后輸出學生信息,供需要時打印。 一、 需求分析1. 該程序可用于對學生的通訊方式基本信息的存儲、更新、查詢、輸出等操作,以實現(xiàn)對學生通訊錄信息的管理,便于同學之間的聯(lián)系交往;2. 其中更新功能包括:添加信息,刪除信息,修改信息,可根據(jù)需要添加一個或多個學生信息,也可針對個別學生信息進行適當?shù)膭h除或修改,以便隨時更新學生通訊信息。3. 程序中設計的查詢功能可根據(jù)需要從若干數(shù)據(jù)中查詢某個學生信息,并且可根據(jù)兩種不同的方法查詢:按姓名查詢和按電話查詢,以滿足不同的需要;4. 可以通過輸出的方式查看整個通訊錄;5. 可以通過排序的方式查看同學生日的先后。四、概要設計1、方案設計對系統(tǒng)進行分析,給出結構圖 分析:系統(tǒng)要實現(xiàn)許多功能,因此遵循結構化程序設計思想來進行本系統(tǒng)的設計:,自頂向下逐步細化,將系統(tǒng)設計任務分解出許多子功能模塊來計;結構圖如下:學生通訊錄信息管理系統(tǒng) 選 擇 模 塊退出系統(tǒng)退出模塊統(tǒng)計模塊查詢模塊 更新模塊 輸出模塊輸入模塊排序模塊添加模塊 刪除模塊修改模塊按姓名按電話退出模塊按省份按生日退出模塊保 存 通 訊 信 息2 . 模塊功能說明對各個模塊進行功能的描述(1).輸入模塊:錄入需要管理的通訊信息并將信息保存于文件中,以方便日后進行打印、讀取、更新等操作。(2).添加模塊:可添加一個或多個學生的通訊信息,并將所添加的信息保存,方便查找。(3).刪除模塊:可對失去聯(lián)系的學生通訊信息做刪除處理。(4).修改模塊:可對通訊信息發(fā)生改變的學生信息進行修改。(5).查詢模塊:可對已建立的學生通訊信息進行查詢,并且可根據(jù)需要選擇按姓名查詢或按電話查詢。(6).保存模塊:用于對通訊信息進行保存。(7).輸出模塊:將所有學生通訊信息或想要查詢的學生信息顯示于屏幕,用于打印學生通訊信息或查找某些學生通訊信息。(8).退出系統(tǒng):選擇該項,自動退出該系統(tǒng)。五、詳細設計及運行結果流程圖, 函數(shù)之間相互調(diào)用的圖示 ,程序設計及編碼, 運行結果。開 始輸 入 變 量 i判斷i的值統(tǒng)計模塊查詢模塊 更新模塊 輸出模塊輸入模塊退出模塊添加模塊 刪除模塊修改模塊按姓名按電話退出模塊按省份按生日退出模塊排序模塊判斷i值輸入變量退出模塊輸入變量判斷i值輸入變量判斷i值保 存 模 塊結 束 輸入模塊: 輸入模塊:開 始 開 始 i=0i=0isumisum輸入通訊信息輸入通訊信息i+i+m=y si.num!=0結 束sum=i結 束開始開始 排序模塊: 更新模塊:輸入i的值i=0j=i+1判斷i的值i的年齡大于j的年齡 否 退出系統(tǒng)刪除模塊修改模塊添加模塊 是 i=1 i=2 i=3 交換i與j的信息 j=j+1jsum 是 否返回主界面i=i+1 isum-1結束 是 否輸出信息 結束輸入i開始省份統(tǒng)計退出系統(tǒng)判斷i值輸入i開始退出系統(tǒng)判斷i值查詢模塊: 統(tǒng)計模塊:返回主界面結束姓名查詢電話查詢生日統(tǒng)計返回主界面結束六 調(diào)試情況及運行結果1.對自己設計進行評價,指出合理和不足之處,提出改進的方案。此次實踐課編寫的是一個應用程序,相對于以前我們見到的程序,它要大得多,運行的結果也沒有預想中的好,數(shù)據(jù)的輸出格式不太規(guī)范,而且各模塊也出現(xiàn)了一些小問題,在同學們的幫助下,我很有耐心的一次又一次的進行修改,最后運行的結果基本上達到了預期的目的。可著畢竟是第一次獨立完成這樣的大程序,結果還不是太理想。由于時間很短,在選題報告中設想到的好多功能都沒有實現(xiàn)。已有的那些功能雖已能基本上滿足用戶的需要,但如果還有更多的功能程序就會更加完美。如:再錄入數(shù)據(jù)時,沒有設計數(shù)據(jù)輸入出錯的提示。2.在設計過程中的感受。 本次c 語言的實習課讓我對c 語言的學習又有了更深入的了解,也讓我更深刻地領悟到了“實踐出真理”這個道理,在上機實踐過程中學到的知識遠遠超過了在課堂上十幾周學到的,學校組織的這次實習讓我們這些實踐知識匱乏的大學生增添了許多社會經(jīng)驗,為我們將來走上工作崗位其了不小的鋪墊作用。本次實習中遇到了很多以前沒有遇到過的問題,也曾想過要放棄,但看到那些同學都在那認真的寫程序,給了我繼續(xù)的信心。在同學的幫助下,我順利的結束了本次實習,讓我知道原來憑借自己努力取得的成功會讓自己這么欣慰,也讓我知道了友誼和團結的重要性。并且,通過一種題材兩中方式的學習,我掌握了更多的知識,也認識到對比學習的重要性。七參考文獻參考書名 編者姓名 出版社 出版時間c語言程序設計 王曙燕 曹錳 科學出版社 2005年2月c語言程序設計 譚浩強 清華大學出版社 1999年12月 參考書名 編者姓名 出版社 出版時間c語言程序設計 王曙燕 曹錳 科學出版社 2005年2月八。附錄:1. 鏈表方式: #include#include#define n sizeof(struct stud)#include #include #include /*日期結構體類型*/ struct date int y; int m; int d; bir; /*學生信息結構體類型*/ struct stud int num; /*序號*/ char name20; /*姓名*/ char tel40; /*電話*/ char addr40; /*省份*/ char yb20; /*郵編*/ char daxue50; /*大學*/ struct date bir; /*生日*/ struct stud *next; ; char a; struct stud *h; file *fp;/*建立鏈表*/struct stud *creat() int i,k; struct stud *p1,*p2,*head; printf(n請輸入學生數(shù):n); scanf(%d,&k); head=null; head=p1=p2=(struct stud *)malloc(n); /*head,p1,p2指向首結點*/ for(i=0;inum); printf(n請輸入姓名:); scanf(%s,p1-name); printf(n請輸入電話:); scanf(%s,p1-tel); printf(n請輸入籍貫:); scanf(%s,p1-addr); printf(n請輸入郵編:); scanf(%s,p1-yb); printf(n請輸入大學:); scanf(%s,p1-daxue); printf(n請輸入出生日期:(年-月-日); scanf(%d-%d-%d,&p1-bir.y,&p1-bir.m,&p1-bir.d); p2-next=p1; /*將新結點鏈接到表尾*/ p2=p1; /*p2指向新的表尾*/ p2-next=null; head=head-next; /*頭指針后移*/ save_message(head); /*立即保存*/ return head;/*輸入模塊*/input_message()clrscr(); printf(nn*輸入學生信息*n); printf(-n); h=creat(); bioskey(0); printf(輸入完畢,按任意鍵返回主菜單!); bioskey(0);/*輸出模塊*/output_message(struct stud *p)clrscr(); if(p=null) printf(暫無信息!請回主菜單錄入信息!n); else printf(nn=通訊錄信息表=nn); printf(姓名=省份=電話=生日(年-月-日)=郵編=大學n); while(p!=null) printf(-n); printf(%s %s %s %d-%d-%d %s %sn,p-name,p-addr,p-tel,p-bir.y,p-bir.m,p-bir.d,p-yb,p-daxue); printf(-n); printf(n); p=p-next; printf(n); printf(按任意鍵返回主菜單!nn); bioskey(0);/*保存學生信息*/save_message(struct stud *h)file *fp; struct stud *f; f=h; /*保證指針位置*/ if(fp=fopen(zhuyan.txt,wb)=null) printf(不能打開文件!n); return; while(h!=null) if(fwrite(h,sizeof(struct stud),1,fp)!=1) /*向文件寫入數(shù)據(jù)*/ printf(文件寫入錯誤!); return; h=h-next; h=f; /*保證指針位置*/ printf(已存盤,按任意鍵回上層菜單:n); getch(); fclose(fp); return;/*讀取信息*/read_message()file *fp; if(fp=fopen(zhuyan.txt,rb)=null) printf(nn*暫時還沒有該生信息,請按任意鍵返回上一級菜單.n); return; do if(fread(h,sizeof(struct stud),1,fp)!=1) if(feof(fp) printf(已到文件末尾.n); /*已到文件末尾.*/ else printf(文件讀取錯誤!n); /*文件讀取錯誤.*/ return; h=h-next; while(h!=null); fclose(fp); getch(); bioskey(0);/*添加學生信息*/add_message(struct stud *w) struct stud *p,*q; p=(struct stud*)malloc(n); /*p指向新申請的結點*/ clrscr(); printf(n請輸入學生序號:); scanf(%d,&p-num); printf(n請輸入學生姓名:); scanf(%s,p-name); printf(n請輸入學生電話:); scanf(%s,p-tel); printf(n請輸入學生籍貫:); scanf(%s,p-addr); printf(n請輸入學生郵編:); scanf(%s,p-yb); printf(n請輸入學生大學:); scanf(%s,p-daxue); printf(n請輸入學生出生日期:); scanf(%d-%d-%d,&p-bir.y,&p-bir.m,&p-bir.d); p-next=null; if(w=null) w=p; /*頭指針為空,p作為新頭指針*/ return 1; /*正確插入返回1*/ q=w; /*從頭指針開始*/ if(q-num)(p-num) /*找到插入位置在首結點之前*/ p-next=w; /*將首結點鏈接在新結點之后*/ w=p; /*p作為新的頭指針*/ return 1; while(q-next)!=null & (q-next-num)num) q=q-next; /*繼續(xù)查找插入位置*/ if(q-next=null) /*插入位置在尾結點之后*/ q-next=p; /*新結點鏈接到尾結點之后*/ return 1; else if(q-next-num)=(p-num) /*找到重號*/ free(p); /*釋放新結點的存儲空間*/ return 0; /*不插入返回0*/ p-next=q-next; /*后續(xù)結點鏈接到新結點之后*/ q-next=p; /*新結點鏈接到前驅(qū)結點之后*/ return 1;/*刪除模塊*/del_message(struct stud *w)char name20; struct stud *p,*q; if(w=null) return 0; /*w就是頭指針,空表不能刪除返回0*/ clrscr(); printf(請輸入要刪除的學生姓名:n); scanf(%s,name); q=w; if(strcmp(q-name,name)=0) /*找到要刪除的是第一個結點*/ w=q-next; /*修改頭指針*/ free(q); /*釋放存儲空間*/ return 1; /*正確刪除返回1*/ p=q-next; while(p!=null) if(strcmp(p-name,name)=0) /*找到要刪除的結點*/ q-next=p-next; /*后續(xù)結點連接到前驅(qū)結點之后*/ free(p); /*釋放存儲空間*/ return 1; q=p; /*推移指針繼續(xù)查找*/ p=p-next; return 0; /*未找到要刪除的結點返回0*/*修改模塊*/revise_message(struct stud *g) int choice; char name20,n,m; do clrscr(); printf(n *學生學籍信息* n); printf( 輸入要修改的學生姓名:n); scanf(%s,name); while(g!=null) while(strcmp(g-name,name)!=0) g=g-next; if(g=null) printf(n 該學生不存在!); bioskey(0); else do printf(n 您要修改哪一項?n); printf(n 1序號n); printf(n 2姓名n); printf(n 3籍貫n); printf(n 4電話n); printf(n 5大學n); printf(n 6出生日期n); scanf(%d,&choice); switch(choice) case 1:printf(n 請輸入修改后的序號:); scanf(%d,&g-num);break; case 2:printf(n 請輸入修改后的姓名:); scanf(%s,g-name);break; case 3:printf(n 請輸入修改后的籍貫:); scanf(%s,g-addr); break; case 4:printf(n 請輸入修改后的電話:); scanf(%s,g-tel); break; case 5:printf(n 請輸入修改后的大學:); scanf(%s,g-daxue); break; case 6:printf(n 請輸入修改后的出生日期:); scanf(%d-%d-%d,&g-bir.y,&g-bir.m,&g-bir.d);break; printf(n是否繼續(xù)修改此人信息?y/nn) ; getchar(); m=getchar(); while(m=y); printf(nn=通訊錄信息表=nn); printf(姓名=省份=電話=生日(年-月-日)=郵編=大學n); printf(-n); printf(%s %s %s %d-%d-%d %s %sn,g-name,g-addr,g-tel,g-bir.y,g-bir.m,g-bir.d,g-yb,g-daxue); printf(-n); printf(n); getch(); break; printf(n要繼續(xù)嗎?(y/n)n); getchar(); n=getchar(); while(n=y); printf(n 按任意鍵返回主菜單!); bioskey(0); /*更新模塊*/ renew_message() int choice=100; while(choice!=0) printf(n*更新同學信息*nn); printf( 1.添加同學信息nn); printf( 2.刪除同學信息nn); printf( 3.修改同學信息nn); printf( 0.返回修改菜單nn); printf( 請選擇(03):n); printf(*nn); scanf(%d,&choice); switch(choice) case 1:add_message(h);break; case 2:del_message(h);break; case 3:revise_message(h);break; case 0:break; default:printf(輸入有誤!n); /*按姓名查詢*/inquire_name( struct stud *p) char name20; struct stud *f; f=p; clrscr(); printf(nn 請輸入要查找的姓名:); scanf(%s,&name); if(p=null) printf(n您要查找的學生暫時不存在,請按任意鍵返回n); bioskey(0); else if (strcmp(p-name,name)!=0|p-name=null) p=p-next; clrscr(); printf(nn該生有關信息為:nnnn); printf(nn=通訊錄信息表=nn); printf(姓名=省份=電話=生日(年-月-日)=郵編=大學n); printf(-n); printf(%s %s %s %d-%d-%d %s %sn,p-name,p-addr,p-tel,p-bir.y,p-bir.m,p-bir.d,p-yb,p-daxue); printf(-n); printf(n); p=f; getch();/*按學號查詢*/inquire_tel(struct stud *p)char tel20; struct stud *f; f=p; clrscr(); printf(n 請輸入要查找的電話:); scanf(%s,&tel); if(p=null) printf(n您要查找的學生暫時不存在,請按任意鍵返回n); bioskey(0); else if(strcmp(p-tel,tel)!=0|p-tel=null) p=p-next; clrscr(); printf(nn該生有關信息為:nnnn); printf(nn=通訊錄信息表=nn); printf(姓名=省份=電話=生日(年-月-日)=郵編=大學n); printf(-n); printf(%s %s %s %d-%d-%d %s %sn,p-name,p-addr,p-tel,p-bir.y,p-bir.m,p-bir.d,p-yb,p-daxue); printf(-n); printf(n); p=f; getch(); /*查詢模塊*/ inquire_message() int choice=100; while(choice!=0) printf(n*查詢同學通訊信息*n); printf( 1.按同學姓名查詢:n); printf( 2.按同學電話查詢:n); printf( 0.返回主菜單:n); printf( 請選擇(02):n); scanf(%d,&choice); switch(choice) case 1:inquire_name(h);break; case 2:inquire_tel(h);break; case 0:break; default:printf(無此類查詢方式!n); /*省份統(tǒng)計*/ count_ad(struct stud *p) int count=0; char count_ad20; printf(n 輸入要統(tǒng)計的省份名稱:n); scanf(%s,count_ad); if(p=null) printf(n 該學生不存在!); bioskey(0); else printf( 在該省份的同學:n); printf(姓名=省份=電話=生日(年-月-日)=郵編=大學n); printf(-n); p=h; /*p指向頭指針!*/ while(p!=null) if(strcmp(p-addr,count_ad)=0) printf(%s %s %s %d-%d-%d %s %sn,p-name,p-addr,p-tel,p-bir.y,p-bir.m,p-bir.d,p-yb,p-daxue); p=p-next; count+; printf(在這個省份的同學共有%d個,count); /*生日統(tǒng)計*/ count_birthday(struct stud *p) int count=0; int count_birthday_month; printf( 請輸入要統(tǒng)計的月份:n); scanf(%d,&count_birthday_month); if(p=null) printf(n 該學生不存在!); bioskey(0); else printf( 在這個月過生日的同學:記得祝賀他們生日快樂!n); printf(姓名=省份=電話=生日(年-月-日)=郵編=大學n); printf(-n); p=h; while(p!=null) if(p-bir.m=count_birthday_month) printf(%s %s %s %d-%d-%d %s %sn,p-name,p-addr,p-tel,p-bir.y,p-bir.m,p-bir.d,p-yb,p-daxue); p=p-next; count+; printf(在這個月過生日的同學有%d個,count); /*統(tǒng)計模塊*/ count_message() int choice=100; while(choice!=0) printf(nn*統(tǒng)計同學通訊信息*n); printf( 1.按省份統(tǒng)計信息;n); printf( 2.按生日統(tǒng)計信息;n); printf( 0.返回主菜單;n); printf( 請選擇(0-2):n); scanf(%d,&choice); switch(choice) case 1:count_ad(h);break; case 2:count_birthday(h);break; case 0:break; default:printf(輸入有誤!n); /*主程序*/main() int b; printf(輸入任意鍵進入。nn); bioskey(0); do clrscr(); printf(nnn *歡迎進入* nn); printf( * 學生通訊錄管理系統(tǒng) *nn); printf( * 1輸入學生信息 *nn); printf( * 2輸出學生信息 *nn); printf( * 3更新學生信息 *nn); printf( * 4查詢學生信息 *nn); printf( * 5統(tǒng)計學生信息 *nn); printf( * 6保存信息 *nn); printf( * 7讀取信息 *nn); printf( * 0退出系統(tǒng) *nn); printf( * 請選擇(07) : *nn); scanf(%d,&b); switch(b) case 1: input_message(); break; case 2: output_message(h); break; case 3: renew_message(); break; case 4: inquire_message(); break; case 5: count_message(); break; case 6: save_message(h); break; case 7: read_message(); break; case 0: break; while(b!=0);2數(shù)組方式:#include #include #define max 200#define n 9 int sum; /*日期結構體類型*/ struct b_type int year; /*年*/ int month; /*月*/ int day; /*日*/ ; /*通訊錄結構體類型*/ struct s_type int num; /*序號*/ char name20; /*姓名*/ char address20; /*省份*/ char tel
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國金銀花涼茶顆粒行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國電鍍金剛石菱形銼市場分析及競爭策略研究報告
- 2025年鑄鐵門擋項目可行性研究報告
- 2025年英文字母組合印項目可行性研究報告
- 2025年汽車用連接線項目可行性研究報告
- 2025年柔性丙烯酸乳液項目可行性研究報告
- 退休財務分析師兼職合同
- 九年級數(shù)學考試技巧提升計劃
- 固廢處理與資源化利用項目投資合作協(xié)議
- 二年級安全教育課外活動計劃
- 本科畢業(yè)生實習總結模版
- 2025年高考英語復習難題速遞之說明文閱讀理解(2025年4月)
- 殘聯(lián)委員筆試題及答案大全
- 2024年陜西省普通高中學業(yè)水平合格性考試歷史試題(解析版)
- 中國干眼臨床診療專家共識(2024年)解讀
- 2mm土工膜長絲土工布檢測報告合格證
- 一年級家長會課件2024-2025學年
- 拉美文化學習通超星期末考試答案章節(jié)答案2024年
- 文藝復興經(jīng)典名著選讀智慧樹知到期末考試答案章節(jié)答案2024年北京大學
- 小小科學家《物理》模擬試卷A(附答案)
- 體能科學訓練方法智慧樹知到期末考試答案2024年
評論
0/150
提交評論