




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
..摘要利用所學(xué)過的C語言知識,采用結(jié)構(gòu)化程序設(shè)計(jì)方法,設(shè)計(jì)一個學(xué)生成績管理檔案程序,該程序的主要功能為:0將表格初始化,1建立學(xué)生成績表格,2從表中刪除原有紀(jì)錄,3顯示單鏈表中所有記錄,4按照姓名查找紀(jì)錄,5計(jì)算所有學(xué)生的總分和均分,6插入紀(jì)錄到表中,7復(fù)制文件,8將所有學(xué)生成績排序,9分類合計(jì),10退出。該系統(tǒng)功能完善,界面友好,短小經(jīng)用,使用方便,即使是不熟悉計(jì)算機(jī)也可以自如的使用該系統(tǒng)。通過上機(jī)調(diào)試運(yùn)行與模擬操作,完成對學(xué)生成績的管理,減輕管理人員的勞動強(qiáng)度,提高一個學(xué)校的自動化管理水平。關(guān)鍵詞:學(xué)生成績管理;結(jié)構(gòu)化程序設(shè)計(jì);調(diào)試運(yùn)行;功能完善目錄第一章概述11.1項(xiàng)目背景11.2工作環(huán)境1第二章系統(tǒng)分析22.1系統(tǒng)需求分析22.2系統(tǒng)功能分析2模塊實(shí)現(xiàn)算法2進(jìn)入主菜單。32.2.3建立學(xué)生表格3從表中刪除原有紀(jì)錄3顯示單鏈表中所有記錄3按照姓名查找紀(jì)錄3計(jì)算所有學(xué)生的總分和均分4插入紀(jì)錄到表中4復(fù)制文件4將所有學(xué)生成績排序5分類合計(jì):5退出5第三章總體設(shè)計(jì)63.1軟件描述63.2設(shè)計(jì)方法63.3軟件結(jié)構(gòu)63.4文件及函數(shù)組成7第五章使用說明10第六章工作總結(jié)16參考文獻(xiàn)〔參考書或論文或文章17附錄源代碼18..第一章概述現(xiàn)今已步入高速發(fā)展的時代,電腦技術(shù)發(fā)展日新月異,時代潮流也不斷變革,競爭越發(fā)激烈,時間就是金錢,但是就是在一些瑣碎的事上面浪費(fèi)了大量的時間,例如查詢資料之類.如果我們把浪費(fèi)的時間用于其他方面,勢必會有更大的收益.應(yīng)此需求,為使廣大教師掌握更多的時間,相應(yīng)的開發(fā)出此軟件—學(xué)生成績管理軟件系統(tǒng).而編寫詳細(xì)設(shè)計(jì)說明書是軟件開發(fā)過程必不可少的部分,其目的是為了使開發(fā)人員在完成概要設(shè)計(jì)說明書的基礎(chǔ)上完成概要設(shè)計(jì)規(guī)定的各項(xiàng)模塊的具體實(shí)現(xiàn)的設(shè)計(jì)工作。本軟件屬于綠色軟件,適合任何層次的用戶,因此本說明書的預(yù)期讀者范圍相當(dāng)廣。1.1項(xiàng)目背景軟件名稱學(xué)生成績管理相關(guān)單位主要是學(xué)校用于學(xué)校的成績管理1.2工作環(huán)境A.一臺586以上的微機(jī)及兼容B.內(nèi)存16MB〔最好32MB內(nèi)存C.VGA彩顯一臺第二章系統(tǒng)分析2.1系統(tǒng)需求分析隨著網(wǎng)絡(luò)經(jīng)濟(jì)時代的到來,社會飛速的發(fā)展,人們的生活發(fā)生著日新月異的變化,高新技術(shù)正驅(qū)趕著人們生活的腳步,人們對工作生活的要求也日益提高,特別是計(jì)算機(jī)的應(yīng)用及普及到經(jīng)濟(jì)和社會生活的各個領(lǐng)域。使原本的舊的管理方法越來越不適應(yīng)現(xiàn)在社會的發(fā)展。許多人還停留在以前的手工操作,隨著各個學(xué)校的規(guī)模增大,有關(guān)學(xué)生成績管理工作所涉及的數(shù)據(jù)量越來越大,有的學(xué)校不得不靠增加人力、物力來進(jìn)行學(xué)生成績管理,但手工管理具有效率底、,這大大地阻礙了人類經(jīng)濟(jì)的發(fā)展。為了適應(yīng)現(xiàn)代社會人們高度強(qiáng)烈的時間觀念,用計(jì)算機(jī)對學(xué)校學(xué)生成績進(jìn)行管理已逐步取代了傳統(tǒng)的管理方式。學(xué)生成績查詢系統(tǒng)對學(xué)校加強(qiáng)學(xué)生成績管理有著極其重要的作用。由于各個大學(xué)都在持續(xù)擴(kuò)招,學(xué)生的數(shù)量日益龐大,傳統(tǒng)的手工成績管理不僅工作量大,而且容易出現(xiàn)問題。從而需要對學(xué)生成績管理等工作方面提高精確度。經(jīng)過我對學(xué)校情況和師生需求的的具體分析,初步設(shè)計(jì)了一套有關(guān)"學(xué)生成績管理"的程序,希望可以幫助學(xué)校改善以往需求緊張的管理系統(tǒng),為廣大師生提供方便,節(jié)省時間,提高工作效率,從而樹立良好的辦學(xué)形象。學(xué)校具體需求分析學(xué)生:對各科成績的查詢及查看本班成績排名。老師:輸入并維護(hù)所教科目的學(xué)生成績,計(jì)算本科的成績排名、本科成績在班上的排名。班主任:輸入并維護(hù)本班的基本信息,對本班的各科成績匯總,計(jì)算各科成績的總分,排名,本班平均分等需求。輸出學(xué)生的基本信息,各科的成績及各科成績的部分,各科成績的排名,總分的排名情況。教務(wù)處:學(xué)校全體成員的信息管理,對考試科目,時間及對所考科目的編號等進(jìn)行具體的管理,并對任課老師,班主任等輸入的信息進(jìn)行存庫,對學(xué)生的信息進(jìn)行必要的維護(hù),可打印學(xué)生的所有信息。2.2系統(tǒng)功能分析在本章中,我使用模塊等分析法進(jìn)行系統(tǒng)功能分析。2.2.1模塊實(shí)現(xiàn)算法,在進(jìn)入主菜單前,如圖2-1所示:按任意鍵進(jìn)入主菜單按任意鍵進(jìn)入主菜單合法用戶合法用戶進(jìn)入各功能模塊進(jìn)入各功能模塊2-1進(jìn)入主菜單模塊2.2.2進(jìn)入主菜單,此時流程在3.4軟件結(jié)構(gòu)會描述清楚。2.2.3建立學(xué)生表格,算法實(shí)現(xiàn)模式,如圖2-2所示:進(jìn)行編輯輸入1N返回主模塊進(jìn)行編輯輸入1Y信息錄入 N返回主模塊信息錄入Y繼續(xù)輸入Y任意鍵返回主模塊繼續(xù)輸入2-2建立學(xué)生表格模塊從表中刪除原有紀(jì)錄模塊,算法,如圖2-3所示:進(jìn)行刪除輸入2N返回主模塊進(jìn)行刪除輸入2Y信息錄入 N返回主模塊信息錄入Y刪除成功Y任意鍵返回主模塊刪除成功2-3刪除原有紀(jì)錄模塊2.2.5顯示單鏈表中所有記錄模塊,算法,如圖3-4所示:進(jìn)行輸入輸入3N返回主模塊進(jìn)行輸入輸入3Y信息輸出 N返回主模塊信息輸出Y顯示信息Y任意鍵返回主模塊顯示信息2-4顯示紀(jì)錄模塊2.2.6按照姓名查找紀(jì)錄模塊,算法,如圖2-5所示:學(xué)生姓名輸入4N返回主模塊學(xué)生姓名輸入4Y信息錄入 N返回主模塊信息錄入Y查找成功Y任意鍵返回主模塊查找成功2-5查找模塊2.2.7計(jì)算所有學(xué)生的總分和均分模塊,算法,如圖2-6所示:進(jìn)行計(jì)算輸入5N返回主模塊進(jìn)行計(jì)算輸入5Y輸出結(jié)果 Y任意鍵返回主模塊輸出結(jié)果2-6計(jì)算模塊2.2.8插入紀(jì)錄到表中模塊,算法,如圖2-7所示:學(xué)號輸入6N返回主模塊學(xué)號輸入6Y信息錄入 N返回主模塊信息錄入Y成功插入Y任意鍵返回主模塊成功插入2-7插入紀(jì)錄模塊2.2.9復(fù)制文件模塊,算法,如圖2-8所示:文件地址輸入7N返回主模塊文件地址輸入7Y復(fù)制 N返回主模塊復(fù)制Y復(fù)制成功Y任意鍵返回主模塊復(fù)制成功2-8復(fù)制模塊2.2.10將所有學(xué)生成績排序模塊,算法,如圖2-9所示:進(jìn)行排序輸入8N返回主模塊進(jìn)行排序輸入8Y排序成功 Y任意鍵返回主模塊排序成功2-9排序模塊2.2.11分類合計(jì)模塊,算法,如圖2-10所示:進(jìn)行分類輸入9N返回主模塊進(jìn)行分類輸入9Y分類成功 Y任意鍵返回主模塊分類成功2-10分類合計(jì)模塊2.2.12退出模塊,算法。第三章總體設(shè)計(jì)3.1軟件描述該程序的主要功能為:0將表格初始化,1建立學(xué)生成績表格,2從表中刪除原有紀(jì)錄,3顯示單鏈表中所有記錄,4按照姓名查找紀(jì)錄,5計(jì)算所有學(xué)生的總分和均分,6插入紀(jì)錄到表中,7復(fù)制文件,8將所有學(xué)生成績排序,9分類合計(jì),10退出。另外,該程序主要調(diào)用了:I/O函數(shù)<stdio.h>,其他說明<stdib.h>,字符串函數(shù)<string.h>,屏幕操作函數(shù)<conio.h>,內(nèi)存操作函數(shù)<mem.h>,字符操作函數(shù)<ctype.h>,動態(tài)地址分配函數(shù)<alloc.h>,定義常數(shù)。3.2設(shè)計(jì)方法本軟件采用傳統(tǒng)的軟件開發(fā)生命周期的方法,采用自定向下,逐步求精的結(jié)構(gòu)化的軟件設(shè)計(jì)方法。3.3軟件結(jié)構(gòu)根據(jù)以上模塊可得到總體結(jié)構(gòu)系統(tǒng)才層次圖,如圖3-1所示:學(xué)生成績管理學(xué)生成績管理初始化建立學(xué)生成績表格刪除記錄顯示單鏈表中所有記錄按姓名查找記錄計(jì)算所有學(xué)生成績的總分和均分插入記錄到表中復(fù)制文件將所有學(xué)生成績排序分類合計(jì)退出3-1總體結(jié)構(gòu)系統(tǒng)層次圖3.4文件及函數(shù)組成如表1-1所示:表3-1主要函數(shù)函數(shù)名功能Init〔初始化函數(shù)Create<>創(chuàng)建鏈表Delete<STUDENT*h>刪除記錄Print<STUDENT*h>顯示所有記錄Search〔STUDENT*h查找學(xué)生成績Computer<STUDENT*h>計(jì)算學(xué)生的總分和均分Insert<STUDENT*h>插入記錄Copy<>復(fù)制文件Sort<STUDENT*h>按姓名開頭字母排序Total<STUDENT*h>分類合計(jì)Menu_select<>主菜單函數(shù)1.顯示內(nèi)存動態(tài)記錄數(shù)據(jù)函數(shù)函數(shù)原型:voidcreate<>功能:顯示內(nèi)存里的記錄參數(shù):記錄數(shù)組和記錄條數(shù)要求:報告是否有記錄及記錄成績內(nèi)容2.輸入信息函數(shù)函數(shù)原型:intinputs<char*prompt,char*s,intcount>功能:添加記錄參數(shù):結(jié)構(gòu)體數(shù)組.要求:如果內(nèi)存已經(jīng)存在記錄.則將新記錄追加在記錄尾部,如果還沒有建立記錄鏈表,則建立鏈表并從尾部開始追加記錄.3.刪除記錄函數(shù)函數(shù)原型:intdelete<STUDENT*h>功能:刪除內(nèi)存鏈表中的指定結(jié)點(diǎn)參數(shù):記錄數(shù)組和記錄條數(shù),成績要求:給出相關(guān)信息4.按序號顯示記錄函數(shù)函數(shù)原型:voidprint<STUDENT*h>功能:根據(jù)用戶需求輸出記錄要求:判斷內(nèi)存中記錄的序號與輸入的是否相等,如果相等則輸出,否則關(guān)閉文件5.查找函數(shù)函數(shù)原型:intsearch<>功能:根據(jù)用戶需要輸出記錄參數(shù):記錄數(shù)組和記錄成績以及姓名s要求:判斷內(nèi)存中記錄的名字與輸入的是否相等,如果相等則輸出,否則提前結(jié)束6.計(jì)算函數(shù)函數(shù)原型:intComputer<STUDENT*h>功能:根據(jù)用戶需要計(jì)算總分和學(xué)生平均成績參數(shù):記錄數(shù)和計(jì)算要求:內(nèi)存中記錄數(shù)進(jìn)行相加和平均數(shù)運(yùn)算7.插入記錄函數(shù)函數(shù)原型:intinsert<STUDENT*h>功能:根據(jù)用戶指定將信息插入特定位置參數(shù):結(jié)構(gòu)體數(shù)組和記錄數(shù)要求:輸入信息8.復(fù)制文件函數(shù)函數(shù)原型:voidcopy<>功能:復(fù)制記錄要求:判斷所要文件是否能打開,打不開則退出,能打開則讀出文件中記錄并復(fù)制9.排序函數(shù)函數(shù)原型:voidsort<STUDENT*h>功能:將記錄進(jìn)行排序參數(shù):結(jié)構(gòu)體數(shù)組和記錄數(shù)要求:比較內(nèi)存中記錄,判斷大小并進(jìn)行交換,交換后顯示排序成功10.分類合計(jì)函數(shù)函數(shù)原型:voidTotal<STUDENT*h>功能:分類存放參數(shù):結(jié)構(gòu)體數(shù)組和記錄數(shù)要求:在內(nèi)存中分類存放各班不同的記錄數(shù)和計(jì)算后得到的記錄數(shù)11.菜單函數(shù)函數(shù)原型:menu_select<>功能:控制程序要求:管理菜單命令并完成初始化第四章程序調(diào)試在設(shè)計(jì)該程序的時候我采用了結(jié)構(gòu)化程序方法編輯,并在源代碼的基礎(chǔ)上添加了中文注釋。但是在該系統(tǒng)的編寫過程中仍然有許多錯誤,主要的有:注釋文字的排版,定義錯誤,句式的語法錯誤。在完善程序時,我將源代碼先打印下來反復(fù)的捉摸和研究,力圖在上機(jī)運(yùn)行時先改正一些低級錯誤.如缺少";"之類.在仔細(xì)檢查之后,將源代碼上機(jī)調(diào)試—進(jìn)行編譯,在編譯和連接過程中發(fā)現(xiàn)錯誤,屏幕上顯示了出錯信息,根據(jù)提示找到出錯的位置,加以改正……直到順利顯示我預(yù)期的。1、首先,在本次調(diào)試過程中我碰到了在上機(jī)前根本沒有想到的錯誤:在注釋的時候,注釋文字應(yīng)寫在一起中間不能有中斷,不能再其中包含c語言的語句。否則會引起錯誤,例如格式不正確或是多了字符等。2、缺少變量定義或是定義位置不正確;由于該程序相對來講稍有些長,前后有些變量很難聯(lián)系起來,但是在錯誤信息的提示下一般還是很是可以找到。不過需要注意的是在定義的時候有些函數(shù)使用同樣的變量名而表示不同的作用,因而使用要很小心,定義及定義的位置要特別留意。為減少這樣的錯誤我后來還是用不同的變量名來表示,結(jié)果引起的那些錯誤解決了。3、句式的語法錯誤;大多的語法錯誤在通過書本參考下能夠修改。主要是平時看書不仔細(xì)、不太注意而產(chǎn)生的。如沒有注意具體數(shù)據(jù)使用是有一定的范圍限定;過分重視分號的重要性而在for、if、while語句中畫蛇添足加分號;在使用文件的時候忘記將文件先打開,對打開的方式與使用的情況不太注意而造成不匹配;還有漏掉形參的定義是值不能傳遞等等。這些語法錯誤有信息框的提示一般是能夠排除的。編譯、連接的成功并不意味著程序的最終成功。邏輯上的錯誤機(jī)器不易檢查出來,這時需要對數(shù)據(jù)結(jié)果進(jìn)行分析。這種錯誤的查找是最難的,需要編程序的人有相當(dāng)?shù)哪托暮图?xì)心去把問題找出來。這也是本次程序編輯過程中碰到的最大的難題。往往運(yùn)行之后得不到另人滿意的結(jié)果,此時解決的方法一則可以用"分段檢查"的方法,在程序的不同位置設(shè)幾個printf函數(shù)語句,輸出有關(guān)變量的值,逐段往下檢查,或用debug進(jìn)行調(diào)試,對檢查出的錯誤進(jìn)行修改,當(dāng)調(diào)試完畢將設(shè)置的printf都刪去。若在程序中找不到問題,則再來考慮算法是否邏輯嚴(yán)謹(jǐn),再進(jìn)行修改。如此循環(huán)往復(fù),直到最后程序運(yùn)行成功。在本次程序編輯過程中,我就是常遇到編譯能通過,能夠運(yùn)行程序,但是總在輸入、刪除等操作完之后再想去看數(shù)據(jù)文件中存在的數(shù)據(jù)記錄的時候,卻一條記錄也顯示不出來,我懷疑是哪個對方對n變量的定義或使用出錯了,于是在每個主要函數(shù)的操作過程中添加了printf語句用來顯示n的變化,例如在執(zhí)行某個函數(shù)前添加插入語句顯示n的起始值,在執(zhí)行完該個函數(shù)后再添加插入語句顯示此時n的結(jié)果值,觀察n的變化是否正確,如果錯誤了,也就說明該函數(shù)編寫過程有錯。諸如這樣的調(diào)試方法,不斷縮小檢查范圍,最后將錯誤找到,進(jìn)行修改。所以到最后我找到了錯誤,及時改正,終于把程序完成了,一切功能顯示正常。以上是調(diào)試的全過程。第五章使用說明首先進(jìn)入界面時,根據(jù)屏幕上的提示pressanykeyentermenu……即是按任意鍵均可進(jìn)入主菜單,考慮到學(xué)生成績大多由老師輸入和調(diào)用,所以這里對使用者沒有要求也就沒有添加密碼的必要。在進(jìn)入主菜單時可以看到這樣的畫面,如圖4-1所示:4-1主菜單從0到10共有11個功能鍵。此時應(yīng)該根據(jù)提示"Enteryourchoice<0-10>:"選擇自己需要用的功能,例如:在提示后按1再回車〔Enter鍵的話就會進(jìn)入編輯。在主菜單上的11個功能分別是:0initlist將表格初始化:使用0后,系統(tǒng)會將原有的一切記錄全部刪去,所有的恢復(fù)到位使用時。一切在主菜單上完成。1Enterlist建立學(xué)生成績表格:使用1后,在界面上會要求你輸入學(xué)號no,姓名name和成績score1、2、3。如果已經(jīng)輸入完畢只要在下一個no后輸入!再按回車鍵即可,此時就會回到主菜單,如圖4-2所示:4-2輸入界面2Deletearecordfromlist從表中刪除原有紀(jì)錄:使用2后,會進(jìn)入子界面,提示語會告訴你輸入你要刪除的信息的學(xué)生的學(xué)號,然后會出現(xiàn)"listno**student"這就表示刪除成功,如果沒有這個學(xué)生的信息則會跳過步執(zhí)行但是還是會輸出上述的句子,如圖4-3所示:4-3顯示刪除界面3printlist顯示單鏈表中所有記錄:如果是在執(zhí)行完5以后,那么總分和均分一欄就不會空白,而是會輸出計(jì)算后的數(shù)據(jù),如圖4-4所示:4-4打印數(shù)出界面4Searchrecordfromlist按照姓名查找紀(jì)錄:根據(jù)提示"pleaseenterstudents’nameforsearch"輸入學(xué)生的拼音拼寫的姓名,如圖4-5所示:4-5查找界面5computethescore計(jì)算所有學(xué)生的總分和均分:按5后,系統(tǒng)會自動計(jì)算然后輸出結(jié)果,如圖4-6所示:4-6計(jì)算界面6insertrecordtolist插入紀(jì)錄到表中:使用6時,要輸入你想插到哪一個學(xué)生前,只需輸入他的學(xué)號。然后,在提示語的提醒下輸入要插入學(xué)生的學(xué)號,姓名和成績。然后再進(jìn)入打印界面,此時可以看到已經(jīng)將09插入到02前。如圖4-7所示:4-7插入后界面7copythefiletonewfile復(fù)制文件:執(zhí)行完7后,會根據(jù)使用者輸入的地址和命名生成文本文檔存儲。8sorttomakenewfile將所有學(xué)生成績排序:在完成后,會出現(xiàn)"sortsuccess!"如果想看結(jié)果的話,可以在執(zhí)行完這一步后在執(zhí)行3,這樣就可以看到排序后的結(jié)果。9totalonnomber分類合計(jì),如圖4-9所示:4-9分類合計(jì)界面10Quit退出模塊,在主菜單上實(shí)行。如圖4-10所示:4-10退出界面第六章工作總結(jié)在這次的編程過程中,我不僅在C語言的學(xué)習(xí)上有了很大的提高而且也培養(yǎng)了我的毅力、耐心、決心和學(xué)習(xí)能力。短短的兩周,我自己都不敢相信可以弄好一個對我而言一個大而功能相對而言還可以的程序。但是不得不說在這個程序中仍然有許多的缺陷,諸如:計(jì)算均分時只能計(jì)算三門的總均分;無法將文件以文檔或是表格形式存儲;排序、刪除等必須以一種形式先查找學(xué)生信息然后再實(shí)行操作并不多樣化??傊?在這個過程中我還面對了程序無法執(zhí)行,改錯時怎么也找不到錯誤在哪里的困境;但我還是在老師和同學(xué)們的幫助下完成了這個程序??梢哉f我的心情是相當(dāng)?shù)募?相信有了這樣的經(jīng)歷后我能夠更加?jì)故斓拿鎸Ω鞣N情況。注:課程設(shè)計(jì)以來的感想、心得、經(jīng)驗(yàn)、收獲、有待改進(jìn)的方面。不超過一頁。參考文獻(xiàn)〔參考書或論文或文章[1]黃明等.21世紀(jì)進(jìn)階輔導(dǎo)C語言程序設(shè)計(jì).XX理工大學(xué)出版社,2005:45—208[2]馬靖善等.C語言程序設(shè)計(jì).清華大學(xué)出版社,2005:23—145附錄源代碼#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#include"mem.h"#include"ctype.h"#include"alloc.h"#defineN3typedefstructz1{charno[11];charname[20];intscore[N];floatsum;floataverage;intorder;structz1*next;}STUDENT;STUDENT*init<>;STUDENT*create<>;STUDENT*delete<STUDENT*h>;voidprint<STUDENT*h>;voidsearch<STUDENT*h>;voidsave<STUDENT*h>;STUDENT*load<>;voidcomputer<STUDENT*h>;STUDENT*insert<STUDENT*h>;voidappend<>;voidcopy<>;STUDENT*sort<STUDENT*h>;voidtotal<STUDENT*h>;intmenu_select<>;main<>{inti;STUDENT*head;head=init<>;clrscr<>;for<;;>{switch<menu_select<>> case0:head=init<>;break; case1:head=create<>;break; case2:head=delete<head>;break; case3:print<head>;break; case4:search<head>;break; case5:computer<head>;break; case6:head=insert<head>;break; case7:copy<>;break; case8:head=sort<head>;break; case9:total<head>;break; case10:exit<0>;}}}menu_select<>{char*menu[]={"***************MENU***************","0.initlist","1.Enterlist","2.Deletearecordfromlist","3.printlist","4.Searchrecordonname","5.computethescore","6.insertrecordtolist","7.copythefiletonewfile",/*復(fù)制文件*/"8.sorttomakenewfile",/*排序*/"9.totalonnomber",/*分類合計(jì)*/"10.Quit"};/*退出*/chars[3];intc,i;gotoxy<1,25>;printf<"pressanykeyentermenu\n">;getch<>;clrscr<>;gotoxy<1,1>;textcolor<BLUE>;textbackground<WHITE>;gotoxy<10,2>;putch<0xc9>;for<i=1;i<44;i++>putch<0xcd>;putch<0xbb>;for<i=3;i<20;i++>{gotoxy<10,i>;putch<0xba>;gotoxy<54,i>;putch<0xba>;}/*輸出右垂直線*/gotoxy<10,20>;putch<0xc8>;for<i=1;i<44;i++>putch<0xcd>;putch<0xbc>;window<11,3,53,19>;clrscr<>;for<i=0;i<16;i++>{gotoxy<10,i+1>;cprintf<"%s",menu[i]>;}textbackground<GREEN>;window<1,1,80,25>;gotoxy<10,21>;do{printf<"\n Enteryouchoice<0~10>:">;scanf<"%s",s>;c=atoi<s>;}while<c<0||c>10>;returnc;}STUDENT*init<>{returnNULL;}STUDENT*create<>{inti;ints;STUDENT*h=NULL,*info;for<;;>{info=<STUDENT*>malloc<sizeof<STUDENT>>;if<!info>{ printf<"\noutofmemory">; returnNULL;}inputs<"enterno:",info->no,11>;if<info->no[0]=='!'>break;inputs<"enterstudents'name:",info->name,20>;printf<"pleaseinput%dscore\n",N>;s=0;for<i=0;i<N;i++>{ do{ printf<"score%d:",i+1>; scanf<"%d",&info->score[i]>; if<info->score[i]>100||info->score[i]<0> printf<"Dataisbad,repeatinput\n">; }while<info->score[i]>100||info->score[i]<0>; s=s+info->score[i];}info->sum=s;info->average=<float>s/N;info->order=0;info->next=h;h=info;}return<h>;}inputs<char*prompt,char*s,intcount>{charp[255];do{printf<prompt>;scanf<"%s",p>;if<strlen<p>>count>printf<"\ntoolong!\n">;}while<strlen<p>>count>;strcpy<s,p>;}voidprint<STUDENT*h>{inti=0;STUDENT*p;clrscr<>;p=h;printf<"\n\n\n****************************STUDENT********************************\n">;printf<"|Rec|No|Name|Sc1|Sc2|Sc3|Sum|Ave|Order|\n">;printf<"||||||||||\n">;while<p!=NULL>{i++;printf<"|%3d|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",i,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order>;p=p->next;}printf<"**********************************end*********************************\n">;}STUDENT*delete<STUDENT*h>{STUDENT*p,*q;chars[11];clrscr<>;printf<"pleasedeletedno\n">;scanf<"%s",s>;q=p=h;while<strcmp<p->no,s>&&p!=NULL>{q=p;p=p->next;}if<p==NULL>printf<"\nlistno%sstudent\n",s>;else{printf<"*****************************havefound***************************\n">;printf<"|No|Name|Sc1|Sc2|Sc3|Sum|Ave|Order|\n">;printf<"|||||||||\n">;printf<"|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order>;printf<"********************************end*******************************\n">;getch<>;if<p==h> h=p->next;else q->next=p->next;free<p>;printf<"\nhavedeletedNo%sstudent\n",s>;printf<"Don'tforgetsave\n">;}return<h>;}voidsearch<STUDENT*h>{STUDENT*p;chars[15];clrscr<>;printf<"Pleaseenterstudents'nameforsearch\n">;scanf<"%s",s>;p=h;while<strcmp<p->name,s>&&p!=NULL>p=p->next;if<p==NULL>printf<"\nlistno%sstudent\n",s>;else{printf<"\n\n*****************************havefound***************************\n">;printf<"|No|Name|Sc1|Sc2|Sc3|Sum|Ave|Order|\n">;printf<"|||||||||\n">;printf<"|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n",p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order>;printf<"********************************end*******************************\n">;}}STUDENT*insert<STUDENT*h>{STUDENT*p,*q,*info;chars[11];ints1,i;printf<"pleaseenterlocationbeforetheno\n">;scanf<"%s",s>;printf<"\npleasenewrecord\n">;info=<STUDENT*>malloc<sizeof<STUDENT>>;if<!info>{printf<"\noutofmemory">;returnNULL;}inputs<"enterno:",info->no,11>;inputs<"entername:",info->name,15>;printf<"pleaseinput%dscore\n",N>;s1=0;for<i=0;i<N;i++>{do{ printf<"score%d:",i+1>; scanf<"%d",&info->score[i]>; if<info->score[i]>100||info->score[i]<0> printf<"baddata,repeatinput\n">;}while<info->score[i]>100||info->score[i]<0>;s1=s1+info->score[i];}info->sum=s1;info->average=<float>s1/N;info->order=0;info->next=NULL;p=h;q=h;while<strcmp<p->no,s>&&p!=NULL>{q=p;p=p->next;}if<p==NULL>if<p==h> h=info;else q->next=info;elseif<p==h>{ info->next=p; h=info;}else{ info->next=p; q->next=info;}printf<"\nhaveinserted%sstudent\n",info->name>;printf<"Don'tforgettosave\n">;return<h>;}voidcopy<>{charoutfile[10],infile[10];FILE*sfp,*tfp;STUDENT*p=NULL;clrscr<>;printf<"Enterinfilename,forexamplec:\\f1\\te.txt:\n">;scanf<"%s",infile>;if<<sfp=fopen<infile,"rb">>==NULL>{printf<"cannotopeninputfile\n">;exit<0>;}printf<"Enteroutfilename,forexamplec:\\f1\\te.txt:\n">;scanf<"%s",outfile>;if<<tfp=fopen<outfile,"wb">>==NULL>{printf<"cannotopenoutputfile\n">;exit<0>;}while<!feof<sfp>>{if<1!=fread<p,sizeof<STUDENT>,1,sfp>> break;fwrite<p,sizeof<STUDENT>,1,tfp>;}fclose<sfp>;fclose<tfp>;printf<"youhavesuccesscopyfile!!!\n">;}STUDENT*sort<STUDENT*h>{inti=0;STUDENT*p,*q,*t,*h1;h1=h->next;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 融資籌劃報告范文
- 區(qū)塊鏈公司年度報告范文
- 請求調(diào)整 報告范文
- 汽車制造業(yè)總結(jié)報告范文
- 二零二五年度光伏發(fā)電屋頂租賃投資合同
- 二零二五年度美團(tuán)商家品牌推廣合作協(xié)議
- 浙江國企招聘2024杭州億晟產(chǎn)業(yè)運(yùn)營有限公司招聘2人筆試參考題庫附帶答案詳解
- MySQL教程(新體系-綜合應(yīng)用實(shí)例視頻)(第4版)習(xí)題及答案 第10章
- 二零二五年度房屋出租中介服務(wù)合同(含租賃合同定制服務(wù))
- 二零二五年度設(shè)備安裝安全協(xié)議及設(shè)備保養(yǎng)合同
- 焊接工藝基礎(chǔ)知識培訓(xùn)課件
- 南通大學(xué)開題報告模版
- DL∕T 1529-2016 配電自動化終端設(shè)備檢測規(guī)程
- 健身房管理制度前臺范文
- 2024年廣東深圳市中考英語試卷試題真題及答案(精校打印版)
- 2024天津工業(yè)職業(yè)學(xué)院教師招聘考試筆試試題
- QCT1067.5-2023汽車電線束和電器設(shè)備用連接器第5部分:設(shè)備連接器(插座)的型式和尺寸
- 合金固態(tài)相變?nèi)捉虒W(xué)課件
- 《研學(xué)旅行課程設(shè)計(jì)》課件-1研學(xué)課程資源選擇
- 《醫(yī)學(xué)心理學(xué)》教案
- 海綿城市建設(shè)技術(shù)標(biāo)準(zhǔn) DG-TJ08-2298-2019
評論
0/150
提交評論