C語言課程設(shè)計說明書正文范本標(biāo)準(zhǔn)_第1頁
C語言課程設(shè)計說明書正文范本標(biāo)準(zhǔn)_第2頁
C語言課程設(shè)計說明書正文范本標(biāo)準(zhǔn)_第3頁
C語言課程設(shè)計說明書正文范本標(biāo)準(zhǔn)_第4頁
C語言課程設(shè)計說明書正文范本標(biāo)準(zhǔn)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、山西工程技術(shù)學(xué)院C語言課程設(shè)計山西工程技術(shù)學(xué)院C語言程序設(shè)計課程設(shè)計說明書張雅男號 150721035級15級計應(yīng)1班指導(dǎo)老師劉紅梅2016年1月6日山西工程技術(shù)學(xué)院C語言課程設(shè)計摘要1引言 1.1設(shè)計目的 1.2設(shè)計要求 2系統(tǒng)分柝 2.1功能需求 2.2數(shù)據(jù)需求 2.3程序所需函數(shù)3詳細(xì)設(shè)計與實現(xiàn)3.1功能模塊的設(shè)計與實現(xiàn) 3.2程序的詳細(xì)設(shè)計過程-144系統(tǒng)測式3144.2測試結(jié)果及分析14總結(jié)22參考文獻(xiàn)23在現(xiàn)代教學(xué)中,學(xué)生管理系統(tǒng)的設(shè)計非常重要,因為隨著教育事業(yè)的逐步提 升,受教育的學(xué)生日漸增多,也就使對其相關(guān)信息的管理變得相對復(fù)雜。由于學(xué)生信息多樣化,而且信息隨時變化多,不得不要

2、求我們找出一套既簡單又方便完 善管理系統(tǒng)來對學(xué)生進(jìn)行管理。而目前我們自學(xué)習(xí)過如何使C語言來進(jìn)行編程,同時運用文件、結(jié)構(gòu)體、指針,而要想完成一個比較復(fù)雜的編程,就必須使用各種函數(shù)才能發(fā)完成,所以學(xué)習(xí)好C語言非常重要。以前的操作系統(tǒng)等系統(tǒng)軟件主要是由匯編語言編寫的(包括UNIX操作系統(tǒng)在內(nèi))。由于匯編語言依賴于計算機(jī)硬件,程序的可讀性和可移植性都比較差。 為了提高可讀性和可移植性,最好改用高級語言,但一般高級語言難以實現(xiàn)匯編 語言的某些功能(匯編語言可以直接對硬件進(jìn)行操作,例如,對內(nèi)存地址的操作、 位操作等)。人們設(shè)想能否找到一種既具有一般高級語言特性,又具有低級語言 特性的語言,集它們的優(yōu)點于一

3、身。于是,C語言就在這種情況下應(yīng)運而生了。1.1設(shè)計目的考察我們對結(jié)構(gòu)體,指針,文件的操作,以及 C語言算法的掌握。從而讓 我們把書上學(xué)習(xí)到的東西與實際情況聯(lián)系起來,讓我們對用 C語言進(jìn)行編程有 進(jìn)一步的了解和深刻的認(rèn)識。1.2設(shè)計要求要求使用C語言進(jìn)行編程,并且盡可能學(xué)習(xí)其他語言來穿插在程序中,使 程序進(jìn)一步簡單而使用、方便。要求在程序中使用結(jié)構(gòu)體,指針,文件等操作, 并且能完整顯示出其各種功能。所以完成此道題目要求較強(qiáng)的設(shè)計能力,尤其是 要有一種大局觀的意識。如何調(diào)程序也非常重要,通過這個程序可以學(xué)習(xí)到以前 調(diào)試短程序沒有的的經(jīng)驗。2-1所示。第2章系統(tǒng)分析菜單中的每一個選項都對應(yīng)一個子程

