第一篇:c語言實習報告
實習報告
1,從1到100面積,面積大于100跳出(周一上午)
#include
if(s>100)break;判斷面積是否大于100,若大跳出 printf(“r=%d,mianji=%fn”,r,s);輸出 } getch();} 結果:
2,九九乘法表(周一下午)
#include
for(i=1;i<=9;i++)外循環(huán) { for(n=1;n<=i;n++)內循環(huán) { s=i*n;printf(“ %dx%d=%d”,i,n,s);輸出等式 } printf(“n”);換行 } getch();}
結
果
:
3,1-100不被5和7整除的數(shù)
#include
if(n%5==0)printf(“n”);控制每行五個數(shù) } } getch();}結果:
4,輸入三個數(shù)并利用子函數(shù)求出最大值和最下值
#include
void array(int x,int y,int z);聲明子函數(shù) scanf(“%d%d%d”,&a,&b,&c);從鍵盤輸入三個數(shù) array(a,b,c);調用子函數(shù)
printf(“max=%d,min=%dn”,max,min);輸出最值 getch();}
void array(int x,int y,int z)子函數(shù) { max=(x>y)? x:y;求最大值 max=(max>z)? max:z;求最大值 min=(x 結果:輸入,5,1,8 輸出:8,1 5,求出十個數(shù),每個數(shù)是前兩個的和 #include printf(“ %d %d”,a,b);輸出前兩項 for(i=3;i<=10;i++)循環(huán) { c=a+b;計算后一項 printf(“ %d”,c);輸出計算的數(shù) a=b;交換數(shù)據(jù) b=c;交換數(shù)據(jù) if(i%10==0)printf(“n”);控制每行輸出十個數(shù) } } 結果: (前23項) 6,鍵盤輸入三角形的三邊求周長 #include printf(“qing shu ru san bian:n”);提示輸入三邊 scanf(“%d,%d,%d”,&a,&b,&c);從鍵盤輸入三邊 if(a+b>c && a+c>b && b+c>a)判斷是否是能構成三角 { z=a+b+c;計算周長 printf(“zhou chang=%dn”,z);輸出周長 } else printf(“bu shi san jiao xing”);如果構不成則提示 getch();} 結果: 7,求從鍵盤輸入的分數(shù)的情況(周二下午) 8,從鍵盤輸入十五個數(shù)求負數(shù)的和,正數(shù)的和和總和(周二下午)#include scanf(“%d”,&f);鍵盤輸入分數(shù) a=f/10;switch(a)進入判斷 { case 10:printf(“An”);break;是100分輸出A case 9:printf(“An”);break;是90分以上輸出A case 8:printf(“Bn”);break;是80分以上輸出A case 7:printf(“Cn”);break;是70分以上輸出A case 6:printf(“Dn”);break;是60分以上輸出A case 5:printf(“bu ji gen”);break;case 4: case 3: case 2: case 1: case 0:printf(“bu ji gen”);break;是0-60分輸出“bu ji ge” } getch();} #include 9,鍵盤輸入15個數(shù)求正數(shù)的個數(shù)負數(shù)的個數(shù)及最大數(shù) #include 結果: _ 語言類實習報告3篇 語言類實習報告 篇1 設計報告 一,試驗目的: 通過上機實習,嫻熟把握循環(huán)語句、選擇語句、指針以及結構體的運用技巧。在實習中通過實際操作,編寫程序,發(fā)覺問題,最終解決問題,提升對c語言有用性的理解,在實踐中鞏固各學問點。 C語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點,上機實習可以關心我們更好地理解這種結構式的中級語言以及其各種各樣的數(shù)據(jù)類型和高效率的運算程序,為我們進一步學習C++打下堅實基礎。 同時,在實習過程中,通過相互發(fā)覺問題,共同解決問題,不僅熬煉了我們的合作力量,而 且也讓我們發(fā)覺了一些自己的個人誤區(qū)以及其他人簡單犯的錯誤,從而在今后的學習中更加謹慎,達到事半功倍的效果;通過詢問老師,也讓我們養(yǎng)成了不恥下問的好習慣,這將很有利于以后的學習。 閑樂-一個人閑。不如大家一塊兒樂/retype/zoom/9861aabdfd0a79563c1e72ad?pn=2 //定義一個數(shù)組a[11],用以存放同學的成果 printf(“從鍵盤輸入10個同學成果: “); for(i=0;i 一、聽課,仔細學習,虛心求教 實習開頭的兩個星期,在指導老師的帶領下,我們開頭聽課,做好聽課記錄,仔細學習前輩的教學閱歷,我的體會是在教學前必需營造好的教學環(huán)境,教學過程中要把同學的學習愛好調動起來,使他們在歡樂中主動地學習,教學之后布置相應的練習進行鞏固。我的指導老師是一位剛進入訓練行業(yè)不久的女老師。雖然老師還很年輕,但在同學中的威望很高,可以在上課前就整理好班級的課堂秩序。在教學方面,老師依據(jù)課文的不同采納不一樣的教學方法,如對于文言文采納傳統(tǒng)式的教學,而說明文則采納新式的'教學方法,通過多媒體教學手段的幫助,通過圖片、音頻、視頻文件的展現(xiàn),加深同學對課文的理解。而在教學任務完成,則布置相應的作業(yè),如對于文言文課文的作業(yè)布置一般是完成練習,而對于說明文的作業(yè)一般是仿寫一篇說明文,關于小說的學習,如《臺階》一文,布置了寫一段“XXX,我想對你說”的小短文,200字左右,這樣,就能加深同學對于《臺階》課文中表達的人文精神的理解。 二、備課,備教材、備同學、備教法 教學就是教與學,兩者是相互聯(lián)系,不行分割的,有教者就必定有學者。同學是被教的主體。因此,了解和分析同學狀況,有針對地教對教學勝利與否至關重要。最初接觸教學的時候,我還不懂得了解同學對教學的重要性,只是用心討論書本,教材,想方設法令課堂生動,同學易接受。 備教材。要保證好的教學效果,不能單單營造活躍的課堂氣氛,搞花架子,而應當從教學內容中找到同學的興奮點。因此,課前預備肯定要充分。為了上好每一堂課,我都仔細討論課文,找出重點,難點,有針對性地講。為了令教同學動,不沉悶,我還為此查資料,參考教參以及網(wǎng)上優(yōu)秀教案和視頻,整理教案,預備相關教具,授課時就心中有數(shù)了。在教學過程中,語速、教學進程應依據(jù)教學內容的性質、重要性和大多數(shù)同學的適應程度敏捷把握,該快則快,應慢則慢。 備同學。我班上同學的語文水平層次不一,中等生、差生占較大多數(shù),尖子生相對較少。因此,課文講得太深,很難照看到整體,最初我備課時沒有考慮到這點,因此,教學效果不很抱負。從今可以看出,了解及分析同學實際狀況,做到因材施教,對授課效果有挺直影響。這就是訓練學中提到的“備教法的同時要備同學”。在教學反思中,我深深地理解了這一理論。 備教法。教學中,備課是一個必不行少,非常重要的環(huán)節(jié),備同學,又要備教法。備課不充分或者備得不好,會嚴峻影響課堂氣氛和主動性,辦公室里的一位老前輩對我說:“備課備不好,倒不如不上課,否則就是白費心機。”因此,每次上課之前,我都花費大量的時 間在備課之上,認仔細真鉆研教材和教法,參考網(wǎng)絡上的優(yōu)秀視頻和教案,有的課用講讀方法比較好,有的課同學自讀,老師進行引導比較好,有的用多媒體教學手段比較直觀形象等等,每節(jié)課都有比較相宜的方法。在備課時,我都仔細地討論課文,或向老師虛心請教,從而選擇教學方法。 備課的體會。一堂預備充分的課,會令同學和老師都獲益不淺。備課充分,能調動同學的學習主動性,增加教學效果。但同時老師又要具有駕馭課堂的力量,由于同學的行為也會挺直影響課堂教學。在中**語為漢語的這種大環(huán)境之下,同學對語文既熟識又生疏,所以要教好語文,就要讓同學寵愛語文,讓他們對語文產生愛好。為此,我在網(wǎng)上“取經”,就是盡量多講一些與課文相關的文化故事,讓他們產生學習愛好,更主動學習語文。由于只有語文水平提高,才能提高同學們的語文寫作力量。 三、授課,啟發(fā)愛好,創(chuàng)新方法 課堂教學 在啟發(fā)同學課堂愛好時,我采納如下方法:以課文相應的情感進行教學,這包括老師在教學過程中所用法的語調、表情、動作等;這一學齡的同學對美感已經有肯定的追求,所以在教學中,可以用美麗感人的語言激發(fā)愛好,“辭不行不修,說不行不善”,閃爍著才智完輝的語言具有豐富的表現(xiàn)力;以生動形象的比方激發(fā)愛好。 課后輔導 班上同學對于語文這門課程的理解不一樣,因此,導致他們對語文的重視程度也相應不同,這樣的話,語文水平自然層次不一,出現(xiàn)好差分化現(xiàn)象,嚴峻影響全班語文素養(yǎng)的提高。為此,我制定了詳細的方案和目標。對語文不抱負的同學進行有方案的輔導。我把這批同學分為兩類。第一類是學習主動性不高的同學,對這些同學,我實行集體輔導,給他們安排固定任務,不讓他們有偷懶的機會,讓他們發(fā)揮應有水平;其次類有學習主動性,但力量不強的同學。我對這部分同學進行適當引導,耐煩教育,肯定要留意言辭,避開損害同學,漸漸提高他們的語文水平。 作業(yè)批改 批改作業(yè),我訂正每個錯誤,在批語中強調訂正的重要性,并依據(jù)各個同學的狀況勉勵之,開導之。對那些在我要求訂正之后依舊不訂正的同學,我在課后找同學談話,做好他的思想工作。改作文,我花的精力更多,由于我發(fā)覺可以通過作文了解同學的性格、生活、愛好等各方面狀況,對于每一篇作文都寫上相應的評語,鼓舞他們寫得更好。仔細批改每一篇作文,對語言表達的通順與否、有無錯字進行指導。對于好句子,段落,或者作文,在相應的位置寫上評語鼓舞,將優(yōu)秀的作文當成.在全班朗讀。而對于錯誤的地方,則批上錯誤緣由。這樣的做法,可以提高同學寫作業(yè)的主動性,從而提高語文水平。 授課的體會 上課肯定要設法令同學投入,不讓其分心,這就很講究方法了。上課內容豐富,現(xiàn)實。教態(tài)自然,講課生動,難易適中照看全部,就自然能夠吸引住同學。所以,老師每天都要有充分的精神,讓同學感受到一種自然氣氛。這樣,授課就事半功倍。回看自己的授課,我感到有點愧疚,由于有時我并不能很好地做到這點。當同學在課堂上無心向學,違反紀律時,我的心情就受到影響,并且把這帶到教學中,讓原本正常的講課受到沖擊,發(fā)揮不到應有的水平,以致影響教學效果。我以后必需努力克服,討論方法,實行有利方法解決當中困難。 實習的內容除了專業(yè)課的教學實習,還有班主任工作的實習。在這段時間,通過對指 導老師劉老師以及辦公室其他班主任的學習,以及在初二(1)班的實踐,我有以下幾點心得。 1、深化同學之中,消退同學與老師之間的隔閡感,讓他們打快樂扉。在休息時間,我會主動找同學進行溝通,在溝通的過程中去發(fā)覺他們的心理問題。比如,甘德福同學總是在上課的時候講閑談,不遵守課堂秩序。我課下找他談天,發(fā)覺他講閑談的緣由是自制力不足,且學習主動性不足。針對這樣的問題,我同他分析上學與不上學的利與弊,并告知他同學時代的老師也是自制力不足,與他共享我克服這一問題的方法。經過半個多小時的談話之后,甘德福的表現(xiàn)向著好的方向轉變,上課也不再走神,也會仔細聽講。 2、定期的開展形式多樣的主題班會,達到訓練的目的。針對同學之間應當互幫互助,我開展了《舉手之勞》的主題班會,以印度甘地坐火車把剩下的鞋扔下火車的故事導入班會,再進行深化且貼近生活的分析,告知同學為什么要互幫互助,怎么互幫互助,關心他們培育樂于助人的良好品行。通過這次班會,班上同學之間的關系更加融洽。 3、獎懲適當。為了鼓舞進步的同學,要給以嘉獎,而對于犯錯的同學,則要適當懲處。這也就是說,獎懲也是班主任所應具備的力量。首先肯定要敬重同學的獨立人格,愛護好同學的自信念、自尊心。其次,懲處的目的不是為懲處而懲處同學,而是為訓練同學而懲處同學,換句話說,懲處是手段,訓練才是目的;再者,要給犯錯的同學接受教訓,改正錯誤的機會。 4、通過周記,了解同學狀況,實現(xiàn)師生心與心溝通。由于我的專業(yè)課實習是語文教學,而語文的指導老師給同學布置了周記的任務。因此,我可以同學每周的周記了解他們的心理狀況,大部分同學會在周記中寫自己現(xiàn)實生活中的歡樂與苦惱,如與伴侶相處不開心,同家人發(fā)生了小沖突,期中考試沒有考好等,有的問題我挺直在周記上賜予答復。有的問題我則會通過其他的途徑賜予答復。通過周記這個小平臺,同學一些小的心理問題也就能夠得到很好的解決,我和同學之間能夠實現(xiàn)心與心的溝通。 以上就是我在實習期間學習到的學問與閱歷。由于閱歷頗淺,很多地方存在不足,盼望在將來的日子里,能在各位老師,前輩的指導下,不斷學習,努力進取,取得更好成果。 C語言課程設計報告 第1章 目的任務 1.1實訓目的(1)鞏固C語言所學基本課程; (2)提高C語言編程的綜合應用能力; (3)學會C語言程序的編譯、調試方法。 1.2實訓任務 (1)掌握C語言中的基本數(shù)據(jù)輸入、輸出; (2)熟練掌握C語言中的三種基本結構的使用; (3)熟練使用C語言中的數(shù)組; (4)熟練使用C語言中的函數(shù); (幾)熟練使用C語言中的指針; (6)熟練使用C語言中的結構體。 第2章 主程序子程序 2.1主函數(shù)main main()函數(shù)是C程序的主函數(shù),也是入口函數(shù),所有C程序的執(zhí)行都從main開始至main結束。主函數(shù)使用了do… while語句和switch語句,在主函數(shù)中定義一個變量k,通過輸入k的值,實現(xiàn)輸入、輸出、修改、排序、查詢函數(shù)的調用以及程序的退出。 2.2 creat 通過scanf函數(shù)接受通訊錄信息,創(chuàng)建通訊錄并將其存入文件中。 2.3output 通過指針打開文件,實現(xiàn)對通訊錄的訪問。 2.4 search 通過scanf函數(shù),輸入所要查詢的信息,找到相對應的指針連接到相應文件,實現(xiàn)查找功能。 2.5append 通過指針打開相應文件,運用scanf函數(shù)進行對信息內容的添加。 2.6 modify 打開文件,通過fscanf函數(shù)對其中內容進行修改,并利用循環(huán)體進行保存。 2.7 delete 先運用結構體,并輸入所要修改的信息,通過指針找到對應信息并進行修改。 第3章 錯誤 1、電話的輸出為亂碼,原因:數(shù)據(jù)類型寫為“%d”與定義類型不一致,將其改為“%s”。 2、在輸入函數(shù)中出現(xiàn)警告:變量“j”在函數(shù)中定義但并未在output函數(shù)中使用,將“j”刪除。 3、在output函數(shù)中出現(xiàn)語法錯誤,將輸入法切換為英文輸入狀態(tài)輸入“:”。 4、在modify中需要邏輯“0”或“非0”,使用字符數(shù)組namekey[8],利用strcpy函數(shù)實現(xiàn)字符類數(shù)據(jù)的的順序調換。 5、在delete中缺少“}”,添加上“}”。 第4章 實訓總結 4.1思維方式方法 根據(jù)程序系統(tǒng)功能要求可以將程序分解為以下功能模塊: 創(chuàng)建通訊錄; 輸入學生通訊信息; 在通訊錄中查找; 添加通訊錄信息; 修改通訊錄信息; 刪除通訊錄信息; 4.2實訓感想體會 上機實驗是學習程序設計語言必不可少的實踐環(huán)節(jié),特別是C語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。 歷時9天的《C語言程序設計》已經結束了,在這幾天編程的過程中感觸頗多,實訓編程的同時暴露出了許多我自身存在的問題,同時也對自身有了很大的提高。 首先,對我以前做題做事非常馬虎的毛病有了很大的改進,通過在這幾天編程的過程中的鍛煉,我現(xiàn)在做題比以前仔細多了,會小心翼翼地去看每一個地方,會仔細地檢查程序的每一個字母、標點。 其次,在編程的過程當中彌補了我許多知識上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及時補上了欠缺。 再次,通過幾天綜合實訓編程使我的知識形成了一個完整的框架結構,而不再是零散的知識個體,使我在使用時更加的方便。 第四,在實習結束后,我對做完的習題檢查比再是一切的走馬觀花,而是仔細核對、認真檢查。第五,通過實習改變了我做題時心煩氣燥的習慣,現(xiàn)在做題可以平和靜氣的完成。 第六,通過實習我的自制能力更強了,基本完全可以控制自己,避免外界的干擾,安心地完成自己的工作。第七,實訓過程中,充分發(fā)揮團隊協(xié)作精神,共同進步,幫助我順利完成實訓課程。 總之,通過實習使我自身的知識體系得到鞏固、提高以及使團隊工作的能力得到鍛煉。 目 錄 一、前言?????????????????????????2 二、引言?????????????????????????2 2.1系統(tǒng)開發(fā)工具???????????????????? 2 2.2實習目的??????????????????? 3 2.3實習基本內容與要求?????????????????3 2.4實習時間安排???????????????????? 3 2.5實習地點?????????????????????? 3 2.6實習內容??????????????????????????? 3 三、學生成績管理系統(tǒng)分析?????????????????3.1系統(tǒng)概況??????????????????????4 3.2需求分析??????????????????????4 3.3總體功能要求????????????????????5 3.3.1總體功能模塊?????????????????? 5 3.3.2各函數(shù)的功能和實現(xiàn)???????????????? 6 3.3.3各部分流程圖??????????????????????? 6 3.3.4性能要求????????????????????????? 8 四、詳細設計???????????????????????8 4.1關鍵部分的代碼、說明及運行結果圖???????????????8 1、全局定義部分?????????????????????8 2、主程序部分??????????????????????8 3、輸入信息部分?????????????????????10 4、輸出信息部分?????????????????????12 5、排序部分??????????????????13 6、插入信息部分??????????????????14 7、刪除部分??????????????????15 4.2總程序????????????????????????16 五、實習心得體會?????????????????????24 六、附錄:參考文獻????????????????????25 一、前言 隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對學生成績信息進行管理,具有手工管理所無法比擬的優(yōu)點。例如,檢索迅速,查找方便,可靠性高,存儲量大,保密性好,壽命長,成本低等。這些優(yōu)點能極大地提高學生檔案管理的效率,也是企業(yè)的科學化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)學生成績管理系統(tǒng)很有必要。 學生成績管理系統(tǒng)是為了適應現(xiàn)代化學校的管理,加快推進數(shù)字化校園的建設、充分利用校園網(wǎng),利用網(wǎng)絡、多媒體等計算機應用技術和手段,提高辦公效率、改善質量的高效管理學校系統(tǒng)。 學生成績管理系統(tǒng)是系科綜合管理系統(tǒng)的重要組成部分,為學校學生層面的管理提供了一個有用的數(shù)字化學生成績管理系統(tǒng)的工具,在學校學生管理中起著舉足輕重的作用。 為了培養(yǎng)自己正確的程序設計思想,使平時學習的理論聯(lián)系實際,培養(yǎng)自己嚴肅認真,實事求是的科學態(tài)度和勇于探索的創(chuàng)新精神,培養(yǎng)自己綜合運用所學知識與實踐經驗,分析和解決相應領域的工程技術問題或進行軟件項目開發(fā)的能力。學院依照課程教學大綱和課程設計大綱提出了本次課程設計的題目及要求。 要求掌握C程序的基本結構和C語言基本的數(shù)據(jù)結構,熟悉C程序的編輯、編譯、調試和運行過程,了解程序設計的一般方法、結構化程序設計的思想,熟悉算法的描述工具—N—S流程圖的使用及常用算法,能夠熟練地閱讀用C語言編寫的程序,能夠運用結構化程序設計編寫C程序。 二、引言 2.1系統(tǒng)開發(fā)工具簡介 WIN-TC是一個TC2 WINDOWS平臺開發(fā)工具。該軟件使用TC2為內核,提供WINDOWS平臺的開發(fā)界面,因此也就支持WINDOWS平臺下的功能,例如剪切、復制、粘貼和查找替換等。而且在功能上也有它的獨特特色例如語法加亮、C內嵌匯編、自定義擴展庫的支持等。并提供一組相關輔助工具 令你在編程過程中更加游刃有余,如虎添翼。本軟件用于編寫C語言程序。2.2實習目的 進一步加深、鞏固所學專業(yè)課程(《C語言程序設計》)的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握運用C語言獨立地編寫、調試應用程序和進行其它相關設計的技能。 使學生在掌握C語言的基本語法的基礎上,能夠更好的理解和運用其解決實際問題。在實踐實習操作中讓學生對結構化程序設計有更進一步深刻的認識與了解,提高學生的實踐操作能力。2.3、實習基本內容與要求: 用鏈表實現(xiàn)簡單的學籍管理 1、總體功能要求 (1)鏈表的建立:每個節(jié)點包括:學號、姓名、性別、語文、數(shù)學、英語、總分; (2)節(jié)點的插入:按學號的順序插入;(3)刪除鏈表中的節(jié)點:按學號或者姓名;(4)鏈表的輸出:按學號排序、按總分排序。 2、性能的要求: (1)各個功能分別用函數(shù)實現(xiàn);(2)節(jié)點信息讓用戶通過鍵盤輸入;(3)總分通過計算獲得;(4)有簡單的操作界面; (5)盡可能考慮程序的容錯性、可操作性。 3、寫實習報告以及心得體會 2.4實習時間安排 2011年7月12日 在服務器上下載應用程序、實習報告模板,練習書本第11章的例題 2011年7月13日 在自己的機器上程序設計 2011年7月14日 程序設計 2011年7月15日 撰寫實習報告及心得體會 2011年7月16日 交實習報告 2.5 實習地點:c1 2樓機房 2.6實習內容 對學生信息(包括姓名、學號、語文、數(shù)學、英語、平均分、總分)進行管理,包括學生成績的信息輸入、輸出、查詢、刪除、排序、退出、保存.將學生的成績信息進行記錄,信息內容包含:(1)學生的學號(2)學生的姓名(3)學生的成績。假設,現(xiàn)收集到了一個班學生的所有成績信息,要求用C語言編寫一個簡單的成績管理系統(tǒng),可進行錄入、查詢、修改、排序和瀏覽等功能。學習相關開發(fā)工具和應用軟件,熟悉系統(tǒng)建設過程。 三、學生成績管理系統(tǒng)分析 3.1系統(tǒng)概況 本次實習是通過建立一個學生學籍管理系統(tǒng)來更好的認識和掌握C語言中鏈表這一重要的知識內容.本系統(tǒng)實現(xiàn)的功能如下: 1.創(chuàng)建學生學籍信息,每個學生學籍信息包括:學號、姓名、語文、數(shù)學、英語、平均分、總分; 2.插入信息:按照學號由小到大的循序插入信息; 3.查找信息:通過選擇按照學號或者姓名來查找到該學生的信息; 4.刪除信息:通過選擇按照學號或者按照姓名刪除某個學生學籍信息; 5.輸出信息:通過選擇按學號(由小到大)或者總分(由小到大)或者平均分(由小到大)來輸出信息; 6.保存信息:對學生學籍系統(tǒng)中的信息以記事本的學生進行保存。 本系統(tǒng)的亮點是在運用模塊來組建該學生學籍管理系統(tǒng),也就是說各個功能以模塊的實現(xiàn),通過主函數(shù)來調用模塊,實現(xiàn)管理功能,這樣程序結構清晰,容易檢查到錯誤所在模塊,減少了調試的壓力。其次,是運用結構體來組織數(shù)據(jù),數(shù)據(jù)結構規(guī)范,通過指針的操作很容易實現(xiàn)簡單的查找、刪除、輸出等操作。最后,容錯性較好,比如輸入成績輸入時按照我們百分制輸入,必須輸入1-100之間的數(shù)字,如果輸入的不是1-100中的數(shù)據(jù),在系統(tǒng)將顯示信息錯誤信息,要求重新輸入。 軟件配備:TurboC2.0,Windows 2000/20003/xp等; 硬件配備:內存:512MB及以上; 外存:60GB及以上; CPU: 奔4及以上; 3.2需求分析 1、用C語言實現(xiàn)系統(tǒng); 2、對學生信息(包括學號、姓名、語文、數(shù)學、英語、平均分)進行管理,包括學生成績的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計、退出.3、學生信息包括:其內容較多,為了簡化討論,要求設計的管理系統(tǒng)能夠完成以下功能: (1)、每一條記錄包括一個學生的學號、姓名、3門課成績 (2)、成績信息錄入功能:(成績信息用文件保存,可以一次完成若干條記錄的輸入。)(3)、成績信息顯示瀏覽功能:完成全部學生記錄的顯示。(4)、查詢功能:完成按姓名查找學生記錄,并顯示。(5)、成績信息的刪除:按學號進行刪除某學生的成績.(6)、排序功能:按學生平均成績進行排序。 (7)、應提供一個界面來調用各個功能,調用界面和各個功能的操作界面應盡可能清晰美觀!3.3總體功能要求 3.3.1總體功能模塊 學生成績管理信息系統(tǒng)的主界面,包括六個內容:信息輸入,信息輸出,信息刪除,信息的排序,信息的查找和信息的保存。 信息輸入包括創(chuàng)建信息和信息添加:其中創(chuàng)建的學生信息包括學生的學號,姓名,性別以及語文,數(shù)學,英語三門課程的成績。信息添加的內容也是創(chuàng)建的所有學籍信息。 信息刪除是按照學生的學號進行刪除。 信息的排序也可以分為三種方法進行:一是按照學號進行排序,二是根據(jù)學生語文、數(shù)學、英語三門課程的總分進行排序,三是根據(jù)學生語文、數(shù)學、英語三門課程的平均分進行排序。 信息的查找時按照學生的學號進行查找。 信息的保存是通過程序與文件的鏈接進行的,可以直接將學生成績以記事本的形式保存到指定文件夾中。 總 體 功 能 模 塊 圖 3.3.2各函數(shù)的功能和實現(xiàn) 1、輸入初始的學生信息:輸入信息包括學生的姓名、學號以及學生的成績等相關信息;可用函數(shù)void input(STUDENT *data, int *len)來實現(xiàn)此操作。 2、成績輸出模塊:輸出學生的信息以及成績void output(STUDENT *data, int len):通過學生的姓名來查看學生的相關成績,同時也可以分別通過caverage()、maverage()、eaverage()和comaverage()來輸出成績的平均分數(shù)、最高和最低分數(shù)。 3、成績查詢模塊:可用void find(STUDENT *data, int len)來實現(xiàn)。找到就輸出此學生全部信息。 4、刪除模塊:用函數(shù)void delete_item(STUDENT *data, int *len)來實現(xiàn) 5、排序模塊:用函數(shù)void sort(STUDENT *data, int len)來實現(xiàn) 6、統(tǒng)計功能能:用函數(shù)void stat(STUDENT *data, int len)來實現(xiàn) 7、退出系統(tǒng):可用一個函數(shù)exit()來實現(xiàn),首先將信息保存到文件中,釋放動態(tài)創(chuàng)建的內存空間,再退出此程序。 3.3.3各部分流程圖 1.學生信息輸入流程圖 2.學生信息輸出流程圖 3.刪除的流程圖 4.插入信息的流程圖 5.對信息的排序流程圖 3.3.4性能要求 1、功能分別用函數(shù)實現(xiàn); 2、信息讓用戶通過鍵盤輸入; 3、通過計算獲得; 4、簡單的操作界面; 5、可能考慮程序的容錯 四、詳細設計 4.1關鍵部分的代碼、說明及運行結果圖 1、全局定義部分 #include 2、主程序部分 main()/*主函數(shù)*/ {struct student *head,*stu;long del_num;int N;a: printf(“The student information management system n”);printf(“n(LIST)n”);printf(“ 1.Create a new namelistn”);printf(“ 2.Print the namelistn”);printf(“ 3.Delete a record from the namelistn”);printf(“ 4.insert a recordn”);printf(“ 5.sort the programmen”);printf(“ 0.exit the programmen”);printf(“please enter the number:”);scanf(“%d”,&N);switch(N){case 0:exit(0);goto end;case 1: printf(“input records:n”);head=creat();print(head);break;case 2: print(head);break;case 3: printf(“ninput the delete number :”);scanf(“%1d”,&del_num);while(del_num!=0){head=del(head,del_num);print(head);printf(“ninput the deleted number:”);scanf(“%1d”,&del_num);}break;case 4: printf(“ninput the insert record:”);stu=(struct student *)malloc(LEN);printf(“nplease input number :”);scanf(“%ld”,&stu->num);printf(“please input name”);scanf(“%s”,&stu->name);printf(“please choose sex(f or m):”);scanf(“%s”,&stu->sex);printf(“please input chinese score:”);scanf(“%d”,&stu->chinese);printf(“please input maths score:”);scanf(“%d”,&stu->maths);9 printf(“please input english score:”);scanf(“%d”,&stu->english);while(stu->num!=0){head=insert(head,stu);print(head);printf(“ninput theinsert record:”);stu=(struct student*)malloc(LEN);printf(“nplease input number:”);scanf(“%ld”,&stu->num);printf(“please input name:”);scanf(“%s”,&stu->name);printf(“please choose sex(f or m):”);scanf(“%s”,&stu->sex);printf(“please input chinese score:”);scanf(“%d”,&stu->chinese);printf(“please input maths score:”);scanf(“%d”,&stu->maths);printf(“please input english score:”);scanf(“%d”,&stu->english);break;case 5: head=sort(head);print(head);break; }goto a;end:;} } 3、輸入信息部分 /*輸入數(shù)據(jù)*/ scanf(“%ld”,&p1->num);if(p1->num!=0){ a: printf(“Input student's name: ”);scanf(“%s”,&p1->name);b: printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);c: printf(“Input chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0)/*驗證成績是否在0——100之間*/ {printf(“Please enter a number between 0 to 100!n”);10 goto c;} d: printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100!n”);goto d;} e: printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100!n”);goto e;} } head=NULL;while(p1->num!=0){ n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&p1->num);if(p1->num!=0){printf(“Input student's name: ”);scanf(“%s”,&p1->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);printf(“Input Chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0){printf(“Please enter a number between 0 to 100n”);/*績是否在0——100之間*/ goto c;} printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100n”);/*是否在0——100之間*/ 11 驗證成驗證成績 goto d;} printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100n”);goto e;} } } p2->next=NULL;return(head);} 輸入界面如下: 4、輸出信息部分 /*輸出鏈表*/ void print(struct student *head){ struct student *p;printf(“n=============Student information=============n”);printf(“nthe %d recrods are:n”,n);printf(“| NO.| Name | Sex |Chi |math|Eng | sum|n”);printf(“|----------|--------|-----|----|----|----|------|n”);p=head;if(p!=NULL)do { p->sum=p->chinese+p->math+p->english;/*求總分賦給totalscorescore*/ /*輸出各項值*/ 12 printf(“|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|n”, p->num, p->name,p->sex,p->chinese,p->math, p->english,p->sum);p=p->next;/*將p原來指向的節(jié)點中next的值賦給p,使p指向第下一個節(jié)點*/ p->sum=NULL;/*將總分totalscorescore賦空地址*/ }while(p!=NULL);else printf(“nNo recordsn”);printf(“===============END====================n”);} 5、排序部分 struct student *sort(struct student *head)/*{int i=0;struct student *p,*q,*t,*h1;h1=head->next;head->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;p=head;q=head;while(t->total>p->total&&p!=NULL){q=p;p=p->next;} if(p==q){t->next=p;head=t;} else {t->next=p;q->next=t;} } p=head;while(p!=NULL){i++;p->order=i;p=p->next;} printf(“sort sucess!n”);return(head);} 如按總分排序,界面如下: 排序函數(shù)*/ 按學號排序,界面如下: 6、插入信息部分 /*插入結點函數(shù)*/ struct student *insert(struct student *head,struct student *stud){struct student *p0,*p1,*p2;p1=head;p0=stud;if(head==NULL){head=p0;p0->next=NULL;} else {while((p0->num>p1->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;} if(p0->num<=p1->num){if(head==p1)head=0;else p2->next=p0;14 p0->next=p1;} else {p1->next=p0;p0->next=NULL;} } n=n+1;p1->order=n;return(head);} 7、刪除部分 /*刪除節(jié)點*/ struct student *del(struct student *head,long num)/*參數(shù)為起始地址head和學號number*/ { struct student *p1,*p2;if(head==NULL){printf(“nlist null!n”);} p1=head;while(num!=p1->num&&p1->next!= NULL)/**p1指向的不是所要找的節(jié)點,并且后面還有節(jié)點*/ { p2=p1;p1=p1->next;/**p1后移一個節(jié)點*/ } if(num==p1->num){ if(p1==head)head=p1->next;/*若p1指向的是頭節(jié)點,把第二個節(jié)點地址賦予head*/ else p2->next=p1->next;/*否則將下一節(jié)點地址賦給前一節(jié)點地址*/ printf(“delete:%ldn”,num);n=n-1;} else printf(“%ld not been found!n”,num);/*找不到該節(jié)點*/ return(head);} 界面如下:刪除后 4.2、總程序 #include int n;/*n為全局變量,定義為節(jié)點個數(shù)*/ /*創(chuàng)建鏈表,帶回一個指向鏈表頭的指針*/ struct student *creat(vonum){ struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student*)malloc(LEN);/*開辟一個新單元*/ 16 printf(“nInput student's number:(press 0 to exit)”);/*輸入數(shù)據(jù)*/ scanf(“%ld”,&p1->num);if(p1->num!=0){ a: printf(“Input student's name: ”);scanf(“%s”,&p1->name);b: printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);c: printf(“Input chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0)/*驗證成績是否在0——100之間*/ {printf(“Please enter a number between 0 to 100!n”);goto c;} d: printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100!n”);goto d;} e: printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100!n”);goto e;} } head=NULL;while(p1->num!=0){ n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&p1->num);if(p1->num!=0){printf(“Input student's name: ”);17 scanf(“%s”,&p1->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);printf(“Input Chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0){printf(“Please enter a number between 0 to 100n”);/*驗證成績是否在0——100之間*/ goto c;} printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100n”);/*是否在0——100之間*/ goto d;} printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100n”);goto e;} } } p2->next=NULL;return(head);} /*輸出鏈表*/ void print(struct student *head){ struct student *p;printf(“n=============Student information=============n”);printf(“nthe %d recrods are:n”,n);printf(“| NO.| Name | Sex |Chi |math|Eng | sum|n”);printf(“|----------|--------|-----|----|----|----|------|n”);p=head;if(p!=NULL)do { p->sum=p->chinese+p->math+p->english;/*求總分賦給totalscorescore*/ /*輸出各項值*/ 18 驗證成績 printf(“|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|n”, p->num, p->name,p->sex,p->chinese,p->math, p->english,p->sum);p=p->next;/*將p原來指向的節(jié)點中next的值賦給p,使p指向第下一個節(jié)點*/ p->sum=NULL;/*將總分totalscorescore賦空地址*/ }while(p!=NULL);else printf(“nNo recordsn”);printf(“===============END====================n”);} /*刪除節(jié)點*/ struct student *del(struct student *head,long num)/*參數(shù)為起始地址head和學號number*/ { struct student *p1,*p2;if(head==NULL){printf(“nlist null!n”);} p1=head;while(num!=p1->num&&p1->next!= NULL)/**p1指向的不是所要找的節(jié)點,并且后面還有節(jié)點*/ { p2=p1;p1=p1->next;/**p1后移一個節(jié)點*/ } if(num==p1->num){ if(p1==head)head=p1->next;/*若p1指向的是頭節(jié)點,把第二個節(jié)點地址賦予head*/ else p2->next=p1->next;/*否則將下一節(jié)點地址賦給前一節(jié)點地址*/ printf(“delete:%ldn”,num);n=n-1;} else printf(“%ld not been found!n”,num);/*找不到該節(jié)點*/ return(head);} /*插入節(jié)點*/ struct student *insert(struct student *head,struct student *stud)/*stud是一個指針變量,從實參傳來待插入節(jié)點的地址給stud*/ { struct student *p0,*p1,*p2;p1=head;/*使p1指向第一個節(jié)點*/ p0=stud;/*p0指向要插入的節(jié)點*/ if(head==NULL)/*原來的鏈表是空表*/ {head=p0;p0->next=NULL;/*使p0指向的節(jié)點作為頭節(jié)點*/ 19 } else { while((p0->num>p1->num)&&(p1->next!=NULL)){ p2=p1;/*使p2指向剛才p1指向的節(jié)點*/ p1=p1->next;/*p1后移一個節(jié)點*/ } if(p0->num num){ if(head==p1)head=p0;/* else p2->next=p0;/* p0->next=p1;} else {p1->next=p0;p0->next=NULL;} /* } n=n+1;/*節(jié)點數(shù)加1*/ return(head);} /*exchange the element of chain*/ void swap(struct student* q1,struct student* q2){long temp_num;char temp_name;char temp_sex[10];int temp_chinese;int temp_math;int temp_english;int temp_sum;char s1[20]; temp_num=q1->num;q1->num=q2->num;q2->num=temp_num; strcpy(s1,q1->name);strcpy(q1->name,q2->name);strcpy(q2->name,s1); temp_sex[10]=q1->sex[10];q1->sex[10]=q2->sex[10];q2->sex[10]=temp_sex[10]; 插到原來第一個節(jié)點之前*/ 插到p2指向的節(jié)點之后*/ 插到最后的節(jié)點之后*/ temp_chinese=q1->chinese;q1->chinese=q2->chinese;q2->chinese=temp_chinese; temp_english=q1->english;q1->english=q2->english;q2->english=temp_english; temp_math=q1->math;q1->math=q2->math;q2->math=temp_math; temp_sum=q1->sum;q1->sum=q2->sum;q2->sum=temp_sum;} /*sort by num*/ struct student * sort_num(struct student* head){struct student *p0,*p1,*p2;p0=head;do{ p1=p0;p2=p1;do{ if(p1->num>p2->num)p1=p2;p2=p2->next;}while(p2!=NULL);if(p1!=p0)swap(p0,p1);p0=p0->next;}while(p0!=NULL);return(head);} /*sort by totalscore form high to low*/ struct student * sort_sum(struct student* head){struct student *p0,*p1,*p2;p0=head;do{ p1=p0;p2=p1;do{ if(p1->sum sum)p1=p2;21 p2=p2->next;}while(p2!=NULL);if(p1!=p0)swap(p0,p1);p0=p0->next;}while(p0!=NULL);return(head);} /*主程序*/ main(){struct student *head,*stu;char aa;long del_num;M: printf(“n************welcome System************nn”); to the School Management printf(“***************************************************************n”);printf(“n************ made by GIS1011 chenliuqing 1020209124 ************n”);printf(“* 1.Input students' records 2.Print students' records *n* 3.Delete records 4.Insert records *n* 5.Sort by number 6.Sort by totalscore *n* 7.System Information 8.Exit *n ”); printf(“********************END****************************************n”);printf(“********* ***************n”);aa=getch();aa=tolower(aa);switch(aa){ case'1': printf(“nInput students' records”);head=creat();/*返回頭指針*/ print(head);/*輸出全部節(jié)點*/ break;/*調用輸出鏈表函數(shù)*/ case'2':print(head);/*輸出全部節(jié)點*/ break;/*調用刪除節(jié)點函數(shù)*/ case'3': printf(“nInput the deleted number(press 0 to exit): ”);scanf(“%ld”,&del_num);while(del_num!=0){head=del(head,del_num);/*返回頭指針*/ print(head);/*輸出全部節(jié)點*/ please choose the number before command 22 printf(“nInput the deleted number(press 0 to exit): ”);scanf(“%ld”,&del_num);} break;/*調用插入節(jié)點函數(shù)*/ case'4': printf(“nInput the inserted record”);stu=(struct student*)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&stu->num);if(stu->num!=0){ printf(“Input student's name:”);scanf(“%s”,stu->name);printf(“Input student's sex(f or m):”);scanf(“%s”,stu->sex);printf(“Input chinese score: ”);scanf(“%d”,&stu->chinese);printf(“Input math score: ”);scanf(“%d”,&stu->math);printf(“Input english score: ”);scanf(“%d”,&stu->english);} while(stu->num!=0){ head=insert(head,stu);print(head);/*輸出全部節(jié)點*/ printf(“Input the inserted record”);stu=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&stu->num);printf(“Input student's name: ”);scanf(“%s”,stu->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,stu->sex);printf(“Input Chinese score:”);scanf(“%d”,&stu->chinese);printf(“Input math score:”);scanf(“%d”,&stu->math);printf(“Input english score:”);scanf(“%d”,&stu->english);} break;/*調用按學號(從小到大)排序函數(shù)*/ case '5': head=sort_num(head);print(head);/*輸出全部節(jié)點*/ 23 break;/*調用按總分(從高到低)排序函數(shù)*/ case '6': head=sort_sum(head);print(head);/*輸出全部節(jié)點*/ break;case'7':printf(“n~~~~~~~~~~~~System Information~~~~~~~~~~~~n”);printf(“School Management SystemnMade Time:2010-7-24nVersion number:1.0nn”);printf(“~~~~~~~~~~~~~~~~~~ /*顯示系統(tǒng)信息*/ break;case'8':exit();/*退出程序*/ /*調用創(chuàng)建鏈表函數(shù)*/ } goto M;/*返回、顯示主菜單*/ } END By xugaohongnFinish ~~~~~~~~~~~~~~~~~~nnn”); 五、實習心得體會 由于本課題中的許多知識點都沒有學過都要靠自己到課外的資料中去查找。在用的時候難免出現(xiàn)這樣那樣的錯誤。如開始設計出來的菜單不是預想的那樣,而是總個窗中出現(xiàn)混亂。解決的這個問題的辦法是調整。一個系統(tǒng)的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設計的這個系統(tǒng)。在設計的調試過程中也無法順利的完成調試工作。有了一個清晰簡單的菜單和一些提示信息這后,調試過程完成的非常順利。通過本次C語言程序設計的實習,我學得了很多知識,雖然在之前老師沒有詳細講鏈表的內容,但是我通過自己看書,同學一起討論,會用鏈表處理簡單的實際問題了,并對鏈表的建立、結點的插入、刪除節(jié)點以及鏈表的輸出等一系列鏈表知識有了較為深刻的認識。而且自己的實際操作能力也有了提高。 回顧起此次課程設計,我感慨頗多,的確,從拿到題目到完成整個編程,從理論到實踐,在整整兩個禮拜的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我們懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能 24 真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體??通過這次課程設計之后,一定把以前所學過的知識熟悉了,本次課程設計結束了,我們通過這次實踐學到了許多知識。學到了設計一個簡單的系統(tǒng)。要注意哪些方面。也使我們知道自己哪些方面做得還不夠。這不僅是程序設計,更是鍛煉我們處理問題的能力,同時也使我們了解到團隊合作的可貴.編寫程序是件細心活,稍不留神就會出錯,這就必須要求我們對待事情要認真!在編寫程序的過程中,錯誤不斷出現(xiàn),不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數(shù)等等)層出不窮,這考驗我們待事細心,耐心,能不能堅持到底,不能半途而廢。但我們總結出了一點點的經驗如下: 1、要對系統(tǒng)的功能和要求做出詳細的分析,并合理分解任務。 2、把分解出來的子任務,做給一個相對獨立的模塊。 3、在設計一個模塊之前,要簡單構想一下總界面的顯視情況。 4、針對構想出來的界面進行程序的編寫。 六、附錄: 參考文獻 教材和主要參考書目:(1)教材:《C程序設計》,譚浩強編著,清華大學出版社(2)主要參考書目: ①《C程序設計教程》,譚浩強編著,清華大學出版社; ②《C語言程序設計——習題與實驗指導》,譚浩強編著,清華大學出版社。 西安科技大學 《C/C++語言程序設計》 課程設計報告 題 目 院、系(部) 專業(yè)及班級 姓 名 日 期 1設計目的 設計一個職工信息管理系統(tǒng),使之能提供以下功能: 1)錄入職工信息并保存 2)顯示所有職工信息 3)查詢職工信息 4)修改職工信息并保存 5)刪除職工信息 需求說明: 職工信息包括職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等,并且要求職工號不重復; 錄入的職工信息要求用文件形式保存,并可以對其進行瀏覽、查詢、修改、刪除等基本操作; 職工信息的顯式要求有一定的規(guī)范格式; 對職工信息應能夠分別按工資及按學歷兩種方式進行,要求能返回所有符合條件的職工的信息; 對職工信息的修改應逐個地進行,一個職工信息的更改不應影響其他的職工記錄; 所設計的系統(tǒng)應以菜單方式工作,應為用戶提供清晰的使用提示,依據(jù)用戶的選擇來進行各種處理,并要求在此過程中能夠盡可能的兼容用戶使用過程中的異常情況。總體設計 1.該系統(tǒng)可以按功能進行模塊劃分,其模塊圖如下: 系統(tǒng)模塊圖 其中: 信息輸入模塊完成職工信息的輸入功能,輸入信息包括職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等; 信息瀏覽模塊完成已錄入職工信息的顯示; 信息查詢模塊完成職工信息的查詢,查詢時對應有按工資查詢和按學歷查詢兩種方式; 信息修改模塊完成職工信息的修改功能; 信息刪除模塊完成職工信息的刪除功能; 菜單選擇模塊完成用戶命令的接收,此模塊也是職工信息管理系統(tǒng)的入口,用戶所要進行的各種 操作均需在此模塊中進行選擇并進而調用其他模塊實現(xiàn)相應的功能; 2.數(shù)據(jù)結構 本系統(tǒng)中主要的數(shù)據(jù)結構就是職工的信息,包含職工號、姓名、性別、出生年月、學歷、職務、工資、住址、電話等,在處理過程中各項可以作為一個職工的不同屬性來進行處理 3.程序流程 系統(tǒng)的執(zhí)行應從功能菜單的選擇開始,依據(jù)用戶的選擇來進行后續(xù)的處理,直到用戶選擇退出系統(tǒng)為止,其間應對用戶的選擇做出判斷及異常處理。系統(tǒng)的流程圖如下: 程序流程圖 詳細設計 對應于總體設計時的系統(tǒng)功能模塊圖,各個功能模塊的處理邏輯如下: ① 信息輸入模塊: 打開職工信息文件; while(繼續(xù)輸入){ 讀入職工信息; 將讀入信息添加到職工信息文件中; 提示是否繼續(xù)輸入; } 關閉職工信息文件; ② 信息瀏覽模塊: 打開職工信息文件; while(不到文件結束){ 從文件中順序讀出一個職工的信息; 按指定格式輸出該職工的信息; } 關閉職工信息文件; ③ 信息查詢模塊: while(仍繼續(xù)查詢){ if(按工資查詢){ 讀入查詢的職工工資條件; 打開職工信息文件; while(不到文件結束){ 順序讀出一個職工的信息; if(該職工信息的工資符合條件)輸出該職工的信息; } 關閉職工信息文件; 提示共有幾條符合條件的記錄; } else if(按學歷查詢){ 讀入學歷查詢的條件; 打開職工信息文件; while(不到文件結束){ 順序讀出一個職工的信息; if(該職工信息的學歷符合條件)輸出該職工的信息; } 關閉職工信息文件; 提示符合條件的記錄數(shù); } else 提示輸入不合適; 提示是否繼續(xù)查詢; } ④ 信息修改模塊: while(繼續(xù)修改){ 從給出信息文件中所有的記錄情況; 提示并讀入待修改的記錄的職工的職工號; 打開職工信息文件; 查找并讀出該職工的信息到一個中間變量中; 提示并讀入要針對該職工的哪個屬性進行修改; 根據(jù)用戶的選擇提示并讀入所要修改屬性的新值; 在該職工的中間變量中修改剛剛讀入的屬性值; 提示是否確定要進行修改; 如果用戶確定則將中間變量重新寫回到原職工信息文件中; 關閉職工信息文件; } ⑤ 信息刪除模塊: while(繼續(xù)刪除){ 顯示所有職工的信息; 提示并讀入待刪除的職工的職工號; 打開職工信息文件; 查找是否有符合條件的職工記錄; if(有符合條件的記錄){ 提示是否確認該刪除操作; if(用戶確認此操作){ 創(chuàng)建一個新的臨時文件; 打開原信息文件; while(原信息文件中記錄未讀完){ 讀出原信息文件中的下一條記錄; if(此條記錄不是待刪除記錄)寫入臨時文件中去; } 關閉原信息文件; 關閉臨時文件; 讀方式打開臨時文件; 寫方式重建與原信息文件同名的新信息文件; 將臨時文件中的內容寫入到新信息文件中去; 關閉新信息文件; 關閉臨時文件; 刪除臨時文件; } } else 提示沒有符合條件的記錄存在; } ⑥ 菜單選擇模塊: 給出信息提示; 清屏; 繪制菜單(包含輸入、顯示、查詢、修改、刪除、退出); 提示菜單選擇并讀入到變量; 根據(jù)讀入變量的值調用不同的模塊函數(shù); 數(shù)據(jù)結構: 性別: enum Sex{ male, female };學歷 :enum Education{ high, junior, college, master, doctor};日期 :struct Date { int year;int month;int day;};職工信息:struct Info { char num[5];/* 職工號 */ char name[8];/* 姓名 */ enum Sex sex;/* 性別 */ struct Date birthday;/* 出生年月*/ enum Education education;/* 學歷 */ char duty[8];/* 職務 */ double wage;/* 工資 */ char addr[12];/* 地址 */ char phone[8];/* 電話 */ };第二篇:語言類實習報告
第三篇:C語言實習報告123
第四篇:c語言實習報告
第五篇:c語言實習報告