已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)成績(jī)單課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 姓名xxx性別x學(xué)號(hào)xxx班級(jí)xxx班綜合成績(jī)成績(jī)等級(jí)程序運(yùn)行情況(占總成績(jī)20%)能正確運(yùn)行 基本能正確運(yùn)行 能運(yùn)行但結(jié)果不完善(20分) (15分) (10分)程序功能的完善程度(占總成績(jī)10%)完善 基本完善 不完善(10分) (8分) (5分)程序結(jié)構(gòu)的合理性(占總成績(jī)10%)合理 基本合理 不太合理(10分) (8分) (5分)對(duì)問(wèn)題的答辯情況(占總成績(jī)40%)概念正確有創(chuàng)新 能正確回答所有問(wèn)題 基本能正確回答(40分) (35分) (30分)部分問(wèn)題回答概念不清晰(20分)學(xué)生的工作態(tài)度與獨(dú)立工作能力(占總成績(jī)10%)工作態(tài)度認(rèn)真能獨(dú)立完成任務(wù) 工作態(tài)度認(rèn)真但獨(dú)立性較差(10分) (8分)工作態(tài)度基本認(rèn)真但缺乏獨(dú)立性(5分)設(shè)計(jì)報(bào)告的規(guī)范性(占總成績(jī)10%)符合規(guī)范 基本符合規(guī)范 規(guī)范性較差(10分) (8分) (5分)優(yōu)秀:90分100分 良好:80分89分 中等:7079分 及格:6069分 不及格0分59分 武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院制表目錄引言-3一、問(wèn)題描述-二、需求分析-三、詳細(xì)設(shè)計(jì)-四、所遇到的問(wèn)題和分析解決-五、系統(tǒng)特色及關(guān)鍵技術(shù)-六、結(jié)論及心得體會(huì)-七、附錄(源代碼)-引言通過(guò)本課程設(shè)計(jì),使自己更加系統(tǒng)地理解和掌握數(shù)據(jù)結(jié)構(gòu)的基本概念;能自如地根據(jù)實(shí)際要求,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),并運(yùn)用C或C+語(yǔ)言實(shí)現(xiàn)所設(shè)計(jì)的算法,編寫(xiě)較大型的程序,分析和解決實(shí)際應(yīng)用問(wèn)題,進(jìn)一步加深、鞏固所學(xué)專業(yè)課程的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)自己綜合分析問(wèn)題和解決問(wèn)題的能力。掌握C語(yǔ)言或C+語(yǔ)言獨(dú)立的編寫(xiě)、調(diào)試應(yīng)用程序和進(jìn)行其它相關(guān)設(shè)計(jì)的技能。此項(xiàng)目主要是考察我們對(duì)結(jié)構(gòu)體、數(shù)組、文件等具體操作,以及對(duì)C語(yǔ)言語(yǔ)法的掌握,所以做成此項(xiàng)目要求比較高的設(shè)計(jì)要求,對(duì)整體有很熟悉的概括,同時(shí)調(diào)試過(guò)程也是很重要的,對(duì)程序界面的要求也比較高,要設(shè)計(jì)的合理同時(shí)也要美觀一點(diǎn),能夠人性化的描述清楚你的各個(gè)功能,一目了然,對(duì)其他用戶使用本程序簡(jiǎn)單易懂,這才能成本程序或本系統(tǒng)是成功的。對(duì)于學(xué)生成績(jī)管理系統(tǒng),此項(xiàng)目每年都有學(xué)生去做,但是能夠在其他項(xiàng)目中脫穎而出,還要有自己的設(shè)計(jì)特色,用簡(jiǎn)單的語(yǔ)言詳細(xì)描述系統(tǒng)的功能,這才是關(guān)鍵。這個(gè)設(shè)計(jì)能夠練習(xí)我們的理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法,掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法,學(xué)會(huì)調(diào)試一個(gè)比較長(zhǎng)的程序的基本方法,同時(shí)掌握書(shū)寫(xiě)程序設(shè)計(jì)開(kāi)發(fā)文檔的能力。 一問(wèn)題描述1、課程設(shè)計(jì)應(yīng)完成的工作 (1)編寫(xiě)算法 (2)算法測(cè)試,并有具體的測(cè)試結(jié)果和結(jié)果分析 (3)撰寫(xiě)課程報(bào)告,內(nèi)容包括: 封面 目錄 課程設(shè)計(jì)報(bào)告正文 使用說(shuō)明 參考文獻(xiàn) 2、總體設(shè)計(jì)工作(包含幾大功能模塊) 1. 顯 示 本 學(xué) 期 考 核 的 7 門(mén) 科 目 信 息 以 供 學(xué) 生 選 課; 2. 輸 入 學(xué) 生 基 本 信 息 并 顯 示; 3. 輸 入 學(xué) 生 的 選 課 信 息; 4. 查 找 某 學(xué) 生 的 信 息 及 選 修 科 目 的 信 息; 5. 修 改 某 學(xué) 生 的 信 息; 6. 增 加 一 個(gè) 學(xué) 生 的 記 錄; 7. 刪 除 某 個(gè) 學(xué) 生 的 記 錄; 8. 按 學(xué) 號(hào) 降 序 排 序, 依 次 輸 出; 9. 將 學(xué) 生 的 信 息 存 儲(chǔ) 入 文 件。二、 需求分析1、系統(tǒng)描述 該系統(tǒng)實(shí)現(xiàn)對(duì)若干個(gè)大學(xué)生的學(xué)習(xí)成績(jī)進(jìn)行管理。至少包括以下信息:結(jié)構(gòu)體:學(xué)生,選修科目,選修信息學(xué)生:學(xué)號(hào),姓名,性別,年齡,所屬院系選修科目:科目編號(hào),科目名稱,科目學(xué)分選修信息:選修該科目者學(xué)號(hào),科目編號(hào),科目成績(jī) 2、功能要求1使用中文菜單,界面設(shè)計(jì)和用戶輸入輸出要人性化些;2. 將學(xué)生信息保存在文本文檔中,具體對(duì)學(xué)生信息進(jìn)行插入刪除查詢操作時(shí),將保存在文本文檔中的學(xué)生信息提取出來(lái),保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成,或者在相應(yīng)的命令后,再將學(xué)生信息保存到文本文檔中;3具有數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中;4具有數(shù)據(jù)刪除功能,能最終從文件中刪除;5排序功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)排序算法;6具有多種查詢(如按學(xué)號(hào)查詢、按姓名查詢、按成績(jī)查詢等)及輸出功能;7. 學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門(mén)課程的成績(jī))。考查點(diǎn):l 插入時(shí)注意學(xué)號(hào)的處理,可以不填嗎,是否重復(fù),其他數(shù)據(jù)是否可以亂填,如何控制;l 刪除時(shí)一要防止誤操作,二要考慮該生的選課信息,如何處理;l 修改時(shí)同樣要考慮各數(shù)據(jù)項(xiàng)的性質(zhì);l 對(duì)選修表進(jìn)行插入、刪除、修改操作;l 查詢要求可以實(shí)現(xiàn)多條件查詢。有3個(gè)文件:Student.txt中的內(nèi)容:Sno Sname Ssex Sage Sdept 李勇 男 20 CS 劉晨 女 19 CS 王敏 女 18 MA 張立 男 19 ISCourse.txt中的內(nèi)容:Cno Cname Ccredit1英語(yǔ)42數(shù)學(xué)23信息系統(tǒng)44操作系統(tǒng)35數(shù)據(jù)結(jié)構(gòu)4 6數(shù)據(jù)處理27C/C+4SC.txt中的內(nèi)容:Sno Cno Grade190280 485 186 382 588 7903、開(kāi)發(fā)環(huán)境 Visual C+不僅僅是是一個(gè)C+編譯器,而是一個(gè)基于Windows操作系統(tǒng)的可視化集成開(kāi)發(fā)環(huán)境,這種環(huán)境開(kāi)發(fā)出來(lái)的軟件穩(wěn)定性好、可移植性強(qiáng),可以編制各種各樣的Windows應(yīng)用程序。三、詳細(xì)設(shè)計(jì) 開(kāi)始1、系統(tǒng)流程圖 主界面輸入學(xué)生信息顯示信息科目修改學(xué)生信息刪除學(xué)生信息增加學(xué)生信息信息存入文件退出本系統(tǒng)輸入選修信息查找學(xué)生信息 結(jié)束 2、界面設(shè)計(jì)主界面:在此界面用戶可以選擇要操作的選項(xiàng),回車之后即可進(jìn)入相關(guān)的頁(yè)面進(jìn)行操作(例如:選擇1 ,即可顯示本學(xué)期考核的7門(mén)科目信息)在本界面里用戶可以輸入學(xué)生相關(guān)的信息數(shù)據(jù),按照提示進(jìn)行操作即可,例如所有操作均有提示語(yǔ),比較人性化的管理,易懂,簡(jiǎn)單。3、大概設(shè)計(jì)模塊(1)先編入系統(tǒng)所需的庫(kù)函數(shù),從而使程序可運(yùn)行。#include#include#include #include /文件和標(biāo)準(zhǔn)控制臺(tái)的輸入輸出(2) Main()函數(shù)的設(shè)計(jì) 在main()函數(shù)中主要運(yùn)用do-while循環(huán)語(yǔ)句和switch()-case選擇判斷語(yǔ)句來(lái)調(diào)用相關(guān)功能模塊。系統(tǒng)的運(yùn)行是在一個(gè)永真的循環(huán)里進(jìn)行的,只有在主界面并選擇“退出”時(shí),才會(huì)跳出永真循環(huán),并退出程序。(3) 主界面的設(shè)計(jì) 在主界面中包括“顯示本學(xué)期考核的7門(mén)科目信息以供學(xué)生選科目輸入學(xué)生基本信息并顯示 輸入學(xué)生的選課信息 查找某學(xué)生的信息及選修科目的信息 修改某學(xué)生的信息增加一個(gè)學(xué)生的記錄 刪除某學(xué)生的記錄 按數(shù)據(jù)結(jié)構(gòu)降序(冒泡)排序 將學(xué)生的信息存儲(chǔ)入文件退出”等全部的功能,之所以設(shè)計(jì)這麼一個(gè)主界面,一是因?yàn)槟苁褂脩魧?duì)程序操作的流程更加清晰簡(jiǎn)明,二是保證了用戶同時(shí)只能對(duì)一個(gè)文件進(jìn)行操作系統(tǒng)的要求,保證了系統(tǒng)不會(huì)打開(kāi)文件紊亂或者出現(xiàn)致命的錯(cuò)誤。每個(gè)函數(shù)體如下:Int main(); /主函數(shù)void save(); /選修課程文件存儲(chǔ)void load(); /選修課程文件輸出void input(struct student *headp); /學(xué)生信息的輸入void xuxiuinput(struct student *headp,struct StuCourse SC);/選修信息的輸入void find(struct student *headp,struct StuCourse SC);/查找學(xué)生的信息及選修信息int modify(struct student *headp,struct StuCourse SC);/修改學(xué)生信息及選修信息void insert(struct student *headp,struct StuCourse SC);/增加一個(gè)學(xué)生的信息void shanchu(struct student *headp,struct StuCourse SC);/刪除一個(gè)學(xué)生的信息void sort(struct student *headp); /學(xué)生信息按學(xué)號(hào)大小排序void filesave(struct student *headp,struct StuCourse SC);/學(xué)生信息及選修信息錄入文件void fileload(struct student *headp,struct StuCourse SC);/文件信息輸出4、詳細(xì)設(shè)計(jì)思想(1)確定語(yǔ)言算法 由于之前都沒(méi)有做過(guò)類似的設(shè)計(jì),所以一時(shí)間不能夠確定到底使用何種語(yǔ)言來(lái)設(shè)計(jì)本系統(tǒng),所以在網(wǎng)上看了一些其他人設(shè)計(jì)的程序,鏈表的、數(shù)組的,C+的,各種各樣的,也不知如何選擇,但是仔細(xì)地看了其中的設(shè)計(jì)思想,最終還是用C和鏈表的來(lái)做,一是覺(jué)得本人對(duì)指針數(shù)組掌握的不是很熟練,那么在設(shè)計(jì)過(guò)程中容易產(chǎn)生不能理解的錯(cuò)誤,耽誤時(shí)間,二是想運(yùn)用C,可以鞏固一下所學(xué)的數(shù)據(jù)結(jié)構(gòu)的知識(shí),之前做實(shí)驗(yàn)的時(shí)候一直用C+來(lái)做,都沒(méi)怎么用所學(xué)的知識(shí),這時(shí)候想練練。就這樣確定了整體的結(jié)構(gòu)算法。(2) 確定程序主要功能模塊 這個(gè)就比較簡(jiǎn)單了,主要是根據(jù)系統(tǒng)設(shè)計(jì)的說(shuō)明及要求來(lái)設(shè)計(jì),從而設(shè)計(jì)了十大功能模塊,有文件操作,有系統(tǒng)維護(hù)功能,排序和統(tǒng)計(jì)功能,有輸入輸出等基本功能,比較人性化,添加了較多的提示語(yǔ)。這個(gè)程序的主要功能時(shí)輸入學(xué)生的學(xué)號(hào),姓名,學(xué)期和三科成績(jī)來(lái)對(duì)其進(jìn)行存儲(chǔ),在存儲(chǔ)后可以對(duì)學(xué)生的成績(jī)按學(xué)號(hào)及學(xué)期或姓名及學(xué)期來(lái)進(jìn)行查詢,同時(shí)輸出此同學(xué)的平均分及總分,之后可以對(duì)某個(gè)同學(xué)的成績(jī)進(jìn)行各種操作,例如修改,刪除等,同時(shí)還可以對(duì)學(xué)生們的成績(jī)按照總分或單科成績(jī)排序,在整個(gè)過(guò)程中所做的操作都會(huì)保存到student.txt文件中并顯示。 (3) 系統(tǒng)結(jié)構(gòu)體的設(shè)計(jì)學(xué)生 所屬院系年齡學(xué)號(hào)性別姓名struct student /結(jié)構(gòu)體long Snum;/學(xué)號(hào) char Sname20;/姓名char Ssex10;/性別int Sage;/年齡char Sdept10;/所屬院系struct student *next;/指針;科目學(xué)分名稱編號(hào) struct Course/結(jié)構(gòu)體int Cno;/選修科目編號(hào)char Cname20;/信息科目名稱int Credit;/信息科目學(xué)分;選修成績(jī)編號(hào)學(xué)號(hào) struct StuCourse/結(jié)構(gòu)體long Sno;/選修者學(xué)號(hào)int SCno;/選修科目編號(hào)double Grade;/選修科目成績(jī);(4) 各功能模塊的設(shè)計(jì)*主函數(shù)模塊用函數(shù)int main()來(lái)實(shí)現(xiàn) 主要是來(lái)顯示主菜單,使用戶選擇操作。首先定義一個(gè)指針數(shù)組(全局使用)StuCourse SCSIZE(SIZE=1000),;在此處SIZE是指數(shù)組大小,之前有定義的,在這里應(yīng)用了do-while和switch-case語(yǔ)句來(lái)進(jìn)行選擇,是個(gè)比較簡(jiǎn)單實(shí)現(xiàn)的模塊。最后若選擇“0”則是退出永真循環(huán)。*選修課程的文件輸入(出)模塊用函數(shù)void save();與void load();來(lái)實(shí)現(xiàn)主要用來(lái)將已定義的結(jié)構(gòu)體數(shù)組Course存儲(chǔ)入文件Course.txt,以及將其中數(shù)據(jù)從文件Course.txt中輸入。void save()/錄入文件FILE *fp;int i;if(fp=fopen(Course.txt,w)=NULL)printf(無(wú)法打開(kāi)此文件!n);exit(0);for(i=0;i7;i+)if(fwrite(&Coi,sizeof(struct Course),1,fp)!=1)printf(無(wú)法打開(kāi)文件Course.txt!n);fclose(fp);void load()/導(dǎo)出文件FILE *fp;int i;if(fp=fopen(Course.txt,r)=NULL) printf(無(wú)法打開(kāi)文件Course.txt!n); exit(0);for(i=0;i7;i+)fread(&Coi,sizeof(struct Course),1,fp);printf(%4d%10s%8dn,Coi.Cno,Coi.Cname,Coi.Credit);fclose(fp);*輸入學(xué)生記錄模塊 用函數(shù)void input(struct student *headp);來(lái)實(shí)現(xiàn) 主要功能用來(lái)對(duì)學(xué)生的信息進(jìn)行收集和輸入。首先會(huì)跳出主菜單,選擇”2”,進(jìn)入輸入模塊輸入所需學(xué)生個(gè)數(shù)的學(xué)生信息,比如學(xué)號(hào),姓名,性別,年齡及所屬院系(以學(xué)號(hào)為0 結(jié)束輸入新的學(xué)生信息)等。輸完之后會(huì)自動(dòng)跳出主菜單,根據(jù)主菜單來(lái)在此基礎(chǔ)上進(jìn)行操作。期間會(huì)有一些提示語(yǔ),按此操作即可。根據(jù)if和for語(yǔ)句來(lái)判定期間是否有重復(fù)學(xué)號(hào)輸入,在本操作中,允許有重復(fù)學(xué)生姓名出現(xiàn)。在此模塊中,同時(shí)也用到了一個(gè)控制變量a,它是用來(lái)判定的條件變量。之后返回主菜單。*輸入選修信息模塊用函數(shù)void xuxiuinput(struct student *headp,struct StuCourse SC)來(lái)實(shí)現(xiàn) 主要功能用于選修信息的錄入。首先會(huì)跳出主菜單,選擇“3“,進(jìn)入輸入模塊輸入所需選修科目的個(gè)數(shù),接著輸入選修該科目者的學(xué)號(hào)及科目編號(hào)及成績(jī)。根據(jù)for-while語(yǔ)句來(lái)控制,期間會(huì)有提示語(yǔ)。在本操作中,不允許學(xué)號(hào)的重復(fù),科目編號(hào)控制在1-7。*查找學(xué)生及選修信息模塊 用函數(shù)void find(struct student *headp,struct StuCourse SC)實(shí)現(xiàn) 主要功能用于學(xué)生基本信息的查找以及選修信息的查找。首先會(huì)跳出主菜單,選擇”4,接著選擇查找的方式(1.學(xué)號(hào)查找 2.姓名查找),輸入學(xué)號(hào)(姓名),便會(huì)顯示擁有該學(xué)號(hào)(姓名)學(xué)生的基本信息;對(duì)于選修信息也是同樣。該模塊運(yùn)用了for-while語(yǔ)句,對(duì)于學(xué)號(hào),科目編號(hào)等進(jìn)行控制,避免重復(fù)等情況出現(xiàn)。*修改學(xué)生及選修信息模塊用函數(shù)int modify(struct student *headp,struct StuCourse SC)實(shí)現(xiàn)主要功能是修改學(xué)生的基本信息以及選修科目的信息。首先跳出主菜單,選擇5。輸入你想要修改的學(xué)生的學(xué)號(hào),接著會(huì)彈出一個(gè)提示語(yǔ)請(qǐng)輸入你想修改的學(xué)生信息的標(biāo)號(hào):1.學(xué)號(hào) 2.姓名 3.性別 4.年齡 5.所屬院系 6.選修科目信息: ,選擇想要修改的選項(xiàng),例如1,接著輸入新的學(xué)號(hào),修改成功。在本模塊中運(yùn)用了if-else語(yǔ)句及while語(yǔ)句來(lái)控制變量,只有正確輸入才會(huì)彈出循環(huán),正確顯示。*插入學(xué)生記錄及選修信息模塊用函數(shù)void insert(struct student *headp,struct StuCourse SC)實(shí)現(xiàn)主要功能是插入一個(gè)新的學(xué)生記錄,并將該學(xué)生的選修信息錄入到StuCourse中。首先彈出主菜單,選擇6,輸入新增加的學(xué)生的學(xué)號(hào),接著輸入該學(xué)生的選修信息,然后再輸入學(xué)生的姓名,年齡等信息。在本模塊中同樣使用while語(yǔ)句以及if-else語(yǔ)句來(lái)控制學(xué)號(hào)等的輸入。*刪除學(xué)生記錄以及選修信息模塊用函數(shù)void shanchu(struct student *headp,struct StuCourse SC)來(lái)實(shí)現(xiàn)主要功能是刪除一個(gè)學(xué)生的記錄并刪除其中StuCourse中的記錄。首先有個(gè)選擇的操作,之后會(huì)有判斷語(yǔ)句,根據(jù)所輸入的學(xué)號(hào),來(lái)顯示刪除前的信息記錄,添加for循環(huán)語(yǔ)句,循環(huán)把后一位的信息提前一位,整體數(shù)量減一,來(lái)進(jìn)行全局變量的修改,之后再把修改過(guò)后的信息記錄保存到文件中去。在現(xiàn)實(shí)中會(huì)有由于某些原因而不在學(xué)校的同學(xué)的記錄,這時(shí)候就要對(duì)其記錄進(jìn)行刪除操作,這樣可以使系統(tǒng)及時(shí)更新并得到優(yōu)化。 *按數(shù)據(jù)結(jié)構(gòu)學(xué)號(hào)(冒泡)降序排序模塊用函數(shù)void sort(struct student *headp)來(lái)實(shí)現(xiàn) 主要功能時(shí)是用來(lái)對(duì)學(xué)生的記錄來(lái)按學(xué)號(hào)大小進(jìn)行排序。這樣方便對(duì)學(xué)生有個(gè)大致的了解。 本排序使用冒泡排序。它有兩個(gè)優(yōu)點(diǎn):一是“編程復(fù)雜度”很低,很容易寫(xiě)出代碼;二是具有穩(wěn)定性,這里的穩(wěn)定性是指原序列中相同兩元素的相對(duì)順序仍然保持到排序后的序列。冒泡排序時(shí)進(jìn)過(guò)n-1趟子排序完成的,第i趟子排序從第1個(gè)數(shù)至第n+1個(gè)數(shù),若第i個(gè)數(shù)比后一個(gè)數(shù)大(則升序,小則降序。本程序一律采用降序)則交換兩數(shù)。本程序中冒泡排序代碼如下:for(p1=*headp,i=0;inext)for(p2=p1-next,j=i+1;jnext)if(p1-SnumSnum)num=p2-Snum;p2-Snum=p1-Snum;p1-Snum=num;strcpy(name,p2-Sname);strcpy(p2-Sname,p1-Sname);strcpy(p1-Sname,name); strcpy(sex,p2-Ssex);strcpy(p2-Ssex,p1-Ssex);strcpy(p1-Ssex,sex);age=p2-Sage;p2-Sage=p1-Sage;p1-Sage=age;strcpy(dept,p2-Sdept);strcpy(p2-Sdept,p1-Sdept);strcpy(p1-Sdept,dept);排序前:排序后:*將學(xué)生及選修信息存入文件并顯示模塊用函數(shù)void filesave(struct student *headp,struct StuCourse SC)及void fileload(struct student *headp,struct StuCourse SC)實(shí)現(xiàn)主要功能是將之前輸入的學(xué)生信息及選修科目信息存儲(chǔ)入文件并從文件中導(dǎo)出顯示。首先本模塊中有2個(gè)文件指針FILE *fp1,*fp2,分別指向Student.txt文件與StuCourse.txt文件。此時(shí)會(huì)有提示語(yǔ)請(qǐng)確認(rèn)是否將數(shù)據(jù)存儲(chǔ)進(jìn)文件:1.是 2.否:,選擇1,將信息存入。*以上就是本程序的詳細(xì)設(shè)計(jì)及基本思想*4、 所遇到的問(wèn)題和分析解決1、 存在的不足本學(xué)生成績(jī)管理系統(tǒng)由九大模塊組成,每個(gè)模塊相互聯(lián)系又相互獨(dú)立。這個(gè)學(xué)生成績(jī)管理系統(tǒng)存在著很多不足之處,由于自己本身編程能力的問(wèn)題,這個(gè)系統(tǒng)可以實(shí)現(xiàn)的功能非常有限。只能實(shí)現(xiàn)學(xué)生管理系統(tǒng)最基本的功能,可以進(jìn)行簡(jiǎn)單的輸入、輸出學(xué)生資料,查詢和修改學(xué)生信息,能直接從文件中讀入數(shù)據(jù),能對(duì)系統(tǒng)所作的修改、操作進(jìn)行保存等。而且在每個(gè)模塊也有不足的地方,比如在輸入學(xué)生資料時(shí),對(duì)有些信息項(xiàng)沒(méi)有嚴(yán)格的規(guī)定,可以輸入任何的字符。這有待以后努力,更詳盡的實(shí)現(xiàn)模塊的功能。2、 do-while語(yǔ)句的位置問(wèn)題在修改學(xué)生記錄此模塊中,若循環(huán)語(yǔ)句的位置不對(duì)那么這個(gè)循環(huán)就會(huì)自動(dòng)跳出,或變?yōu)閬y碼,不能實(shí)現(xiàn)原有的功能。所以要想清楚到底是在哪安放,按照邏輯思路找到相應(yīng)的語(yǔ)句正確添加就行了。 3、 細(xì)節(jié)方面其實(shí)在有些細(xì)節(jié)方面還是要特別注意啊,比如分號(hào)的添加,的方向問(wèn)題,函數(shù)的返回值等問(wèn)題,雖然容易改掉,但是很容易養(yǎng)成不好的習(xí)慣,而且還會(huì)浪費(fèi)時(shí)間,所以在一開(kāi)始寫(xiě)的時(shí)候就要很仔細(xì),這樣才能保證程序編的精細(xì),同時(shí)若出現(xiàn)很多這樣的錯(cuò)誤的話,在編寫(xiě)程序的時(shí)候也會(huì)心里煩的,所以在編程的時(shí)候要認(rèn)真仔細(xì)。4、 文件的寫(xiě)入與讀出剛開(kāi)始時(shí)對(duì)文件的操作不是很明白,一直不能很好的操作文件,直到最后快要驗(yàn)收的時(shí)候,仍舊出現(xiàn)了嚴(yán)重的問(wèn)題,就是對(duì)已經(jīng)存在的文件讀取問(wèn)題,通過(guò)讀取文件并輸出學(xué)生信息,將數(shù)據(jù)從文件中讀取,但是不能夠正常的讀出,最后把讀文件的操作語(yǔ)句進(jìn)行仔細(xì)檢查后,發(fā)現(xiàn)語(yǔ)句的順序有點(diǎn)問(wèn)題,把fscanf()語(yǔ)句進(jìn)行再修改后就能夠正常的讀取文件了。5、 內(nèi)存的分配問(wèn)題對(duì)于初學(xué)者的話對(duì)內(nèi)存的分配和釋放問(wèn)題是比較抽象的和模糊的問(wèn)題,在排序是之前就出現(xiàn)了交換數(shù)據(jù)困難的問(wèn)題,以及內(nèi)存分配空間繁瑣釋放空間不及時(shí)的問(wèn)題,造成空間的浪費(fèi),使得程序運(yùn)行時(shí)效率較低,因此最后采用了順序存儲(chǔ)記錄的方式,這就能改變前面所出現(xiàn)的問(wèn)題。6、 較小的問(wèn)題方面其余的就沒(méi)什么比較大的問(wèn)題了,基本上只要細(xì)心一點(diǎn)的話就可以正確調(diào)試了。5、 系統(tǒng)特色及關(guān)鍵技術(shù)其實(shí)在本程序的設(shè)計(jì)過(guò)程當(dāng)中,沒(méi)有很吸引人的關(guān)鍵技術(shù),因?yàn)楸救说腃語(yǔ)言或C+語(yǔ)言都不是學(xué)的很好,所以當(dāng)初設(shè)計(jì)的時(shí)候就只是想把功能都實(shí)現(xiàn)就好了,盡可能的把所要求的功能都編進(jìn)程序,這樣就覺(jué)得很滿足了。所以都是設(shè)計(jì)的比較簡(jiǎn)單易懂的語(yǔ)言,這樣自己能夠更明白一些,所以就沒(méi)有時(shí)間去細(xì)細(xì)地去設(shè)計(jì)自己的程序。本程序要說(shuō)有什么值得說(shuō)的,那就只有人性化這點(diǎn)了,在設(shè)計(jì)成學(xué)的時(shí)候,因?yàn)樽约号屡炝耍蕴砑恿撕茉敱M的提示,這樣在編程的過(guò)程中或調(diào)試的時(shí)候都能夠比較快的運(yùn)行。還有就是盡可能的應(yīng)用了do-while語(yǔ)句和switch-case語(yǔ)句,這兩個(gè)語(yǔ)句在之前不是很常用,所以在這個(gè)程序中試煉了一下,雖然在編寫(xiě)的過(guò)程中總是出錯(cuò),但還是成功的用好了,也是程序有條理一些。我也知道這些東西別人可能比我弄得還要好,但是我在我所學(xué)的知識(shí)中成功的應(yīng)用了這些,我覺(jué)得就是好事,就是進(jìn)步。唯一的亮點(diǎn)可能就是進(jìn)入系統(tǒng)是的密碼設(shè)計(jì)了,就這一點(diǎn)小小的設(shè)計(jì)就花了我好幾個(gè)小時(shí)去調(diào)試,因?yàn)榭偰茉诤竺娉绦虻募尤爰斑\(yùn)行時(shí)發(fā)現(xiàn)一些新的小問(wèn)題。6、 結(jié)論及心得體會(huì)一周多的課程設(shè)計(jì),終于成功的驗(yàn)收了,雖然有些疲憊,但還是有很多的收獲的,像計(jì)算機(jī)組成原理的課設(shè)一樣,我又一次鞏固了所學(xué)到的知識(shí),之前的學(xué)習(xí)只是停留在理論基礎(chǔ)上,現(xiàn)在自己動(dòng)手操作試驗(yàn)后,才是真正的理解及體會(huì)。C也學(xué)了近一年,有很多知識(shí)都是似懂非懂,通過(guò)平時(shí)上機(jī)操作,自己也了解了一些,但讓我有了更深的理解和更好的認(rèn)識(shí),則是在這次的課設(shè)上,之前的困惑也通過(guò)這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很高興。 在課程設(shè)計(jì)之前,因?yàn)橛辛司C合實(shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫(xiě)代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸進(jìn)去之后,并編譯讓其運(yùn)行,發(fā)現(xiàn)通過(guò)不了,再來(lái)檢查出問(wèn)題,是很費(fèi)費(fèi)力的事情,因此分析和規(guī)劃代碼是很重要的,最重要的是要把邏輯結(jié)構(gòu)寫(xiě)好,這樣就不會(huì)出現(xiàn)大問(wèn)題,寫(xiě)代碼就要先找出核心的內(nèi)容,用多種方法來(lái)實(shí)現(xiàn)核心部分,這樣可以盡可能的避免發(fā)現(xiàn)邏輯或編譯不支持的錯(cuò)誤。 通過(guò)本次論文設(shè)計(jì),我初步學(xué)會(huì)了論文設(shè)計(jì)的基本方法,學(xué)會(huì)了怎樣去借鑒別人的方法和經(jīng)驗(yàn),知道了如何整合資料和處理這些資料的能力,這位以后做畢設(shè)的論文打下了基礎(chǔ),使我感覺(jué)比較好的是有一種成功的喜悅,雖然在編譯的時(shí)候會(huì)經(jīng)常因?yàn)橐恍┬〉腻e(cuò)誤而心煩意亂,但是也不失為一件好事,失敗的越多積累的經(jīng)驗(yàn)越豐富,對(duì)人的考驗(yàn)也比較多,那么在最后編譯成功時(shí)的喜悅就越濃烈,也是自己的能力有了進(jìn)一步的提高。由于知識(shí)和經(jīng)驗(yàn)的不足,這個(gè)程序編寫(xiě)的不是很盡如人意,但是融合了自己的心血,就覺(jué)得是最好的,所以在以后還是需要較多的努力的,還是會(huì)在以后的學(xué)習(xí)過(guò)程中不斷地提高和改進(jìn)的。7、 附錄(源代碼)#include#include#include#includestatic int count=0;static int scnum=0;#define N 10#define SIZE 1000struct studentlong Snum; char Sname20;char Ssex10;int Sage;char Sdept10;struct student *next;struct Courseint Cno;char Cname20;int Credit;struct Course Co7=1,英語(yǔ),4,2,數(shù)學(xué),2,3,信息系統(tǒng),4,4,操作系統(tǒng),3,5,數(shù)據(jù)結(jié)構(gòu),4,6,數(shù)據(jù)處理,2,7,c/c+,4;struct StuCourselong Sno;int SCno;double Grade;void menu() printf(n 學(xué) 生 成 績(jī) 統(tǒng) 計(jì) 與 分 析 系 統(tǒng) nn);printf(n 菜 單nn);printf(n 1. 顯 示 本 學(xué) 期 考 核 的 7 門(mén) 科 目 信 息 以 供 學(xué) 生 選 課n);printf(n 2. 輸 入 學(xué) 生 基 本 信 息 并 顯 示n); printf(n 3. 輸 入 學(xué) 生 的 選 課 信 息n);printf(n 4. 查 找 某 學(xué) 生 的 信 息 及 選 修 科 目 的 信 息n); printf(n 5. 修 改 某 學(xué) 生 的 信 息n);printf(n 6. 增 加 一 個(gè) 學(xué) 生 的 記 錄n);printf(n 7. 刪 除 某 個(gè) 學(xué) 生 的 記 錄n);printf(n 8. 按 學(xué) 號(hào) 降 序 排 序, 依 次 輸 出n);printf(n 9. 將 學(xué) 生 的 信 息 存 儲(chǔ) 入 文 件n);printf(n 0. 退 出 已錄入%d名學(xué)生的記錄nn,count);/-選修課程文件存儲(chǔ)-void save()FILE *fp;int i;if(fp=fopen(Course.txt,w)=NULL)printf(無(wú)法打開(kāi)此文件!n);exit(0);for(i=0;i7;i+)if(fwrite(&Coi,sizeof(struct Course),1,fp)!=1)printf(無(wú)法打開(kāi)文件Course.txt!n);fclose(fp);/-選修課程文件輸出-void load()FILE *fp;int i;if(fp=fopen(Course.txt,r)=NULL) printf(無(wú)法打開(kāi)文件Course.txt!n); exit(0);for(i=0;iSname); while(1) printf(請(qǐng)輸入學(xué)生的性別(男/女 1/0):n); scanf(%d,&q); if(q=1) strcpy(p-Ssex,男);break; else if(q=0) strcpy(p-Ssex,女);break; else printf(輸入錯(cuò)誤,請(qǐng)重新輸入!n); printf(請(qǐng)輸入學(xué)生的年齡(請(qǐng)輸入阿拉伯?dāng)?shù)字):n); scanf(%d,&p-Sage); printf(請(qǐng)輸入該學(xué)生的所屬院系(CS/MA/IS):n); scanf(%s,p-Sdept); p-Snum=a;count+; p-next=*headp;*headp=p; printf(nn請(qǐng)輸入學(xué)生的學(xué)號(hào):n); scanf(%ld,&a);p=*headp;printf(學(xué)號(hào) 姓名 性別 年齡 所屬院系n);while(p!=NULL)printf(%ld%10s%8s%8d%10sn,p-Snum,p-Sname,p-Ssex,p-Sage,p-Sdept);p=p-next;/-選修信息的錄入-void xuxiuinput(struct student *headp,struct StuCourse SC)int a,b,c;struct student *p;p=*headp;printf(請(qǐng)輸入選修課程的數(shù)目:n);scanf(%d,&a);scnum=scnum+a;for(int i=0;iSnum=NULL)printf(系統(tǒng)中沒(méi)有任何學(xué)生信息,請(qǐng)先選擇存儲(chǔ)!n);exit(0);while(b!=p-Snum&p-next!=NULL) p=p-next; if(b=p-Snum) SCi.Sno=b;break;elseprintf(無(wú)法找到!請(qǐng)確認(rèn)是否已輸入該學(xué)生的信息。n);printf(輸入選修的科目編號(hào)(1-7):n);scanf(%d,&c);while(1) if(c=1&c=7) SCi.SCno=c;break; else printf(請(qǐng)重新選擇選修科目!n輸入你選修的科目的編號(hào)(1-7):n);scanf(%d,&c);printf(輸入該選修科目的成績(jī):n);scanf(%lf,&SCi.Grade);printf(選修科目信息如下:n);printf(Sno Cno Graden);for(i=0;iSnum=NULL)printf(系統(tǒng)中沒(méi)有任何學(xué)生信息,請(qǐng)先選擇存儲(chǔ)!n);break;while(x!=p-Snum&p-next!=NULL) p=p-next; if(x=p-Snum) printf(學(xué)號(hào) 姓名 性別 年齡 所屬院系n); printf(%ld%10s%8s%8d%10sn,p-Snum,p-Sname,p-Ssex,p-Sage,p-Sdept); else printf(無(wú)法找到!請(qǐng)確認(rèn)是否已輸入該學(xué)生的信息。n); break;else if(a=2)printf(請(qǐng)輸入該學(xué)生的姓名:n); scanf(%s,c);if(p-Snum=NULL)printf(系統(tǒng)中沒(méi)有任何學(xué)生信息,請(qǐng)先選擇存儲(chǔ)!n);menu();while(strcmp(c,p-Sname)!=0)&p-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 21036:2025 EN Plastics piping systems for industrial applications - Unplasticized polyamide (PA-U) - Metric series for specifications for components and system
- 建筑工程水電材料購(gòu)銷合同(2025年版)2篇
- 二零二五年文化產(chǎn)業(yè)投資合伙協(xié)議3篇
- 長(zhǎng)春公積金2025年度業(yè)務(wù)流程優(yōu)化合同3篇
- 2025版企業(yè)停薪留職員工心理疏導(dǎo)服務(wù)協(xié)議3篇
- 2025年度項(xiàng)目管理人員專業(yè)技能培訓(xùn)聘用協(xié)議2篇
- 2025年度醫(yī)療健康領(lǐng)域個(gè)人勞務(wù)派遣管理協(xié)議4篇
- 2025年度窗簾行業(yè)供應(yīng)鏈管理服務(wù)合同2篇
- 2025年度個(gè)性化定制住房建設(shè)合同范本4篇
- 2025年度停車場(chǎng)停車場(chǎng)智能收費(fèi)系統(tǒng)承包合同4篇
- 2023-2024學(xué)年度人教版一年級(jí)語(yǔ)文上冊(cè)寒假作業(yè)
- 軟件運(yùn)維考核指標(biāo)
- 空氣動(dòng)力學(xué)仿真技術(shù):格子玻爾茲曼方法(LBM)簡(jiǎn)介
- 對(duì)表達(dá)方式進(jìn)行選擇與運(yùn)用
- GB/T 18488-2024電動(dòng)汽車用驅(qū)動(dòng)電機(jī)系統(tǒng)
- 投資固定分紅協(xié)議
- 高二物理題庫(kù)及答案
- 職業(yè)發(fā)展展示園林
- 七年級(jí)下冊(cè)英語(yǔ)單詞默寫(xiě)表直接打印
- 2024版醫(yī)療安全不良事件培訓(xùn)講稿
- 中學(xué)英語(yǔ)教學(xué)設(shè)計(jì)PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論