4、序,子程序的算法幾乎囊獲了所有 語言學(xué)過的技巧,下面就各個子程序中的功能進(jìn)行說明:功能1和4的算法相似,輸入一條記錄到結(jié)構(gòu)體中去,其中有一部很關(guān)鍵,就是通過gets將所有的多余的字符,回車讀去,否則就會出錯。功能2是顯示所有的記錄,通過循環(huán)輸出,格式也比較重要。功能3為按學(xué)號排序,因為學(xué)號定義成了字符數(shù)組的形式,因此在運用冒泡 法進(jìn)行排序的時候,要用到等函數(shù)。功能5為按姓名刪除記錄,先輸入姓名,再一一比較,如果沒有則返回失敗 信息,如果找到就將此記錄都向前移一位,返回 n-1。比較。功能6的算法在5中就已經(jīng)體現(xiàn)了,輸入姓名,功能7和8是對文件的操作,提前準(zhǔn)備好數(shù)據(jù)。2.1功能需求關(guān)于系統(tǒng)的功能

5、結(jié)構(gòu)圖如圖5函數(shù)函數(shù)函數(shù)圖2-1系統(tǒng)功能結(jié)構(gòu)圖2.2數(shù)據(jù)需求num10;學(xué)號 name20;姓名 int age ; 年齡 char sex; 性另 char add30;地址 char pho13電話2.3程序所需函數(shù)輸入若干條記錄*/顯示所有記錄*/按學(xué)號排序*/插入一條記錄*/按姓名查找,刪除一條記int Inp ut(Stude nt stud,i nt n) /*void Dis play(Stude nt stud,i nt n) /*void Sort_by_num(Stude nt stud,i nt n) /* int In sert_a_record(Stude nt st

6、ud,i nt n) /*int Delete_a_record(Stude nt stud,i nt n) /* 錄*/查找并顯示一個記錄*/從文件中讀入數(shù)據(jù)*/將所有記錄寫入文件*/void Query_a_record(Stude nt stud,i nt n) /* int AddfromText(Stude nt stud,i nt n) /* void WritetoText(Stude nt stud,i nt n) /* void mai n() /* 主函數(shù) */第3章詳細(xì)設(shè)計3.1功能模塊的設(shè)計與實現(xiàn)系統(tǒng)菜單的主要功能:(1)(2)(3)(4)(5)(6)(7)(8)(0)

7、輸入若干條記錄顯示所有記錄按學(xué)號排序插入一條記錄按姓名查找,刪除一條記錄 查找并顯示一條記錄從正文中添加數(shù)據(jù)到結(jié)構(gòu)體數(shù)組中 將所有數(shù)據(jù)寫入文件中在編完程序以后操作如下:1、進(jìn)入界面2、輸入選項1,回車; 按提示輸入數(shù)據(jù):3、回到主菜單; 輸入選項8,回車;輸入文件名:data.txt ,回車;出現(xiàn)成功提示,則讀入文件操作成功。4、回到主菜單,輸入 每10個暫停顯示數(shù)據(jù)5、回到主菜單,輸入 出現(xiàn)排序成功信息。&回到主菜單,輸入 按提示插入一組數(shù)據(jù)7、回到主菜單,輸入2,3,4,回車回車回車5,回車退出程序按提示輸入姓名,刪除數(shù)據(jù) 出現(xiàn)刪除成功的信息8、回到主菜單,輸入6,回車 輸入姓名進(jìn)

