



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(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)行情況能正確運(yùn)行基本能正確運(yùn)行能運(yùn)行但結(jié)果不完善(占總成績(jī) 20%)(20 分)(15 分)(10 分)程序功能的完善程度完善基本完善不完善(占總成績(jī) 10%)(10 分)(8 分)( 5 分)程序結(jié)構(gòu)的合理性(占總成績(jī) 10%)合理基本合理不太合理(10 分)(8 分)(5 分)對(duì)問題的答辯情況概念正確有創(chuàng)新能正確回答所有問題基本能正確回答(占總成績(jī) 40%)( 40 分)( 35 分)(30 分)部分問題回答概念不清晰(20 分)學(xué)生的工作態(tài)度與工作態(tài)度認(rèn)真能獨(dú)立完成任
2、務(wù)工作態(tài)度認(rèn)真但獨(dú)立性較差獨(dú)立工作能力(10 分)(8 分)(占總成績(jī) 10%)工作態(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é)院制表1目錄引言 -3一、問題描述 -二、需求分析 -三、詳細(xì)設(shè)計(jì) -四、所遇到的問題和分析解決-五、系統(tǒng)特色及關(guān)鍵技術(shù)-六、結(jié)論及心得體會(huì) -七、附錄(源代碼) -2引言通過本課程設(shè)計(jì), 使自己更加系統(tǒng)地理解和掌握數(shù)據(jù)結(jié)構(gòu)的基本概念
3、;能自如地根據(jù)實(shí)際要求,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),并運(yùn)用C 或 C+語言實(shí)現(xiàn)所設(shè)計(jì)的算法,編寫較大型的程序,分析和解決實(shí)際應(yīng)用問題,進(jìn)一步加深、鞏固所學(xué)專業(yè)課程的基本理論知識(shí), 理論聯(lián)系實(shí)際, 進(jìn)一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握 C 語言或 C+語言獨(dú)立的編寫、調(diào)試應(yīng)用程序和進(jìn)行其它相關(guān)設(shè)計(jì)的技能。此項(xiàng)目主要是考察我們對(duì)結(jié)構(gòu)體、數(shù)組、文件等具體操作,以及對(duì)C 語言語法的掌握,所以做成此項(xiàng)目要求比較高的設(shè)計(jì)要求,對(duì)整體有很熟悉的概括,同時(shí)調(diào)試過程也是很重要的, 對(duì)程序界面的要求也比較高, 要設(shè)計(jì)的合理同時(shí)也要美觀一點(diǎn), 能夠人性化的描述清楚你的各個(gè)功能, 一目了然, 對(duì)其他用戶使用本程序
4、簡(jiǎn)單易懂,這才能成本程序或本系統(tǒng)是成功的。對(duì)于學(xué)生成績(jī)管理系統(tǒng), 此項(xiàng)目每年都有學(xué)生去做, 但是能夠在其他項(xiàng)目中脫穎而出,還要有自己的設(shè)計(jì)特色, 用簡(jiǎn)單的語言詳細(xì)描述系統(tǒng)的功能, 這才是關(guān)鍵。這個(gè)設(shè)計(jì)能夠練習(xí)我們的理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法, 掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法, 學(xué)會(huì)調(diào)試一個(gè)比較長(zhǎng)的程序的基本方法, 同時(shí)掌握書寫程序設(shè)計(jì)開發(fā)文檔的能力。3一問題描述1、課程設(shè)計(jì)應(yīng)完成的工作( 1)編寫算法( 2)算法測(cè)試,并有具體的測(cè)試結(jié)果和結(jié)果分析( 3)撰寫課程報(bào)告,內(nèi)容包括:封面目錄課程設(shè)計(jì)報(bào)告正文使用說明參考文獻(xiàn)2、總體設(shè)計(jì)工作(包含幾大功能模塊)1. 顯示本學(xué)期考核的7門科
5、目信息以供學(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ī)42、功能要求1使用中文菜單,界面設(shè)計(jì)和用戶輸入輸出要人性化些;2. 將學(xué)生信息保存在文本文檔中,
6、具體對(duì)學(xué)生信息進(jìn)行插入刪除查詢操作時(shí),將保存在文本文檔中的學(xué)生信息提取出來,保存在自己定義的數(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é)生某門課程的成績(jī))??疾辄c(diǎn):插入時(shí)注意學(xué)號(hào)的處理,可以不填嗎,是否重復(fù) ,其他數(shù)據(jù)是否可以亂填,如何控制 ;刪除時(shí)一要防止誤操作,二要考慮該生的選課信
7、息,如何處理;修改時(shí)同樣要考慮各數(shù)據(jù)項(xiàng)的性質(zhì);對(duì)選修表進(jìn)行插入、刪除、修改操作;查詢要求可以實(shí)現(xiàn)多條件查詢。有 3 個(gè)文件:Student.txt 中的內(nèi)容:SnoSnameSsexSageSdept20120001李勇男20CS20120002劉晨女19CS20120003王敏女18MA20120005張立男19ISCourse.txt 中的內(nèi)容:CnoCnameCcredit1英語42數(shù)學(xué)23信息系統(tǒng)44操作系統(tǒng)35數(shù)據(jù)結(jié)構(gòu)456數(shù)據(jù)處理27C/C+4SC.txt 中的內(nèi)容:SnoCnoGrade20120001190201200012802012000148520120002186201
8、2000338220120003588201200057903、開發(fā)環(huán)境Visual C+ 不僅僅是是一個(gè)C+ 編譯器,而是一個(gè)基于Windows 操作系統(tǒng)的可視化集成開發(fā)環(huán)境,這種環(huán)境開發(fā)出來的軟件穩(wěn)定性好、可移植性強(qiáng), 可以編制各種各樣的Windows 應(yīng)用程序。三、詳細(xì)設(shè)計(jì)1、系統(tǒng)流程圖開始主界面顯輸輸查修增刪信退示入入找改加除息出信學(xué)選學(xué)學(xué)學(xué)學(xué)存本息生修生生生生入系科信信信信信信文統(tǒng)目息息息息息息件結(jié)束62、界面設(shè)計(jì)主界面: 在此界面用戶可以選擇要操作的選項(xiàng),回車之后即可進(jìn)入相關(guān)的頁面進(jìn)行操作(例如:選擇1 ,即可顯示本學(xué)期考核的7 門科目信息)在本界面里用戶可以輸入學(xué)生相關(guān)的信息數(shù)據(jù)
9、,按照提示進(jìn)行操作即可,例如7所有操作均有提示語,比較人性化的管理,易懂,簡(jiǎn)單。3、大概設(shè)計(jì)模塊(1)先編入系統(tǒng)所需的庫函數(shù),從而使程序可運(yùn)行。#include<stdio.h>#include<stdlib.h>#include<string.h>#include <conio.h> / 文件和標(biāo)準(zhǔn)控制臺(tái)的輸入輸出( 2)Main() 函數(shù)的設(shè)計(jì)在 main() 函數(shù)中主要運(yùn)用 do-while 循環(huán)語句和 switch()-case 選擇判斷語句來調(diào)用相關(guān)功能模塊。系統(tǒng)的運(yùn)行是在一個(gè)永真的循環(huán)里進(jìn)行的,只有在主界面并選擇“退出”時(shí),才會(huì)跳出永
10、真循環(huán),并退出程序。( 3)主界面的設(shè)計(jì)在主界面中包括 “顯示本學(xué)期考核的7 門科目信息以供學(xué)生選科目輸入學(xué)生基本信息并顯示輸入學(xué)生的選課信息查找某學(xué)生的信息及選修科目的信息修改某學(xué)生的信息增加一個(gè)學(xué)生的記錄刪除某學(xué)生的記錄按數(shù)據(jù)結(jié)構(gòu)降序(冒泡 )排序?qū)W(xué)生的信息存儲(chǔ)入文件退出”等全部的功能, 之所以設(shè)計(jì)這麼一個(gè)主界面,一是因?yàn)槟苁褂?戶對(duì)程序操作的流程更加清晰簡(jiǎn)明,二是保證了用戶同時(shí)只能對(duì)一個(gè)文件進(jìn)行操作系統(tǒng)的要求,保證了系統(tǒng)不會(huì)打開文件紊亂或者出現(xiàn)致命的錯(cuò)誤。每個(gè)函數(shù)體如下:Int main();/ 主函數(shù)void save();/選修課程文件存儲(chǔ)void load();/選修課程文件輸出
11、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);/
12、 增加一個(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)確定語言算法由于之前都沒有做過類似的設(shè)計(jì),所以一時(shí)間不
13、能夠確定到底使用何種語言來設(shè)計(jì)本系統(tǒng),所以在網(wǎng)上看了一些其他人設(shè)計(jì)的程序,鏈表的、數(shù)組的,C+ 的,各種各樣的,也不知如何選擇,但是仔細(xì)地看了其中的設(shè)計(jì)思想,最終還是用C 和鏈表的來做,一是覺得本人對(duì)指針數(shù)組掌握的不是很熟練,那么在設(shè)計(jì)過程中容易產(chǎn)生不能理解的錯(cuò)誤,耽誤時(shí)間,二是想運(yùn)用C,可以鞏固一下所學(xué)的數(shù)據(jù)結(jié)構(gòu)的知識(shí),之前做實(shí)驗(yàn)的時(shí)候一直用C+來做,都沒怎么用所學(xué)的知識(shí),這時(shí)候想練練。就這樣確定了整體的結(jié)構(gòu)算法。(2)確定程序主要功能模塊這個(gè)就比較簡(jiǎn)單了,主要是根據(jù)系統(tǒng)設(shè)計(jì)的說明及要求來設(shè)計(jì),從而設(shè)計(jì)了十大功能模塊,有文件操作,有系統(tǒng)維護(hù)功能,排序和統(tǒng)計(jì)功能,有輸入輸出等基本功能,比較人性
14、化, 添加了較多的提示語。這個(gè)程序的主要功能時(shí)輸入學(xué)生的學(xué)號(hào),姓名,學(xué)期和三科成績(jī)來對(duì)其進(jìn)行存儲(chǔ),在存儲(chǔ)后可以對(duì)學(xué)生的成績(jī)按學(xué)號(hào)及學(xué)期或姓名及學(xué)期來進(jìn)行查詢,同時(shí)輸出此同學(xué)的平均分及總分,之后可以對(duì)某個(gè)同學(xué)的成績(jī)進(jìn)行各種操作,例如修改, 刪除等,同時(shí)還可以對(duì)學(xué)生們的成績(jī)按照總分或單科成績(jī)排序,在整個(gè)過程中所做的操作都會(huì)保存到 "student.txt" 文件中并顯示。(3)系統(tǒng)結(jié)構(gòu)體的設(shè)計(jì)9學(xué)姓號(hào)名struct student /結(jié)構(gòu)體long Snum;/學(xué)號(hào)char Sname20;/ 姓名char Ssex10;/性別int Sage;/年齡char Sdept10;
15、/ 所屬院系struct student *next;/ 指針;學(xué)生性年所別齡屬院系科目編名學(xué)號(hào)稱分struct Course/ 結(jié)構(gòu)體int Cno;/ 選修科目編號(hào)char Cname20;/ 信息科目名稱int Credit;/ 信息科目學(xué)分;選修10學(xué)號(hào)struct StuCourse/結(jié)構(gòu)體long Sno;/選修者學(xué)號(hào) int SCno;/ 選修科目編號(hào) double Grade;/ 選修科目成績(jī);編成號(hào)績(jī)(4)各功能模塊的設(shè)計(jì)*主函數(shù)模塊用函數(shù) int main()來實(shí)現(xiàn)主要是來顯示主菜單, 使用戶選擇操作。 首先定義一個(gè)指針數(shù)組 (全局使用) StuCourse SCSIZE(
16、 SIZE=1000),; 在此處 SIZE 是指數(shù)組大小, 之前有定義的, 在這里應(yīng)用了 do-while和 switch-case語句來進(jìn)行選擇,是個(gè)比較簡(jiǎn)單實(shí)現(xiàn)的模塊。最后若選擇“0”則是退出永真循環(huán)。*選修課程的文件輸入(出)模塊用函數(shù) void save();與 void load();來實(shí)現(xiàn)主要用來將已定義的結(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)
17、printf("無法打開此文件!n");exit(0);for(i=0;i<7;i+)if(fwrite(&Coi,sizeof(struct Course),1,fp)!=1)printf("無法打開文件Course.txt!n");11fclose(fp);void load()/導(dǎo)出文件FILE *fp;int i;if(fp=fopen("Course.txt","r")=NULL)printf("無法打開文件Course.txt!n");exit(0);for(i=0;i
18、<7;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);來實(shí)現(xiàn)主要功能用來對(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ù)主菜單來在此基礎(chǔ)上進(jìn)行操作。期間會(huì)有
19、一些提示語,按此操作即可。根據(jù)if和 for語句來判定期間是否有重復(fù)學(xué)號(hào)輸入,在本操作中,允許有重復(fù)學(xué)生姓名出現(xiàn)。在此模塊中,同時(shí)也用到了一個(gè)控制變量a,它是用來判定的條件變量。之后返回主菜單。*輸入選修信息模塊用函數(shù) void xuxiuinput(struct student *headp,struct StuCourse SC)來實(shí)現(xiàn)主要功能用于選修信息的錄入。首先會(huì)跳出主菜單,選擇“3“,進(jìn)入輸入模塊輸入所需選修科目的個(gè)數(shù),接著輸入選修該科目者的學(xué)號(hào)及科目編號(hào)及成績(jī)。根據(jù) for-while語句來控制,期間會(huì)有提示語。在本操作中,不允許學(xué)號(hào)的重復(fù),科目編號(hào)控制在1-7 。12*查找學(xué)生
20、及選修信息模塊用函數(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語句,對(duì)于學(xué)號(hào),科目編號(hào)等進(jìn)行控制,避免重復(fù)等情況出現(xiàn)。13*修改學(xué)生及選修信息模塊用函數(shù) int modify(struct student *headp,struct StuCourse SC)實(shí)現(xiàn)主要功能是修改學(xué)生
21、的基本信息以及選修科目的信息。首先跳出主菜單,選擇5。輸入你想要修改的學(xué)生的學(xué)號(hào),接著會(huì)彈出一個(gè)提示語" 請(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語句及 while語句來控制變量,只有正確輸入才會(huì)彈出循環(huán),正確顯示。*插入學(xué)生記錄及選修信息模塊用函數(shù) void insert(struct student *headp,struct StuCourse SC)實(shí)現(xiàn)主要功能是插入一個(gè)新的學(xué)生記錄,并將該學(xué)生的選修信息
22、錄入到StuCourse 中。首先彈出主菜單,選擇6,輸入新增加的學(xué)生的學(xué)號(hào),接著輸入該學(xué)生的選修信息,然后再輸入學(xué)生的姓名,年齡等信息。 在本模塊中同樣使用while語句以及if-else語句來控制學(xué)號(hào)等的輸入。14*刪除學(xué)生記錄以及選修信息模塊用函數(shù) void shanchu(struct student *headp,struct StuCourse SC)來實(shí)現(xiàn)主要功能是刪除一個(gè)學(xué)生的記錄并刪除其中StuCourse中的記錄。首先有個(gè)選擇的操作,之后會(huì)有判斷語句,根據(jù)所輸入的學(xué)號(hào),來顯示刪除前的信息記錄,添加for循環(huán)語句,循環(huán)把后一位的信息提前一位,整體數(shù)量減一,來進(jìn)行全局變量的修改
23、,之后再把修改過后的信息記錄保存到文件中去。在現(xiàn)實(shí)中會(huì)有由于某些原因而不在學(xué)校的同學(xué)的記錄,15這時(shí)候就要對(duì)其記錄進(jìn)行刪除操作,這樣可以使系統(tǒng)及時(shí)更新并得到優(yōu)化。*按數(shù)據(jù)結(jié)構(gòu)學(xué)號(hào)(冒泡)降序排序模塊用函數(shù) void sort(struct student *headp)來實(shí)現(xiàn)主要功能時(shí)是用來對(duì)學(xué)生的記錄來按學(xué)號(hào)大小進(jìn)行排序。這樣方便對(duì)學(xué)生有個(gè)大致的了解。本排序使用冒泡排序。它有兩個(gè)優(yōu)點(diǎn):一是“編程復(fù)雜度”很低,很容易寫出代碼;二是具有穩(wěn)定性, 這里的穩(wěn)定性是指原序列中相同兩元素的相對(duì)順序仍然保持到排序后的序列。冒泡排序時(shí)進(jìn)過 n-1 趟子排序完成的,第 i 趟子排序從第 1 個(gè)數(shù)至第 n+1
24、個(gè)數(shù),若第 i 個(gè)數(shù)比后一個(gè)數(shù)大(則升序,小則降序。本程序一律采用降序)則交換兩數(shù)。本程序中冒泡排序代碼如下:for(p1=*headp,i=0;i<count-1;i+,p1=p1->next)for(p2=p1->next,j=i+1;j<count;j+,p2=p2->next)if(p1->Snum<p2->Snum)num=p2->Snum;16p2->Snum=p1->Snum;p1->Snum=num;strcpy(name,p2->Sname);strcpy(p2->Sname,p1->S
25、name);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);排序前:17排序后:*將學(xué)生及選修信息存入文件并顯示模塊用函數(shù)void filesave(s
26、truct student *headp,struct StuCourse SC)及 voidfileload(struct student *headp,struct StuCourse SC)實(shí)現(xiàn)主要功能是將之前輸入的學(xué)生信息及選修科目信息存儲(chǔ)入文件并從文件中導(dǎo)出顯示。首先本模塊中有2 個(gè)文件指針FILE *fp1,*fp2,分別指向 Student.txt文件與 StuCourse.txt文件。此時(shí)會(huì)有提示語" 請(qǐng)確認(rèn)是否將數(shù)據(jù)存儲(chǔ)進(jìn)文件:1. 是 2. 否: " ,選擇 1,將信息存入。18*以上就是本程序的詳細(xì)設(shè)計(jì)及基本思想*四、所遇到的問題和分析解決1、 存在的
27、不足本學(xué)生成績(jī)管理系統(tǒng)由九大模塊組成,每個(gè)模塊相互聯(lián)系又相互獨(dú)立。這個(gè)學(xué)生成績(jī)管理系統(tǒng)存在著很多不足之處,由于自己本身編程能力的問題,這個(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)沒有嚴(yán)格的規(guī)定,可以輸入任何的字符。這有待以后努力,更詳盡的實(shí)現(xiàn)模塊的功能。2、 do-while 語句的位置問題在修改學(xué)生記錄此模塊中, 若循環(huán)語句的位置不對(duì)那么這個(gè)循環(huán)就會(huì)自動(dòng)跳出, 或變?yōu)閬y碼, 不能實(shí)現(xiàn)原有的功
28、能。 所以要想清楚到底是在哪安放, 按照邏輯思路找到相應(yīng)的語句正確添加就行了。3、 細(xì)節(jié)方面其實(shí)在有些細(xì)節(jié)方面還是要特別注意啊,比如分號(hào)的添加,<<與>>的方向問題,函數(shù)的返回值等問題, 雖然容易改掉,但是很容易養(yǎng)成不好的習(xí)慣,而且還會(huì)浪費(fèi)時(shí)間,所以在一開始寫的時(shí)候就要很仔細(xì),這樣才能保證程序編的精細(xì),同時(shí)若出現(xiàn)很多這樣的錯(cuò)誤的話,在編寫程序的時(shí)候也會(huì)心里煩的,所以在編程的時(shí)候要認(rèn)真仔細(xì)。4、 文件的寫入與讀出剛開始時(shí)對(duì)文件的操作不是很明白,一直不能很好的操作文件,直到最后快要驗(yàn)收的時(shí)候,仍舊出現(xiàn)了嚴(yán)重的問題,就是對(duì)已經(jīng)存在的文件讀取問題,通過"讀取文件并輸出
29、學(xué)生信息 " ,將數(shù)據(jù)從文件中讀取,但是不能夠正常的讀出,最后把讀文件的操作語句進(jìn)行仔細(xì)檢查后, 發(fā)現(xiàn)語句的順序有點(diǎn)問題,把 fscanf()語句進(jìn)行再修改后就能夠正常的讀取文件了。5、 內(nèi)存的分配問題對(duì)于初學(xué)者的話對(duì)內(nèi)存的分配和釋放問題是比較抽象的和模糊的問題,在排序是之前就出現(xiàn)了交換數(shù)據(jù)困難的問題,以及內(nèi)存分配空間繁瑣釋放空間不及時(shí)的問題,造成空間的浪費(fèi),使得程序運(yùn)行時(shí)效率較低,因此最后采用了順序存儲(chǔ)記錄的方式,這就能改變前面所出現(xiàn)的問題。196、 較小的問題方面其余的就沒什么比較大的問題了,基本上只要細(xì)心一點(diǎn)的話就可以正確調(diào)試了。五、 系統(tǒng)特色及關(guān)鍵技術(shù)其實(shí)在本程序的設(shè)計(jì)過程當(dāng)
30、中,沒有很吸引人的關(guān)鍵技術(shù),因?yàn)楸救说腃 語言或 C+語言都不是學(xué)的很好,所以當(dāng)初設(shè)計(jì)的時(shí)候就只是想把功能都實(shí)現(xiàn)就好了,盡可能的把所要求的功能都編進(jìn)程序,這樣就覺得很滿足了。所以都是設(shè)計(jì)的比較簡(jiǎn)單易懂的語言,這樣自己能夠更明白一些, 所以就沒有時(shí)間去細(xì)細(xì)地去設(shè)計(jì)自己的程序。本程序要說有什么值得說的,那就只有人性化這點(diǎn)了,在設(shè)計(jì)成學(xué)的時(shí)候,因?yàn)樽约号屡炝?,所以添加了很詳盡的提示,這樣在編程的過程中或調(diào)試的時(shí)候都能夠比較快的運(yùn)行。還有就是盡可能的應(yīng)用了do-while 語句和 switch-case 語句,這兩個(gè)語句在之前不是很常用,所以在這個(gè)程序中試煉了一下, 雖然在編寫的過程中總是出錯(cuò),但還
31、是成功的用好了,也是程序有條理一些。我也知道這些東西別人可能比我弄得還要好,但是我在我所學(xué)的知識(shí)中成功的應(yīng)用了這些,我覺得就是好事, 就是進(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)一些新的小問題。六、 結(jié)論及心得體會(huì)一周多的課程設(shè)計(jì), 終于成功的驗(yàn)收了, 雖然有些疲憊, 但還是有很多的收獲的,像計(jì)算機(jī)組成原理的課設(shè)一樣,我又一次鞏固了所學(xué)到的知識(shí),之前的學(xué)習(xí)只是停留在理論基礎(chǔ)上,現(xiàn)在自己動(dòng)手操作試驗(yàn)后, 才是真正的理解及體會(huì)。C 也學(xué)了近一年, 有很多知識(shí)都是似懂非懂, 通過平時(shí)上機(jī)操作,自己也了解了一些,
32、但讓我有了更深的理解和更好的認(rèn)識(shí),則是在這次的課設(shè)上,之前的困惑也通過這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很高興。在課程設(shè)計(jì)之前,因?yàn)橛辛司C合實(shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸進(jìn)去之后,并編譯讓其運(yùn)行,發(fā)現(xiàn)通過不了,再來檢查出問題,是很費(fèi)費(fèi)力的事情, 因此分析和規(guī)劃代碼是很重要的,最重要的是要把邏輯結(jié)構(gòu)寫好,這樣就不會(huì)出現(xiàn)大問題, 寫代碼就要先找出核心的內(nèi)容,用多種方法來實(shí)現(xiàn)核心部分, 這樣可以盡可能的避免發(fā)現(xiàn)邏輯或編譯不支持的錯(cuò)誤。通過本次論文設(shè)計(jì), 我初步學(xué)會(huì)了論文設(shè)計(jì)的基本方法,學(xué)會(huì)了怎樣去借鑒別人的方法和經(jīng)驗(yàn),知道了如何整合資料和
33、處理這些資料的能力,這位以后做畢設(shè)的論文打下了基礎(chǔ),20使我感覺比較好的是有一種成功的喜悅,雖然在編譯的時(shí)候會(huì)經(jīng)常因?yàn)橐恍┬〉腻e(cuò)誤而心煩意亂, 但是也不失為一件好事,失敗的越多積累的經(jīng)驗(yàn)越豐富,對(duì)人的考驗(yàn)也比較多,那么在最后編譯成功時(shí)的喜悅就越濃烈,也是自己的能力有了進(jìn)一步的提高。由于知識(shí)和經(jīng)驗(yàn)的不足, 這個(gè)程序編寫的不是很盡如人意,但是融合了自己的心血,就覺得是最好的,所以在以后還是需要較多的努力的,還是會(huì)在以后的學(xué)習(xí)過程中不斷地提高和改進(jìn)的。七、附錄(源代碼)#include<stdio.h>#include<stdlib.h>#include<string.
34、h>#include<conio.h>static 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," 英語 ",4,2," 數(shù)學(xué) ",2,3,"
35、 信息系統(tǒng) ",4,4," 操作系統(tǒng) ",3,5," 數(shù)據(jù)結(jié)構(gòu) ",4,6," 數(shù)據(jù)處理 ",2,7,"c/c+",4;struct StuCourse21long Sno;int SCno;double Grade;void menu()printf("n學(xué) 生 成 績(jī) 統(tǒng) 計(jì) 與 分 析 系 統(tǒng) nn");printf("n菜 單 nn");printf("n1.顯示本學(xué)期考核的7門科目信息以供 學(xué) 生 選 課 n");printf(&quo
36、t;n2.輸 入 學(xué) 生 基 本 信 息 并 顯 示 n");printf("n3.輸 入 學(xué) 生 的 選 課 信 息 n");printf("n4.查找某學(xué)生的信息及選修科目的信息 n");printf("n5.修 改 某 學(xué) 生 的 信 息 n");printf("n6.增 加一 個(gè) 學(xué) 生 的 記 錄 n");printf("n7.刪 除某 個(gè) 學(xué) 生 的 記 錄 n");printf("n8.按 學(xué)號(hào) 降 序 排 序, 依 次 輸 出 n");printf(
37、"n9.將 學(xué)生 的 信 息 存 儲(chǔ) 入 文 件 n");printf("n0.退出已錄入 %d 名學(xué)生的記錄nn",count);/-選修課程文件存儲(chǔ)-void save()FILE *fp;int i;if(fp=fopen("Course.txt","w")=NULL)printf(" 無法打開此文件!n");exit(0);for(i=0;i<7;i+)if(fwrite(&Coi,sizeof(struct Course),1,fp)!=1)printf(" 無
38、法打開文件Course.txt!n");fclose(fp);22/-選修課程文件輸出-void load()FILE *fp;int i;if(fp=fopen("Course.txt","r")=NULL)printf(" 無法打開文件Course.txt!n");exit(0);for(i=0;i<7;i+)fread(&Coi,sizeof(struct Course),1,fp); printf("%4d%10s%8dn",Coi.Cno,Coi.Cname,Coi.Credit)
39、;fclose(fp);/-學(xué)生信息輸入-void input(struct student *headp)struct student *p;long a;int q;printf("*若要停止輸入學(xué)生數(shù)據(jù),請(qǐng)將學(xué)號(hào)以0輸入*nn");printf(" 請(qǐng)輸入學(xué)生的學(xué)號(hào):n");scanf("%ld",&a);while(a!=0)p=(struct student*)malloc(sizeof(struct student);if(p=NULL)printf("no enough memory!n");
40、exit(0);printf(" 請(qǐng)輸入學(xué)生的姓名:n");scanf("%s",p->Sname);while(1)printf(" 請(qǐng)輸入學(xué)生的性別(男/女 1/0) :n");scanf("%d",&q);if(q=1)strcpy(p->Ssex," 男 ");break;else if(q=0)23strcpy(p->Ssex," 女 ");break;elseprintf(" 輸入錯(cuò)誤,請(qǐng)重新輸入!n");printf
41、(" 請(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)姓名性別年齡所屬院
42、系 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",&
43、a);scnum=scnum+a;for(int i=0;i<a;i+)while(1)printf(" 輸入選修者的學(xué)號(hào):n");scanf("%ld",&b);if(p->Snum=NULL)printf(" 系統(tǒng)中沒有任何學(xué)生信息,請(qǐng)先選擇存儲(chǔ)! n");exit(0); while(b!=p->Snum&&p->next!=NULL)p=p->next;if(b=p->Snum)24SCi.Sno=b;break;elseprintf(" 無法找到!請(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;elseprintf(" 請(qǐng) 重 新 選 擇 選
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電焊工施工合同協(xié)議書
- 湖北省隨州市部分高中2024-2025學(xué)年高一下學(xué)期2月聯(lián)考地理試卷(含答案)
- 洗衣設(shè)備購銷合同共
- 健身房運(yùn)營(yíng)管理作業(yè)指導(dǎo)書
- 會(huì)議策劃與活動(dòng)執(zhí)行服務(wù)協(xié)議
- 健康科技在老年健康管理中的應(yīng)用解決方案
- 水利建設(shè)工程施工合同協(xié)議書
- 大學(xué)生科普小說讀后感
- 觀看紀(jì)錄片長(zhǎng)江觀后感
- 車隊(duì)土石方運(yùn)輸合同
- 化學(xué)電源電化學(xué)原理
- 英語國家概況謝福之chapter-1
- 高頻訂單失衡及價(jià)差因子
- 部門預(yù)算與預(yù)算管理(PPT-38頁)課件
- (KPI績(jī)效考核)某制造業(yè)公司X年績(jī)效考核全套考核指標(biāo)
- 布朗德戰(zhàn)略導(dǎo)向的薪酬管理體系
- SOP標(biāo)準(zhǔn)作業(yè)指導(dǎo)書樣板
- 食品經(jīng)營(yíng)餐飲操作流程(共1頁)
- JTS 144-1-2010 港口工程荷載規(guī)范
- 產(chǎn)液剖面介紹
- 美國UNF和unc螺紋標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論