[計(jì)算機(jī)軟件及應(yīng)用]學(xué)生管理系統(tǒng)與車(chē)輛管理系統(tǒng) 課程設(shè)計(jì)報(bào)告
《[計(jì)算機(jī)軟件及應(yīng)用]學(xué)生管理系統(tǒng)與車(chē)輛管理系統(tǒng) 課程設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《[計(jì)算機(jī)軟件及應(yīng)用]學(xué)生管理系統(tǒng)與車(chē)輛管理系統(tǒng) 課程設(shè)計(jì)報(bào)告(81頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 通信工程學(xué)院課程設(shè)計(jì)報(bào)告 姓名:陳志 學(xué)號(hào):52101610 專(zhuān)業(yè):通信工程 班級(jí):10級(jí)16班 (車(chē)輛管理系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告) 目錄 1. 課程設(shè)計(jì)任務(wù)……………………………………………………2 2.設(shè)計(jì)結(jié)構(gòu)圖與流程圖……………………………………………..2 3.程序代碼設(shè)計(jì)…………
2、…………………………………………..5 1.1 頭文件……………………………………………………..5 1.2 源文件……………………………………………………...5 4.編碼與調(diào)試分析……………………………………………………5 5.使用說(shuō)明及運(yùn)行結(jié)果………………………………………………6 6.課程設(shè)計(jì)心得體會(huì)………………………………………………….7 7.附錄(程序清單)……………………………………………………...8 1.課程設(shè)計(jì)任務(wù) 1.1實(shí)驗(yàn)?zāi)康? 使用C語(yǔ)言實(shí)現(xiàn)交通車(chē)輛違章管理系統(tǒng)的違章信息錄入、違章情況查詢(xún)、針對(duì)每臺(tái)車(chē)輛統(tǒng)計(jì)罰款總金額
3、等基本操作。進(jìn)一步鞏固C語(yǔ)言的學(xué)習(xí),培養(yǎng)一定的綜合編程能力。 1.2需要處理的基礎(chǔ)數(shù)據(jù) 設(shè)違章種類(lèi)分為違章停車(chē)、闖紅燈、超速等三種。設(shè)違章停車(chē)每次罰款100元、闖紅燈每次罰款200元、超速每次罰款500元。 需處理的車(chē)輛及違章基本信息包括:車(chē)牌號(hào)、車(chē)主姓名、違章停車(chē)次數(shù)、闖紅燈次數(shù)、超速次數(shù)。 1.3系統(tǒng)功能 1.車(chē)輛及違章信息的錄入。 2.基于車(chē)牌號(hào)查詢(xún)每臺(tái)車(chē)輛的違章情況。 3.基于車(chē)牌號(hào)統(tǒng)計(jì)每臺(tái)車(chē)輛的罰款總金額。 2.設(shè)計(jì)結(jié)構(gòu)圖與流程圖 2.1設(shè)計(jì)結(jié)構(gòu)圖 程序設(shè)計(jì)圖分幾個(gè)小模塊,下面是程序的簡(jiǎn)易結(jié)構(gòu)圖 輸入0結(jié)束輸入并推出系統(tǒng),輸入1繼續(xù) !
4、
車(chē)輛管理系統(tǒng)
輸入車(chē)輛信息
輸入車(chē)牌號(hào)查詢(xún)其違章情況
輸入車(chē)牌號(hào)統(tǒng)計(jì)其罰款總金額
2.2程序設(shè)計(jì)流程圖
開(kāi)始
輸入車(chē)輛信息
輸入為1嗎?
是
輸入車(chē)牌號(hào)查詢(xún)其違章情況
輸入為1碼?
輸入車(chē)牌號(hào)統(tǒng)計(jì)該臺(tái)車(chē)輛的罰款總金額
否
是
否
輸入為1碼?
結(jié)束
是
否
3.程序代碼設(shè)計(jì)
3.1 頭文件
為了使用系統(tǒng)中一些函數(shù),引入一些系統(tǒng)函數(shù)的頭文件#include
5、相關(guān)信息: typedef struct Pe { char vno[8]; /*車(chē)牌號(hào)*/ char name[15]; /*車(chē)主姓名*/ int times1; /*違章停車(chē)次數(shù)*/ int times2; /*闖紅燈次數(shù)*/ int times3; /*超速次數(shù)*/ }PECCANCY; 之后就是編寫(xiě)的程序,該程序?yàn)槲炊x其他的函數(shù),所有功能都是在main函數(shù)中實(shí)現(xiàn)! 3.2 源文件 該系統(tǒng)只有一個(gè)mian函數(shù),無(wú)定義函數(shù)和自定義函數(shù). 4.編碼與調(diào)試分析 1).剛設(shè)計(jì)時(shí),本來(lái)設(shè)計(jì)了很多的小函數(shù)來(lái)實(shí)現(xiàn)各個(gè)分功能,不過(guò)遇
6、到了困難,就是各個(gè)分函數(shù)不能共享數(shù)據(jù),于是就改成在一個(gè)主函數(shù)實(shí)現(xiàn)所有的功能. 2).還有每次用戶(hù)輸入完一項(xiàng)功能,詢(xún)問(wèn)是否繼續(xù),如果不繼續(xù),就自動(dòng)進(jìn)入下一個(gè)功能. 5. 使用說(shuō)明及運(yùn)行結(jié)果 5.1 進(jìn)入系統(tǒng)界面提示輸入車(chē)輛信息,如下: 5.2 之后按0結(jié)束輸入,或按1繼續(xù)錄入信息! 按0進(jìn)入查詢(xún)車(chē)輛信息界面.如下: 5.3 同樣根據(jù)提示繼續(xù)查詢(xún)按1,否則按0結(jié)束查詢(xún),輸入1進(jìn)入根據(jù)車(chē)牌號(hào)查詢(xún)?cè)撥?chē)總罰款金額,如下: 5.4 按1繼續(xù)查詢(xún)其他車(chē)輛的總罰款金額,按0退出系統(tǒng)! 6. 課程設(shè)計(jì)心得體會(huì) 通過(guò)自己編寫(xiě)車(chē)輛違章管理系
7、統(tǒng)這一程序,讓我學(xué)會(huì)了很多。以前學(xué)C語(yǔ)言、C++時(shí),自己只是會(huì)運(yùn)用所學(xué)的知識(shí)編寫(xiě)一些非常簡(jiǎn)單的程序,從沒(méi)有編寫(xiě)過(guò)較大的程序,更別說(shuō)編寫(xiě)一車(chē)輛管理系統(tǒng)了,不過(guò)這次通過(guò)自己的努力以及老師的精心指導(dǎo),成功的做出了車(chē)輛管理系統(tǒng),雖然該系統(tǒng)功能較少,但畢竟是我自己通過(guò)所學(xué)的知識(shí)做出的產(chǎn)品,看著一個(gè)個(gè)數(shù)據(jù)的輸入,之后得到了自己想要的結(jié)果,一種成就感從心里油然而生,同時(shí)讓我發(fā)現(xiàn)了編程中更大的樂(lè)趣,本來(lái)我對(duì)編程就挺感興趣,通過(guò)此次實(shí)踐,讓我對(duì)編程越來(lái)越感興趣了,當(dāng)然編程過(guò)程中也遇到了一些困難,通過(guò)自己的努力以及老師的指導(dǎo)與幫助,一個(gè)個(gè)困難都迎刃而解了,讓我學(xué)會(huì)很多東西,同時(shí)讓我明白了編程要細(xì)心,否則調(diào)試程序時(shí)
8、會(huì)帶來(lái)沒(méi)必要的困難,總而言之,此次編程設(shè)計(jì)讓我受益匪淺!?。?,希望我的編程能力越來(lái)越高,將來(lái)能在激烈的社會(huì)競(jìng)爭(zhēng)中脫穎而出 !
7.附錄(程序清單)
#include
9、;
void main()
{ int i,e,a,c,d,m=0,n=0,s;
char k[8],j[8];
PECCANCY b[p];
cout<<"輸入車(chē)輛信息"< 10、
cin>>b[i].times2;
cout<<"輸入超速次數(shù):"< 11、 for(i=0;i
12、<
13、s3)*500;
cout<<"車(chē)牌號(hào)為"< 14、設(shè)計(jì)結(jié)構(gòu)圖及流程圖………………………………………………14
3程序代碼設(shè)計(jì)……………………………………………………….20
3.1頭文件………………………………………………………..20
3.2源文件………………………………………………………..21
4編碼與調(diào)試分析…………………………………………………….22
5使用說(shuō)明及運(yùn)行結(jié)果……………………………………………….22
6課程設(shè)計(jì)心得體會(huì)………………………………………………….29
7附錄(程序清單)……………………………………………………..30
1.課程設(shè)計(jì)任務(wù)
1.1實(shí) 15、驗(yàn)?zāi)康?
使用標(biāo)準(zhǔn)C或C++實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)的錄入、查詢(xún)、刪除、統(tǒng)計(jì)等基本操作。進(jìn)一步鞏固C語(yǔ)言的學(xué)習(xí),以提高學(xué)生對(duì)開(kāi)發(fā)環(huán)境的進(jìn)一步認(rèn)識(shí)和綜合編程能力。
1.2需要處理的基礎(chǔ)數(shù)據(jù)
學(xué)生基本信息:學(xué)號(hào)(例如2003級(jí)12班6號(hào)寫(xiě)作20031206)、姓、名、性別、出生年月日、課程名稱(chēng)(外語(yǔ)SCORE[0]、高數(shù)SCORE[1]、C語(yǔ)言SCORE[2]、馬哲SCORE[3])、考試成績(jī)等。
1.3系統(tǒng)功能
1.學(xué)生基本情況錄入。
2.允許對(duì)已經(jīng)錄入的數(shù)據(jù)進(jìn)行顯示。
3.允許進(jìn)行數(shù)據(jù)的插入。
4.刪除基本數(shù)據(jù)的相關(guān)信息。
5.基于姓名的查詢(xún)。如:姓張的所有同學(xué)。
6. 對(duì)性別、 16、出生年月日的合理性進(jìn)行判斷(如0代表“女”,1代表“男”,輸入其他值非法,年齡不能為負(fù),月份不能大于13等)
7.基于各種基本數(shù)據(jù)的統(tǒng)計(jì)計(jì)算。如:
①統(tǒng)計(jì)每個(gè)學(xué)生各門(mén)功課的平均成績(jī),并按平均成績(jī)從高到低的次序排名輸出每個(gè)學(xué)生各門(mén)功課的綜合成績(jī)和平均成績(jī)(名次、學(xué)號(hào)、姓名、平均成績(jī)、各門(mén)功課的考試成績(jī))。
②列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格學(xué)生清單(學(xué)號(hào)、姓名、不及格的課程和成績(jī))。
③統(tǒng)計(jì)并輸出各門(mén)功課的平均成績(jī)和總平均成績(jī)。
④按班級(jí)統(tǒng)計(jì)并輸出總成績(jī)。(需要對(duì)學(xué)號(hào)進(jìn)行解析)
2.設(shè)計(jì)結(jié)構(gòu)圖及流程圖
17、
2.1程序設(shè)計(jì)結(jié)構(gòu)圖如下:
學(xué)生課程管理系統(tǒng)
輸入學(xué)生信息
刪除學(xué)生信息
插入學(xué)生信息
修改學(xué)生信息
學(xué)生成績(jī)排名
輸出學(xué)生信息
學(xué)生成績(jī)計(jì)算
保存學(xué)生信息
學(xué)生成績(jī)排名
顯示學(xué)生信息
讀入學(xué)生信息
查詢(xún)學(xué)生信息
按學(xué)號(hào)查詢(xún)
按學(xué)生姓查找
按學(xué)生班級(jí)查找
2.2 程序設(shè)計(jì)流程圖如下:
各函數(shù)塊流程圖:創(chuàng)建函數(shù)creat_stu()
P1->num==0?
N
對(duì)p1新空間賦值,p2=p1,,p2->next=p1
Y
結(jié)束
開(kāi)辟一空間使*p 18、1,*p2指向它
開(kāi)辟一新空間*p1指向它
開(kāi)始
對(duì)*p1指向的空間賦值,取出
P1->num的值
查找函數(shù)search_NO()
開(kāi)始
獲得頭指針head
P=head->next
輸入一要查找的姓名/學(xué)號(hào)給數(shù)組a[15]
a[15]是否等于P->num/p->name?
查找成功調(diào)用打印輸出
結(jié)束
P=P->next
Y
N
插入函數(shù)insert_stu()
開(kāi)始
創(chuàng)建一新空間給*PP
對(duì)*PP空間賦值
P=head->next
PP->sum 19、
將*PP鏈結(jié)接于*P后
是否繼續(xù)插入?
結(jié)束
N
Y
Y
N
開(kāi)始
聲明變量:a=0,b=0。c=0,d=0,e=0
a++
b++
c++
e++
d++
sum>=90?
Sum>=80?
Sum>=70?
Sum>=60?
輸出個(gè)分?jǐn)?shù)段人數(shù),a,b,c,d,e的值
結(jié)束
Y
N
Y
Y
Y
N
N
N
按分?jǐn)?shù)段輸出函數(shù)jieduan()
其他函數(shù)過(guò)于簡(jiǎn)單就不再畫(huà)出其流程圖。
3程序代碼設(shè)計(jì)
3.1 頭文件
先是,為了用到一些系統(tǒng)函數(shù),所以引用一些庫(kù)文件:
#include 20、clude 21、; /*出生年*/
int BirthMonth; /*出生月*/
int BirthDay; /*出生日*/
float score0,score1,score2,score3; /*成績(jī)*/
float sum; /*總分*/
float average; /*平均分*/
struct St1 *next;
}StudentNode;
3.2 源文件,包括自己定義的函數(shù)
void show_menu(); //顯示菜單
void menu(); //執(zhí)行菜單
void creat_stu(); 22、 //建立鏈表
void input_stu(); //輸入學(xué)生信息
void print_stu(); //顯示鏈表中所有記錄信息
void search_NO(); //以學(xué)號(hào)方式查詢(xún)信息
void search_name(); //以姓方式查詢(xún)信息
void arrage_stu(); //學(xué)生成績(jī)排名
void del_stu(); //刪除學(xué)生信息
void revise_stu(); //修改學(xué)生信息
void save(); //保存信息
23、
void jisuan(); //計(jì)算所有學(xué)生的以及各科總分和均分
void search_clas(); //按班級(jí)查詢(xún)顯示學(xué)生信息
void insert_stu(); //插入學(xué)生記錄到表中
void sort(float x[],int n); //對(duì)學(xué)生按總分進(jìn)行從高到底排序
void search_allscore(); //按學(xué)生總成績(jī)查詢(xún),用來(lái)輸出排名信息
void jieduan(); //用來(lái)輸出按平均分階段輸出信息,其中用了按 24、 平均分輸出信息的程序。
void Loadf(); //從文件中讀出所有學(xué)生記錄
4編碼與調(diào)試分析
本程序比較大,調(diào)試過(guò)程中遇到了許多困難,在這里只是列舉少部分.我程序中按學(xué)生總分排名是先將所有學(xué)生的總分放在一個(gè)全局?jǐn)?shù)組中,然后再用冐泡法排序,不過(guò)我先前沒(méi)有將該數(shù)組寫(xiě)入文件,所以當(dāng)退出系統(tǒng)重進(jìn)系統(tǒng)后,從文件中讀入數(shù)據(jù)后,該系統(tǒng)排序功能不好用了.后來(lái)我就將該數(shù)組也保存到文件中去,不過(guò)此時(shí)又遇到了困難,我先是將數(shù)組一下寫(xiě)入文件,后來(lái)出錯(cuò)了.文件中各數(shù)據(jù)完全不匹配了,后來(lái)我采用循環(huán)的方式一個(gè)個(gè)將數(shù)組中的數(shù)據(jù)寫(xiě)入文件中保存起來(lái),就解決了該問(wèn)題! 25、還有就是當(dāng)我編譯時(shí)沒(méi)有錯(cuò)誤,運(yùn)行時(shí)系統(tǒng)就彈出一個(gè)對(duì)話框說(shuō)莫莫數(shù)據(jù)不匹配,后來(lái)我發(fā)現(xiàn)原來(lái)是運(yùn)用輸入函數(shù)scanf時(shí),要求數(shù)據(jù)類(lèi)型與要輸入的數(shù)據(jù)類(lèi)型不同,不過(guò)編譯器不能查出這個(gè)文題,所以以后編程時(shí)一定注意這個(gè)問(wèn)題! 總之, 編碼與調(diào)試分析部分是編程步驟中非常重要的一部分,是一個(gè)程序能投入使用必須執(zhí)行的部分,非常重要!
5使用說(shuō)明及運(yùn)行結(jié)果
5.1 進(jìn)入系統(tǒng)界面如下:
輸入1,進(jìn)行學(xué)生信息的錄入,年份輸入必須保證人的年齡在0-100歲之間,月份不大于31,否則提示重新輸入!如下:
每次結(jié)束一個(gè)操作后,菜單界面就會(huì)自動(dòng)彈出,而且操作完后自動(dòng)保存數(shù)據(jù).輸入2時(shí),進(jìn)行刪除學(xué)生操作 26、!如下:
每次刪除時(shí)會(huì)提示出你要?jiǎng)h除的學(xué)生記錄,并提示刪除完畢保存!
菜單3是顯示文件中已經(jīng)保存所有學(xué)生的記錄,界面如下:
圖片太小,下面還有所有的學(xué)生記錄!
菜單4是按學(xué)生的姓查找學(xué)生記錄,輸入輸出界面如下:
該操作可以找出該姓的所有學(xué)生記錄并顯示出來(lái)!
輸入5將數(shù)據(jù)保存到文件中,操作界面如下:
輸入6就是從文件中讀入數(shù)據(jù)并顯示出來(lái),該界面就不給出了!
輸入7來(lái)計(jì)算所有學(xué)生各科總分和均分,輸入輸出界面如下:
輸入8按班級(jí)查詢(xún)學(xué)生記錄,該功能可以輸出該班級(jí)(學(xué)生學(xué)號(hào)按20101601格式書(shū)寫(xiě)只要輸入前六位就是班級(jí))所有學(xué)生記錄!操作界面如下 27、:
輸入9就是插入學(xué)生記錄,該界面就不顯示了,注意插入學(xué)生記錄是插入到最后一天記錄!
輸入10是按學(xué)號(hào)查詢(xún)學(xué)生信息,只要輸入學(xué)生學(xué)號(hào)就可以找到該學(xué)生,如沒(méi)找到,會(huì)給出錯(cuò)誤提示,該功能每個(gè)步驟都有!,該界面和按班級(jí)查找差不多,此處也不給出了.
輸入11,給學(xué)生排名,并按名次從高到低顯示出來(lái)!界面如下:
輸入12是修改學(xué)生信息,該界面是先提示輸入要修改學(xué)生的學(xué)號(hào),然后顯示要修改的學(xué)生的全部信息確認(rèn)一下,后輸入正確的信息,改后自動(dòng)保存!~該界面也不給出了!
輸入13時(shí)按平均分分段輸出學(xué)生信息,界面如下:
輸入0是退出該系統(tǒng)!
到這里該系統(tǒng)所有 28、功能影示完畢,操作非常簡(jiǎn)單,該系統(tǒng)具備對(duì)學(xué)生管理的全部基礎(chǔ)操作,具有可行性!而且非常具有人性化!歡迎使用!
6課程設(shè)計(jì)心得體會(huì)
本次實(shí)驗(yàn),就是一個(gè)較大的C語(yǔ)言編程。以前,我們編寫(xiě)一些小程序都是一些小函數(shù),不存在一個(gè)特定功能的系統(tǒng)。因此,在編寫(xiě)調(diào)試時(shí)不需要懂得太多的調(diào)試技巧。這次實(shí)驗(yàn)編寫(xiě)的是一個(gè)系統(tǒng),代碼相對(duì)較多,函數(shù)調(diào)用頻繁,對(duì)各個(gè)函數(shù)的兼容性調(diào)試,是很大的一項(xiàng)工程。
整個(gè)系統(tǒng),一開(kāi)始以為很大了對(duì)我們是個(gè)不小的考驗(yàn)。后面自己分析之后,發(fā)現(xiàn)不過(guò)就是一個(gè)一個(gè)的小函數(shù)拼接而成,沒(méi)有什么難的。在對(duì)一個(gè)一個(gè)功能函數(shù),調(diào)試正確后,變開(kāi)始設(shè)計(jì)界面,組裝函數(shù)為系統(tǒng)。在這過(guò)程中確實(shí)遇到了不少的麻煩 29、但大多是些語(yǔ)法錯(cuò)誤,幾經(jīng)調(diào)試也就好了。
系統(tǒng)的完善。在基本功能無(wú)誤后,開(kāi)始想辦法把系統(tǒng)做的更人性化一點(diǎn)。就比如,在每次函數(shù)輸出后,進(jìn)行清屏使每次實(shí)現(xiàn)新功能時(shí),是在獨(dú)自的屏幕下進(jìn)行。對(duì)系統(tǒng)的退出進(jìn)行提示,以免誤動(dòng)作退出系統(tǒng)。將性別輸出的字符型,改成漢子的男/女輸出,這在人性方面無(wú)疑是便于操作的。
要說(shuō)這次實(shí)驗(yàn)最大獲得是什么,就是調(diào)試,調(diào)試,再調(diào)試。完善,完善,在完善。還有就是提高了我對(duì)編程的興趣!希望自己的編程能力越來(lái)越好,將來(lái)可以在激烈的社會(huì)競(jìng)爭(zhēng)中脫穎而出!
7.附錄(程序清單)
#include 30、 31、生月*/
int BirthDay; /*出生日*/
float score0,score1,score2,score3; /*成績(jī)*/
float sum; /*總分*/
float average; /*平均分*/
struct St1 *next;
}StudentNode;
int time()
{
struct tm* ptm;
long ts;
int y,m,d,h,n,s;
ts = time(NULL);
ptm = localtime(&ts);
y 32、= ptm-> tm_year+1900; //年
m = ptm-> tm_mon+1; //月
d = ptm-> tm_mday; //日
h = ptm-> tm_hour; //時(shí)
n = ptm-> tm_min; //分
s = ptm-> tm_sec; //秒
return(y);
}
StudentNode *head=NULL; //全局指針
int n,i=0,c=0,d=0,j=0; 33、 //全局變量 j在函數(shù)中作數(shù)組下標(biāo)或循環(huán)變量 c為總分?jǐn)?shù)組中元素個(gè)數(shù) d為平均分?jǐn)?shù)組元素個(gè)數(shù)
float English=0.0,Math=0.0,C=0.0,Mazhe=0.0,Sum[100],Avr[100]; //全局變量
//自定義函數(shù)//
void show_menu(); //顯示菜單
void menu(); //執(zhí)行菜單
void creat_stu(); //建立鏈表
void input_stu(); //輸入學(xué)生信息
void print_stu() 34、; //顯示鏈表中所有記錄信息
void search_NO(); //以學(xué)號(hào)方式查詢(xún)信息
void search_name(); //以姓方式查詢(xún)信息
void arrage_stu(); //學(xué)生成績(jī)排名
void del_stu(); //刪除學(xué)生信息
void revise_stu(); //修改學(xué)生信息
void save(); //保存信息
void jisuan(); //計(jì)算所有學(xué)生的以及各科總分和均分
void search_clas(); //按班級(jí)查 35、詢(xún)顯示學(xué)生信息
void insert_stu(); //插入學(xué)生記錄到表中
void sort(float x[],int n); //對(duì)學(xué)生按總分進(jìn)行從高到底排序
void search_allscore(); //按學(xué)生總成績(jī)查詢(xún),用來(lái)輸出排名信息
void jieduan(); //用來(lái)輸出按平均分階段輸出信息,其中用了按平均分輸出信息的程序。
void Loadf(); //從文件中讀出所有學(xué)生記錄
void main()
{ printf("********************************* 36、***********************************************");
printf("\n");
printf(" 歡迎來(lái)到學(xué)生管理系統(tǒng) !");
printf("\n");
printf("\n");
printf(" 制作人:陳志52101610");
creat_stu();
menu();
}
//**************************************創(chuàng)建鏈表*************** 37、***********************
void creat_stu()
{
FILE *fp;
long size;
StudentNode *p1,*p2;
head=(StudentNode *)malloc(sizeof(StudentNode));
head->next=NULL;
if((fp=fopen("fname.txt","r"))==NULL)
{
printf("這是新表\n");
return;
}
fseek(fp,0L,2);
size=ftell(fp);
if(!size)
{
pr 38、intf("這是空表\n");
return;
} //開(kāi)始創(chuàng)建鏈表
rewind(fp); //移動(dòng)到文件首
p2=head->next; //找到當(dāng)前位置
while(!feof(fp))
{
p1=(StudentNode *)malloc(sizeof(StudentNode));
fscanf(fp,"%s %s %s %d %d %d %d %f %f %f %f %f %f\n",p1->IDNumber,p1->FamilyName,p1->GivenName,\
&p1->sex,&p1- 39、>BirthYear,&p1->BirthMonth,&p1->BirthDay,&p1->score0,&p1->score1,&p1->score2,&p1->score3,&p1->sum, &p1->average);
p1->next=NULL;
//創(chuàng)建節(jié)點(diǎn)完
if(head->next==NULL)
head->next=p1;
else
p2->next=p1;
p2=p1;
n++;
}
p2->next=NULL;
fclose(fp);
}
//************************** 40、****************執(zhí)行菜單******************************************
void menu()
{
int c;
show_menu();
while(1)
{
scanf("%d",&c);
switch(c)
{
getchar();
case 1:input_stu();break;
case 2:del_stu(); break;
case 3:print_stu();break;
case 4:search_name(); break;
case 5:save() 41、;break;
case 6:Loadf();break;
case 7:jisuan(); break;
case 8:search_clas(); break;
case 9:insert_stu() ; break;
case 10:search_NO(); break;
case 11:arrage_stu();break;
case 12:revise_stu(); break;
case 13:jieduan();break;
case 0:exit(0);
} //執(zhí)行菜單選項(xiàng)
show_menu( 42、);
}
}
//******************************************顯示菜單******************************************
void show_menu()
{
PF("\n");
PF("\n**************************************菜單**************************************\n");
PF("\t\t* 1.輸 入 學(xué) 生 信 息 *\n"); 43、
PF("\t\t* 2.刪 除 學(xué) 生 信 息 *\n");
PF("\t\t* 3.顯示鏈表中所有記錄信息 *\n");
PF("\t\t* 4.按照學(xué)生的姓查找記錄 *\n");
PF("\t\t* 5.將鏈表中記錄保存到文件中 *\n");
PF("\t\t* 6.從文件中讀入記錄 *\n");
PF("\t\t* 44、7.計(jì)算所有學(xué)生以及各科總分和均分 *\n");
PF("\t\t* 8.按班級(jí)查詢(xún)顯示學(xué)生信息 *\n");
PF("\t\t* 9.插入記錄到表中 *\n");
PF("\t\t* 10.按學(xué)號(hào)查詢(xún)學(xué)生信息 *\n");
PF("\t\t* 11.學(xué)生成績(jī)排名 *\n");
PF("\t\t* 12.修改學(xué)生信息 *\n");
PF("\t\t* 13.按平均分階段輸出學(xué)生信息 *\n");
45、
PF("\t\t* 0. 退 出 *\n");
PF("********************************************************************************\n");
PF("\n請(qǐng)選擇\n");
}
//******************************************輸入學(xué)生信息******************************************
void input_stu() //輸入學(xué)生信息
{float 46、a,b; //a,b分別用來(lái)存放該生的各科總成績(jī)和平均成績(jī)
int y,j;
y=time();
n=0;
StudentNode *p1=NULL,*p2=NULL;
p1=( StudentNode *)malloc(sizeof(StudentNode));
PF("\n**********************************輸入學(xué)生信息**********************************\n"); //輸入學(xué)生信息
PF("\t\t輸入學(xué)生學(xué)號(hào):\t");
scanf("%s",p1->IDNumber) 47、; //學(xué)號(hào)
PF("\t\t輸入學(xué)生的姓:\t");
scanf("%s",p1->FamilyName); //姓
PF("\t\t輸入學(xué)生的名:\t");
scanf("%s",p1->GivenName); //名
PF("\t\t輸入學(xué)生性別(0代表女,1代表男):\t");
scanf("%d",&p1->sex); //性別
for(j=0;;j++) //判斷輸入年份是否合理,假設(shè)人年 48、齡在0-100歲之間為正常
{PF("\t\t輸入學(xué)生出生年:\t");
scanf("%d",&p1->BirthYear); //出生年
if((y-p1->BirthYear)>100||(p1->BirthYear>y))
PF("\t\t年份輸入錯(cuò)誤不符合要求,請(qǐng)重新輸入出生年份:\t");
else
break;}
for(j=0;;j++) //判斷輸入月份是否合理
{PF("\t\t輸入學(xué)生出生月:\t");
scanf("%d",&p1->Bir 49、thMonth); //出生月
if(p1->BirthMonth<1||p1->BirthMonth>12)
PF("\t\t月份輸入錯(cuò)誤不符合要求,請(qǐng)重新輸入出生月份:\t");
else
break;}
for(j=0;;j++) // 判斷輸入出生日是否合理
{ PF("\t\t輸入學(xué)生出生日:\t");
scanf("%d",&p1->BirthDay); //出生日
if(p1->BirthDay<1||p1->BirthDay>31)
PF(" 50、\t\t出生日輸入錯(cuò)誤不符合要求,請(qǐng)重新輸入出生日:\t");
else
break;}
PF("\t\t輸入學(xué)生的外語(yǔ)成績(jī):\t");
scanf("%f",&p1->score0); //各科成績(jī)
PF("\t\t輸入學(xué)生的數(shù)學(xué)成績(jī):\t");
scanf("%f",&p1->score1);
PF("\t\t輸入學(xué)生的C語(yǔ)言成績(jī):\t");
scanf("%f",&p1->score2);
PF("\t\t輸入學(xué)生的馬哲成績(jī):\t");
scanf("%f",&p1->score3);
a=p1->score 51、0+p1->score1+p1->score2+p1->score3; //求該生的各科總成績(jī)
b=(a/4); //求該生的平均成績(jī)
p1->sum=a;
p1->average=b;
English=English+p1->score0; //求學(xué)生英語(yǔ)總分
Math=Math+p1->score1; //求學(xué)生數(shù)學(xué)總分
C=C+p1->score2; 52、 //求學(xué)生C語(yǔ)言總分
Mazhe=Mazhe+p1->score3; //求學(xué)生馬哲總分
Sum[c++]=a; //將各學(xué)生的總成績(jī)輸入到一個(gè)全局?jǐn)?shù)組當(dāng)中,方便按成績(jī)排序
Avr[d++]=b; //將個(gè)學(xué)生的平均分輸入到一個(gè)全局?jǐn)?shù)組中存放
n++;
if(head->next==NULL)
{
head=(StudentNode *)malloc(LEN);
head->next 53、=p1;
}
else
{
for(p2=head;p2->next!=NULL;p2=p2->next); /*找到最后的結(jié)點(diǎn),然后
將增加的結(jié)點(diǎn)掛在它上面*/
p2->next=p1;
}
p1->next=NULL;
save();//保存到文件
}
//******************************************顯示鏈表中所有記錄學(xué)生信息********************************* 54、*********
void print_stu() //學(xué)生信息瀏覽
{
StudentNode *p=NULL;
if(head==NULL) //判斷鏈表是否為空
{
PF("文檔中無(wú)記錄!\n");
return;
}
for(p=head->next;p!=NULL;p=p->next) //讀出信息
{
PF("**************************************查看鏈表中所有記錄學(xué)生信息**************************************\n");
PF("\t學(xué)生 55、學(xué)號(hào):\t%s\n",p->IDNumber);
PF("\t學(xué)生姓:\t%s\n",p->FamilyName);
PF("\t學(xué)生名:\t%s\n",p->GivenName);
PF("\t學(xué)生性別:\t%d\n",p->sex);
PF("\t學(xué)生出生年:\t%d\n",p->BirthYear);
PF("\t學(xué)生出生月:\t%d\n",p->BirthMonth);
PF("\t學(xué)生出生日:\t%d\n",p->BirthDay);
PF("\t學(xué)生英語(yǔ)成績(jī):\t%f\n",p->score0);
PF("\t學(xué)生數(shù)學(xué)成績(jī):\t%f\ 56、n",p->score1);
PF("\t學(xué)生C語(yǔ)言成績(jī):\t%f\n",p->score2);
PF("\t學(xué)生馬哲成績(jī):\t%f\n",p->score3);
PF("\t學(xué)生總成績(jī):\t%f\n",p->sum);
PF("\t學(xué)生平均成績(jī):\t%f\n",p->average);
PF("\n");
} //輸出信息
PF("\t各個(gè)學(xué)生總分分別為:");
for(n=0;n 57、);
for(n=0;n 58、return;
}
PF("輸入學(xué)生姓:");
scanf("%s", FamilyName);
for(p=head->next;p!=NULL;p=p->next) //讀出信息
{
if(!strcmp(p->FamilyName, FamilyName))
{PF("\t\t您查找的學(xué)生有:\n");
PF("\n");
PF("\t\t學(xué)生學(xué)號(hào):\t%s\n",p->IDNumber);
PF("\t\t學(xué)生姓:\t%s\n",p->FamilyName);
PF("\t\t學(xué)生名:\t%s\n",p->Give 59、nName);
PF("\t\t學(xué)生性別:\t%d\n",p->sex);
PF("\t\t學(xué)生出生年:\t%d\n",p->BirthYear);
PF("\t\t學(xué)生出生月:\t%d\n",p->BirthMonth);
PF("\t\t學(xué)生出生日:\t%d\n",p->BirthDay);
PF("\t\t學(xué)生英語(yǔ)成績(jī):\t%f\n",p->score0);
PF("\t\t學(xué)生數(shù)學(xué)成績(jī):\t%f\n",p->score1);
PF("\t\t學(xué)生C語(yǔ)言成績(jī):\t%f\n",p->score2);
PF("\t\t學(xué)生馬哲成績(jī):\t%f\n 60、",p->score3);
PF("\t\t學(xué)生總成績(jī):\t%f\n",p->sum);
PF("\t\t學(xué)生平均成績(jī):\t%f\n",p->average);
PF("\n");
i=1;}
} //輸出信息
if(i!=1)
{PF("無(wú)該姓氏學(xué)生信息!請(qǐng)查證:"); } //沒(méi)找到信息時(shí)的處理
}
//******************************************按照學(xué)生學(xué)號(hào)信息查找***** 61、*************************************
void search_NO() //學(xué)生學(xué)號(hào)信息查找
{int i=0;
StudentNode *p=NULL;
char IDNumber[20];
if(head==NULL) //判斷鏈表是否為空
{
PF("文檔中無(wú)記錄!\n");
return;
}
PF("請(qǐng)輸入學(xué)生學(xué)號(hào):");
scanf("%s",IDNumber);
for(p=head->next;p!=NULL;p=p->next) //讀出信息
{
if(!s 62、trcmp(p->IDNumber,IDNumber))
{PF("\t\t您查找的學(xué)生是:\n");
PF("\n");
PF("\t\t學(xué)生學(xué)號(hào):\t%s\n",p->IDNumber);
PF("\t\t學(xué)生姓:\t%s\n",p->FamilyName);
PF("\t\t學(xué)生名:\t%s\n",p->GivenName);
PF("\t\t學(xué)生性別:\t%d\n",p->sex);
PF("\t\t學(xué)生出生年:\t%d\n",p->BirthYear);
PF("\t\t學(xué)生出生月:\t%d\n",p->BirthMonth);
63、
PF("\t\t學(xué)生出生日:\t%d\n",p->BirthDay);
PF("\t\t學(xué)生英語(yǔ)成績(jī):\t%f\n",p->score0);
PF("\t\t學(xué)生數(shù)學(xué)成績(jī):\t%f\n",p->score1);
PF("\t\t學(xué)生C語(yǔ)言成績(jī):\t%f\n",p->score2);
PF("\t\t學(xué)生馬哲成績(jī):\t%f\n",p->score3);
PF("\t\t學(xué)生總成績(jī):\t%f\n",p->sum);
PF("\t\t學(xué)生平均成績(jī):\t%f\n",p->average);
PF("\n");
i=1 64、;}
} //輸出信息
if(!i)
{PF("無(wú)該生信息!請(qǐng)查證:"); } //沒(méi)找到信息時(shí)的處理
}
//******************************************按照學(xué)生班級(jí)統(tǒng)計(jì)并輸出總成績(jī)******************************************
void search_clas() //學(xué)生學(xué)號(hào)信息查找
{int i=0,j=0;
StudentNode *p=NULL;
char a[6],b 65、[6];
if(head==NULL) //判斷鏈表是否為空
{
PF("文檔中無(wú)記錄!\n");
return;
}
PF("請(qǐng)輸入學(xué)生班級(jí):");
scanf("%s",a);
for(p=head->next;p!=NULL;p=p->next) //讀出信息
{
for(j=0;j<6;j++)
b[j]=p->IDNumber[j];
if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3]&&a[4]==b[4]&&a[5]==b[5])
{PF("\ 66、t\t您查找的班級(jí)學(xué)生有:\n");
PF("\n");
PF("\t\t學(xué)生學(xué)號(hào):\t%s\n",p->IDNumber);
PF("\t\t學(xué)生姓:\t%s\n",p->FamilyName);
PF("\t\t學(xué)生名:\t%s\n",p->GivenName);
PF("\t\t學(xué)生性別:\t%d\n",p->sex);
PF("\t\t學(xué)生出生年:\t%d\n",p->BirthYear);
PF("\t\t學(xué)生出生月:\t%d\n",p->BirthMonth);
PF("\t\t學(xué)生出生日:\t%d\n",p->BirthDay);
PF("\t\t學(xué)生英語(yǔ)成績(jī):\t%f\n",p->score0);
PF("\t\t學(xué)生數(shù)學(xué)成績(jī):\t%f\n",p->score1);
PF("\t\t學(xué)生C語(yǔ)言成績(jī):\t%f\n",p->score2);
PF("\t\t學(xué)生馬哲成績(jī):\t%f\n",p->score3);
PF("\t\t學(xué)生總成績(jī):\t%f\n",p->sum);
PF("\t\t學(xué)
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧汽貿(mào)的戰(zhàn)略規(guī)劃課件
- 農(nóng)藥產(chǎn)品化學(xué)登記評(píng)審中存在的問(wèn)題修改
- 職業(yè)適應(yīng)與發(fā)展
- 中國(guó)傳統(tǒng)思想和領(lǐng)導(dǎo)藝術(shù)
- 學(xué)習(xí)英語(yǔ)最好的方法課件
- 團(tuán)隊(duì)建設(shè)與管理教材(PPT 42頁(yè))
- 商務(wù)談判的準(zhǔn)備培訓(xùn)課件
- 單元吃奶和豆及其制品
- 氣管切開(kāi)護(hù)理
- 七上281有理數(shù)的乘法1
- 素質(zhì)拓展學(xué)分重要性
- 地產(chǎn)項(xiàng)目策劃廣告創(chuàng)意
- 華通檸檬渠道推廣活動(dòng)案
- 酸堿平衡紊亂的判讀
- 氣管插管的困難評(píng)估課件