8、行查詢9、回到主菜單,輸入8,回車 輸入result.txt ,回車出現(xiàn)成功寫入文件的信息10、回到主菜單,輸入0,回車退出系統(tǒng) 在編程中所需要的函數(shù)如下:void main()/*主函數(shù)*/可以調(diào)用以下的函數(shù)int Input(Student stud,int n) /*輸入若干條記錄 */ 山西工程技術(shù)學(xué)院C語言課程設(shè)計void Dis play(Stude nt stud,i nt n) /* void Sort_by_num(Stude nt stud,i nt n) /* int In sert_a_record(Stude nt stud,i nt n) /* int Delete

9、_a_record(Stude nt stud,i nt n) /* void Query_a_record(Stude nt stud,i nt n) /* int AddfromText(Stude nt stud,i nt n) /* void WritetoText(Stude nt stud,i nt n) /*顯示所有記錄*/ 按學(xué)號排序*/插入一條記錄*/ 按姓名查找,刪除一條記錄*/ 查找并顯示一個記錄*/ 從文件中讀入數(shù)據(jù)*/將所有記錄寫入文件*/3.2程序的詳細(xì)設(shè)計過程程序開頭#in clude<stdlib.h> #in clude<ct yp e.h&

10、gt; #in clude<stri ng.h>29typ edef struct /*char num10; /*char name20; /*定義結(jié)構(gòu)體數(shù)組*/學(xué)號*/姓名*/int age; char sex; char add30; char p ho13;Stude nt;Stude nt stu80; /*結(jié)構(gòu)體數(shù)組變量*/int menu _select() /* " char c;dosystem("cls"); /*菜單函數(shù)*/運行前清屏*/prin tf("tt*Stude nts' Grade Ma nageme

11、 nt System*n"); /* */ prin tf(" 1. printf(" 2. printf(" 3. printf(” 4. printf(" 5. printf(" 6. printf(" 7. printf(" 8. printf(" 0. prin tf("n菜單選擇輸入學(xué)生信息n"); 顯示學(xué)生信息記錄n");按學(xué)號排序n");插入一條記錄n"); 按姓名查找,刪除一條記錄n");查找并顯示一條記錄n");從正文

12、中添加數(shù)據(jù)到結(jié)構(gòu)體數(shù)組中n"); 將所有數(shù)據(jù)寫入文件中n");退出程序n"); 請選擇(0-8):");讀入選擇*/c=getchar(); /* while(cv'0'|c>8);return(c-'0'); /* 返回選擇 */功能1函數(shù):輸入若干條記錄*/int Inp ut(Stude nt stud,i nt n) /*int i=0;char sign,x30; /*x10為清除多余的數(shù)據(jù)所用*/判斷*/while(sig n!='n'&&sig n!='N'

13、;) /* printf("n學(xué)生學(xué)號:");/*交互輸入*/sca nf("%s",stud n+i. nu m); prin tf("n姓名:");");scan f("%d",stud n+i.age); ");scan f("%c",stud n+i.sex); ");scan f("%s",stud n+i.add); ");scan f("%s",stud n+i. pho);sca nf("%

14、s",stud n+i. name);年齡 性別 地址 電話清除多余的輸入*/還要錄入下一個人嗎?(Y/N)");輸入判斷*/prin tf("n prin tf("n prin tf("n prin tf("n gets(x); /* prin tf("ttt sca nf("ttt%c",&sig n); /* i+; return( n+i);顯示所有學(xué)生信息記錄*/功能2函數(shù):void Dis play(Stude nt stud,i nt n) /*格式頭*/int i;printf(&

15、quot;tttn"); /*printf("ttt 學(xué)號 姓名 年齡 性別 地址電話n");printf("tttn");for(i=1;i<n+1;i+) /*循環(huán)輸入 */prin tf("ttt%-16s%-15s%d%c%-30s%-13sn",studi-1. nu m,studi-1. name,studi-1.age,studi-1.sex,studi-1.add,studi-1. pho);格式*/if(i>1 &&i%10=0) /* 每十個暫停 */printf("

16、tttn"); /*prin tf("ttt");system(" pause");n");printf("tttprin tf("ttt");system(" pause");功能3函數(shù):實現(xiàn)程序的排序功能void Sort_by_num(Stude nt stud,i nt n) /* int i,j,s,h;char t10;冒泡法排序*/for(i=0;i< n-1;i+) /*for(j=0;j< n-1-i;j+)if(strc mp (studj. nu m,

17、studj+1. nu m)>0) strc py(t,studj+1. nu m);strc py (studj+1. nu m,studj. nu m);strc py(studj. nu m,t);strc py(t,studj+1. name);strc py (studj+1. name,studj. name); strc py(studj. name,t);s=studj+1.age; studj+1.age=studj.age;studj.age=s; h=studj+1.sex;studj+1.sex=studj.sex;studj.sex=h;strc py(t,st

18、udj+1.add);strc py (studj+1.add,studj.add); strep y(t,studj+1. pho);strc py (studj+1. pho,studj. pho);功能4函數(shù):int In sert_a_record(Stude nt stud,i nt n) /* char x10; /*清除多余輸入所用*/printf("ttt學(xué)生學(xué)號:");/* 交互式輸入*/sca nf("ttt%s",stud n.nu m);prin tf("ttt姓名:");sca nf("ttt%s&

19、quot;,stud n. name);prin tf("ttt年齡:");sca nf("ttt%d", &stud n.age);prin tf("ttt性別:");sca nf("ttt%c",&stud n.sex);prin tf("ttt地址:");sca nf("ttt%s",&stud n.add);prin tf("ttt電話:");sca nf("ttt%s", &stud n. ph

20、o);gets(x);按學(xué)號排序*/插入一條記錄*/n+;Sort_by_num(stud,n); /*調(diào)用排序函數(shù) */printf("ttt插入成功!n"); /* 返回成功信息*/return( n);功能5函數(shù):int Delete_a_record(Stude nt stud,i nt n) /* char s20;int i=O,j;printf("ttt請輸入要查詢學(xué)生的姓名:");/*sca nf("%s",s);while(strc mp (studi. name,s)!=0&&iv n) i+; /

21、* if(i=n) prin tf("ttt return( n);for(j=i;j< n-1;j+)/*strc py (studj. nu m,studj+1. nu m);strc py (studj. name,studj+1. name); studj.age=studj+1.age; studj.sex=studj+1.sex;strc py (studj.add,studj+1.add);strc py (studj. pho,studj+1. pho);prin tf("tttreturn( n-1);按姓名查找,刪除一條記錄*/交互式問尋*/查找判

22、斷*/此人不存在!n"); /*返回失敗信息*/刪除操作*/此人信息已成功刪除!n"); /*返回成功信息*/功能6函數(shù):void Query_a_record(Stude nt stud,i nt n) /* char s20;int i=0;printf("ttt請輸入要查詢學(xué)生的姓名:");/*sca nf("ttt%s",s);while(strc mp (studi. name,s)!=0&&iv n) i+; /* if(i=n) prin tf("ttt return;查找并顯示一個記錄*/交互

23、式輸入*/查找判斷*/此人不存在!n"); /*輸入失敗信息*/prin tf("ttt prin tf("ttt學(xué)號:sn",studi. num); /*輸出該學(xué)生信息*/年齡:dn",studi.age);prin tf("tttprin tf("ttt prin tf("ttt性別:cn",studi.sex); 地址:%sn",studi.add); 電話:%sn",studi. pho);功能7函數(shù):從文件中讀入數(shù)據(jù)*/int AddfromText(Stude nt st

24、ud,i nt n) /* int i=0, num;FILE *fp; /* 定義文件指針*/char file20; /*定義文件名 */printf("ttt輸入文件名:");scanf("ttt%s",file); /*輸入文件名 */if(fp=fopen(file,"rb")=NULL) /*打開文件 */ printf("ttt無法打開此文件!n"); /*打開失敗信息*/prin tf("ttt");system(" pause");return( n);fs

25、canf(fp,"%d",&num); /*讀入總記錄量 */while(i<num) /*循環(huán)讀入數(shù)據(jù)*/fsca nf(fp,"%s%s%d%c%s%s",stud n+i. nu m,stud n+i. name,&stud n+i.age, stud n+i.sex,stud n+i.add,stud n+i. pho);i+;n+=num;關(guān)閉文件*/ 成功!n");fclose(fp); /*prin tf("tttprin tf("ttt");system(" paus

26、e");return( n);功能8函數(shù):將所有記錄寫入文件*/輸入文件名*/void WritetoText(Stude nt stud,i nt n) /*int i=0;FILE *fp; /* 定義文件指針*/char file 20; /*定義文件名 */prin tf("tttWrite Records to a Text Filen"); /* printf("ttt輸入文件名:");sca nf("ttt%s",file );打開文件*/循環(huán)寫入數(shù)據(jù)*/if(fp=fo pen (file ,"w&

27、quot;)=NULL) /*printf("ttt無法打開文件!n");system(" pause");return;fprin tf(fp,"%dn", n); /*while(i vn)fprin tf(fp,"%-16s%-15s%d%c%-30s%-13sn",studi. nu m,studi. name,studi.age,studi.sex,studi.add,studi. pho);i+;fclose(fp); /*關(guān)閉文件*/printf("成功!n"); /*返回成功信息

28、*/主函數(shù):void main() /*主函數(shù) */int n=0;for(;)switch(menu_select() /*選擇判斷 */ "case 1: prin tf("ttt n=I np ut(stu, n); break;case 2:prin tf("tttDis play(stu, n); break;case 3:prin tf("ttt輸入學(xué)生信息n"); /*輸入若干條記錄*/顯示所有記錄n"); /* 顯示所有記錄*/按學(xué)號排序n"); /* 按學(xué)號排序*/Sort_by_ nu m(stu, n)

29、;prin tf("ttt"); system(" pause"); break;case 4:printf("ttt插入一條記錄n"); /*插入一條記錄*/n=ln sert_a_record(stu, n);prin tf("ttt");system(" pause");break;case 5:prin tf("ttt 按姓名查找,刪除一條記錄n"); n=Delete_a_record(stu,n); /* 按姓名查找,刪除一條記錄 */ prin tf("

30、;ttt");system(" pause");break;case 6:printf("ttt查找并顯示一條記錄n");Query_a_record(stu,n); /*查找并顯示一個記錄 */prin tf("ttt");system(" pause");break;case 7:prin tf("ttt從正文中添加數(shù)據(jù)到結(jié)構(gòu)體數(shù)組中n");n=AddfromText(stu,n); /*新增功能,輸出統(tǒng)計信息*/break;case 8:prin tf("ttt將所有數(shù)

31、據(jù)寫入文件中n");WritetoText(stu,n); /*循環(huán)寫入數(shù)據(jù) */prin tf("ttt");system(" pause");break;case 0:printf("ttt退出程序!n"); /*結(jié)束程序*/prin tf("ttt");system(" pause");exit(0);第4章系統(tǒng)測試4.1設(shè)計測試數(shù)據(jù)4.2測試結(jié)果及分析程序運行如下進(jìn)入主菜單,界面如圖4-1所示。K-rR自 書一 SeId圖4-1主菜單界面選擇功能1,窗口顯示如圖4-2所示。Ut

32、lkAo HdihyununL Stfttteii*1.范九姜生信總H.會卞手爭偉E遠(yuǎn)錄世世創(chuàng)貝一爭紀(jì)錄*.玄氓甘ILt;和己錄潼評躺S中圖4-2 功能1窗口輸入學(xué)生信息,在窗口中輸入有關(guān)信息,如圖4-3所示。*3幅t"ienea Ca仏 hAnhucHnr *<*1.喩匹単±怙建r- St密它孰遠(yuǎn)錄:齡軸S.隹柱宰吉酋,聊乍一煤記乖fi- if弊顯不一親記錄:魏計吊+J£*I il "a圖4-3輸入學(xué)生信息窗口功能8,將信息保存在指定文件中,首先打開文件TT *C. M*ci»c-Bts 4Tid Sett jh4*£S Be

33、hTicCppL&找#顯示一條記親V.臉文二I盍加數(shù)提賀結(jié)構(gòu)體數(shù)組屮皆謎降<0 BJtBB.観薩g寫人文神將眉有販據(jù)丐入丈件中Wi*itp Fropd? tft A TFxt Flip 揃入丈E.輸入完成以后退出,然后選擇功能2c-fc : LD*c«*c3L*ts ukJ. Sa-ttiiLe=.MiL4.oAfflVBa'biieC>p _ oz+*£tudents"Gradenanaqenent Sy苕ten*.6.7.8_0.輸A半生信息 顯末#生信息記錄藝T百抿f:雨A斎記錄稷姓名直找,則隙一條記杲 亙找并顯示一

34、釆t錄卩罡文中春加數(shù)g球石構(gòu)0 為曙讐雅亙?nèi)腚级U中圖6選擇功能3,按學(xué)號進(jìn)行排序23454Kb«C-UuLt = U.J. Sa-LLL>.c=3uL-B.oVfa.ll±l-agCppl . cmc*Studerits' Grade llanaqnent S ysten* 輸入卓=信民 顯K舉蘭侑忌記錄7.9.顯環(huán)所育記錄學(xué)E姓-年齡性別地血電話ft蚌容査找.卅廉一采匸錄 杳#顯云一孫n眾 僞鼻中強(qiáng)加毅福剖構(gòu)體數(shù)組中 編< 數(shù)擢寫入戈仲中a.屆!U罷佯請直攔:苗-的:3繼續(xù)進(jìn)行功能4圖8輸入插入學(xué)生的信息C1 ""C : .D<

35、;kc-iua-xk.ts ulJ_ 4LEttJ.鑒#號世序*t-插A窣記求5. 搖姓名i找,籐一殺遠(yuǎn)艮6. 查我?guī)諄K不一條己求7. 醸文蠶駕翹舞構(gòu)體數(shù)生中壯熬i薩寫入中慵選擇<0-«> = 4錄砧P汚 聲離6暑 一學(xué)誠亠-亠M 入量齡別址WI 插學(xué)姓隹地電功能5,按姓名進(jìn)行查找并刪除一條記錄CA : DociueiLt S aul Set tiuf sVili kaoDcbu£Cppl. tx eKanaganent Systen*詠甸it結(jié)中 B 錄一欝護(hù)數(shù)序息自亠住ft唐山找巫 生生菲親査顯. 書It 一名并一 A-$A 姓£?! p'

36、i乳比匸Qbl圖10輸入要刪除學(xué)生姓名將其刪除或不存在g ""C : .Doc-iHe-n.t= fuiJ S亡t. *ti*nEM.ik.LL«.Dl.Dc"bu甘IC.fI. - escrianaqenent syst&n*7 0 01 2 3 4 S rh求 倩信序菠示 生生排書顯 圭善一拿 余姓埋 輸顯®查-幫結(jié)巾刪舉中數(shù)序文正所岀華退:aaa諳我fcS鍵址柬圖11功能6,進(jìn)行查詢,要求輸入姓名,若此人存在將顯示其相關(guān)信息,若此人不存在 將提示“此人不不存在”Cl ""C : .DociuA-xLts ulJ E衛(wèi)t. *ti.xk%=z.uih«.ol_面.1)牡1>口客W.l. _*Stulents* Grde ilanagenent System* 輸人蛍主信息 顯丕f生信息i覘i人一埶覘 接姓名ig,刪際一條i己錄.8.彳0. 1!請選擇査找并a丞一兼記錄 斎®入要i詢李主的姓生 孕號性別=m ifetk =xdgf bEgli 電=丄23£7«4 請按任意鍵繼續(xù)-圖12功能7從正文中添加數(shù)據(jù)到結(jié)構(gòu)體數(shù)組中蓋匚:'Docnen

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論