[計算機軟件及應用]學生管理系統(tǒng)與車輛管理系統(tǒng) 課程設計報告

上傳人:仙*** 文檔編號:27753512 上傳時間:2021-08-20 格式:DOC 頁數(shù):81 大小:734KB
收藏 版權(quán)申訴 舉報 下載
[計算機軟件及應用]學生管理系統(tǒng)與車輛管理系統(tǒng) 課程設計報告_第1頁
第1頁 / 共81頁
[計算機軟件及應用]學生管理系統(tǒng)與車輛管理系統(tǒng) 課程設計報告_第2頁
第2頁 / 共81頁
[計算機軟件及應用]學生管理系統(tǒng)與車輛管理系統(tǒng) 課程設計報告_第3頁
第3頁 / 共81頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《[計算機軟件及應用]學生管理系統(tǒng)與車輛管理系統(tǒng) 課程設計報告》由會員分享,可在線閱讀,更多相關《[計算機軟件及應用]學生管理系統(tǒng)與車輛管理系統(tǒng) 課程設計報告(81頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 通信工程學院課程設計報告 姓名:陳志 學號:52101610 專業(yè):通信工程 班級:10級16班 (車輛管理系統(tǒng)課程設計實驗報告) 目錄 1. 課程設計任務……………………………………………………2 2.設計結(jié)構(gòu)圖與流程圖……………………………………………..2 3.程序代碼設計…………

2、…………………………………………..5 1.1 頭文件……………………………………………………..5 1.2 源文件……………………………………………………...5 4.編碼與調(diào)試分析……………………………………………………5 5.使用說明及運行結(jié)果………………………………………………6 6.課程設計心得體會………………………………………………….7 7.附錄(程序清單)……………………………………………………...8 1.課程設計任務 1.1實驗目的 使用C語言實現(xiàn)交通車輛違章管理系統(tǒng)的違章信息錄入、違章情況查詢、針對每臺車輛統(tǒng)計罰款總金額

3、等基本操作。進一步鞏固C語言的學習,培養(yǎng)一定的綜合編程能力。 1.2需要處理的基礎數(shù)據(jù) 設違章種類分為違章停車、闖紅燈、超速等三種。設違章停車每次罰款100元、闖紅燈每次罰款200元、超速每次罰款500元。 需處理的車輛及違章基本信息包括:車牌號、車主姓名、違章停車次數(shù)、闖紅燈次數(shù)、超速次數(shù)。 1.3系統(tǒng)功能 1.車輛及違章信息的錄入。 2.基于車牌號查詢每臺車輛的違章情況。 3.基于車牌號統(tǒng)計每臺車輛的罰款總金額。 2.設計結(jié)構(gòu)圖與流程圖 2.1設計結(jié)構(gòu)圖 程序設計圖分幾個小模塊,下面是程序的簡易結(jié)構(gòu)圖 輸入0結(jié)束輸入并推出系統(tǒng),輸入1繼續(xù) !

4、 車輛管理系統(tǒng) 輸入車輛信息 輸入車牌號查詢其違章情況 輸入車牌號統(tǒng)計其罰款總金額 2.2程序設計流程圖 開始 輸入車輛信息 輸入為1嗎? 是 輸入車牌號查詢其違章情況 輸入為1碼? 輸入車牌號統(tǒng)計該臺車輛的罰款總金額 否 是 否 輸入為1碼? 結(jié)束 是 否 3.程序代碼設計 3.1 頭文件 為了使用系統(tǒng)中一些函數(shù),引入一些系統(tǒng)函數(shù)的頭文件#include #include 定義一個車輛結(jié)構(gòu)體,用來記錄車輛的

5、相關信息: typedef struct Pe { char vno[8]; /*車牌號*/ char name[15]; /*車主姓名*/ int times1; /*違章停車次數(shù)*/ int times2; /*闖紅燈次數(shù)*/ int times3; /*超速次數(shù)*/ }PECCANCY; 之后就是編寫的程序,該程序為未定義其他的函數(shù),所有功能都是在main函數(shù)中實現(xiàn)! 3.2 源文件 該系統(tǒng)只有一個mian函數(shù),無定義函數(shù)和自定義函數(shù). 4.編碼與調(diào)試分析 1).剛設計時,本來設計了很多的小函數(shù)來實現(xiàn)各個分功能,不過遇

6、到了困難,就是各個分函數(shù)不能共享數(shù)據(jù),于是就改成在一個主函數(shù)實現(xiàn)所有的功能. 2).還有每次用戶輸入完一項功能,詢問是否繼續(xù),如果不繼續(xù),就自動進入下一個功能. 5. 使用說明及運行結(jié)果 5.1 進入系統(tǒng)界面提示輸入車輛信息,如下: 5.2 之后按0結(jié)束輸入,或按1繼續(xù)錄入信息! 按0進入查詢車輛信息界面.如下: 5.3 同樣根據(jù)提示繼續(xù)查詢按1,否則按0結(jié)束查詢,輸入1進入根據(jù)車牌號查詢該車總罰款金額,如下: 5.4 按1繼續(xù)查詢其他車輛的總罰款金額,按0退出系統(tǒng)! 6. 課程設計心得體會 通過自己編寫車輛違章管理系

7、統(tǒng)這一程序,讓我學會了很多。以前學C語言、C++時,自己只是會運用所學的知識編寫一些非常簡單的程序,從沒有編寫過較大的程序,更別說編寫一車輛管理系統(tǒng)了,不過這次通過自己的努力以及老師的精心指導,成功的做出了車輛管理系統(tǒng),雖然該系統(tǒng)功能較少,但畢竟是我自己通過所學的知識做出的產(chǎn)品,看著一個個數(shù)據(jù)的輸入,之后得到了自己想要的結(jié)果,一種成就感從心里油然而生,同時讓我發(fā)現(xiàn)了編程中更大的樂趣,本來我對編程就挺感興趣,通過此次實踐,讓我對編程越來越感興趣了,當然編程過程中也遇到了一些困難,通過自己的努力以及老師的指導與幫助,一個個困難都迎刃而解了,讓我學會很多東西,同時讓我明白了編程要細心,否則調(diào)試程序時

8、會帶來沒必要的困難,總而言之,此次編程設計讓我受益匪淺?。。?,希望我的編程能力越來越高,將來能在激烈的社會競爭中脫穎而出 ! 7.附錄(程序清單) #include #include #define p 1000 typedef struct Pe { char vno[8]; /*車牌號*/ char name[15]; /*車主姓名*/ int times1; /*違章停車次數(shù)*/ int times2; /*闖紅燈次數(shù)*/ int times3; /*超速次數(shù)*/ }PECCANCY

9、; void main() { int i,e,a,c,d,m=0,n=0,s; char k[8],j[8]; PECCANCY b[p]; cout<<"輸入車輛信息"<>b[i].vno; cout<<"輸入車主姓名:"<>b[i].name; cout<<"輸入違章停車次數(shù):"<>b[i].times1; cout<<"輸入闖紅燈次數(shù):"<

10、 cin>>b[i].times2; cout<<"輸入超速次數(shù):"<>b[i].times3; cout<<"輸入0結(jié)束錄入,輸入1繼續(xù)錄入車輛信息"<>a; if(a==0) break; } cout<>j;

11、 for(i=0;i

12、<>c; if(c==0) break; } cout<>k; for(i=0;i

13、s3)*500; cout<<"車牌號為"<>d; if(d==0) break; } } (學生管理系統(tǒng)課程設計報告) 目錄 1.課程設計任務……………………………………………………….13 2

14、設計結(jié)構(gòu)圖及流程圖………………………………………………14 3程序代碼設計……………………………………………………….20 3.1頭文件………………………………………………………..20 3.2源文件………………………………………………………..21 4編碼與調(diào)試分析…………………………………………………….22 5使用說明及運行結(jié)果……………………………………………….22 6課程設計心得體會………………………………………………….29 7附錄(程序清單)……………………………………………………..30 1.課程設計任務 1.1實

15、驗目的 使用標準C或C++實現(xiàn)學生成績管理系統(tǒng)的錄入、查詢、刪除、統(tǒng)計等基本操作。進一步鞏固C語言的學習,以提高學生對開發(fā)環(huán)境的進一步認識和綜合編程能力。 1.2需要處理的基礎數(shù)據(jù) 學生基本信息:學號(例如2003級12班6號寫作20031206)、姓、名、性別、出生年月日、課程名稱(外語SCORE[0]、高數(shù)SCORE[1]、C語言SCORE[2]、馬哲SCORE[3])、考試成績等。 1.3系統(tǒng)功能 1.學生基本情況錄入。 2.允許對已經(jīng)錄入的數(shù)據(jù)進行顯示。 3.允許進行數(shù)據(jù)的插入。 4.刪除基本數(shù)據(jù)的相關信息。 5.基于姓名的查詢。如:姓張的所有同學。 6. 對性別、

16、出生年月日的合理性進行判斷(如0代表“女”,1代表“男”,輸入其他值非法,年齡不能為負,月份不能大于13等) 7.基于各種基本數(shù)據(jù)的統(tǒng)計計算。如: ①統(tǒng)計每個學生各門功課的平均成績,并按平均成績從高到低的次序排名輸出每個學生各門功課的綜合成績和平均成績(名次、學號、姓名、平均成績、各門功課的考試成績)。 ②列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格學生清單(學號、姓名、不及格的課程和成績)。 ③統(tǒng)計并輸出各門功課的平均成績和總平均成績。 ④按班級統(tǒng)計并輸出總成績。(需要對學號進行解析) 2.設計結(jié)構(gòu)圖及流程圖

17、 2.1程序設計結(jié)構(gòu)圖如下: 學生課程管理系統(tǒng) 輸入學生信息 刪除學生信息 插入學生信息 修改學生信息 學生成績排名 輸出學生信息 學生成績計算 保存學生信息 學生成績排名 顯示學生信息 讀入學生信息 查詢學生信息 按學號查詢 按學生姓查找 按學生班級查找 2.2 程序設計流程圖如下: 各函數(shù)塊流程圖:創(chuàng)建函數(shù)creat_stu() P1->num==0? N 對p1新空間賦值,p2=p1,,p2->next=p1 Y 結(jié)束 開辟一空間使*p

18、1,*p2指向它 開辟一新空間*p1指向它 開始 對*p1指向的空間賦值,取出 P1->num的值 查找函數(shù)search_NO() 開始 獲得頭指針head P=head->next 輸入一要查找的姓名/學號給數(shù)組a[15] a[15]是否等于P->num/p->name? 查找成功調(diào)用打印輸出 結(jié)束 P=P->next Y N 插入函數(shù)insert_stu() 開始 創(chuàng)建一新空間給*PP 對*PP空間賦值 P=head->next PP->sumsum? P=P->next

19、 將*PP鏈結(jié)接于*P后 是否繼續(xù)插入? 結(jié)束 N Y Y N 開始 聲明變量:a=0,b=0。c=0,d=0,e=0 a++ b++ c++ e++ d++ sum>=90? Sum>=80? Sum>=70? Sum>=60? 輸出個分數(shù)段人數(shù),a,b,c,d,e的值 結(jié)束 Y N Y Y Y N N N 按分數(shù)段輸出函數(shù)jieduan() 其他函數(shù)過于簡單就不再畫出其流程圖。 3程序代碼設計 3.1 頭文件 先是,為了用到一些系統(tǒng)函數(shù),所以引用一些庫文件: #include #in

20、clude #include #define PF printf #include "time.h " 下一個就是存放學生的基本信息,包括指向下一個節(jié)點的指針. 定義了一個學生結(jié)構(gòu)體用來存放學生基本信息: typedef struct St1 { char IDNumber[16];/*學號*/ char FamilyName[16]; /*姓*/ char GivenName[16]; /*名*/ int sex; /*性別(0代表"女",1代表"男")*/ int BirthYear

21、; /*出生年*/ int BirthMonth; /*出生月*/ int BirthDay; /*出生日*/ float score0,score1,score2,score3; /*成績*/ float sum; /*總分*/ float average; /*平均分*/ struct St1 *next; }StudentNode; 3.2 源文件,包括自己定義的函數(shù) void show_menu(); //顯示菜單 void menu(); //執(zhí)行菜單 void creat_stu();

22、 //建立鏈表 void input_stu(); //輸入學生信息 void print_stu(); //顯示鏈表中所有記錄信息 void search_NO(); //以學號方式查詢信息 void search_name(); //以姓方式查詢信息 void arrage_stu(); //學生成績排名 void del_stu(); //刪除學生信息 void revise_stu(); //修改學生信息 void save(); //保存信息

23、 void jisuan(); //計算所有學生的以及各科總分和均分 void search_clas(); //按班級查詢顯示學生信息 void insert_stu(); //插入學生記錄到表中 void sort(float x[],int n); //對學生按總分進行從高到底排序 void search_allscore(); //按學生總成績查詢,用來輸出排名信息 void jieduan(); //用來輸出按平均分階段輸出信息,其中用了按

24、 平均分輸出信息的程序。 void Loadf(); //從文件中讀出所有學生記錄 4編碼與調(diào)試分析 本程序比較大,調(diào)試過程中遇到了許多困難,在這里只是列舉少部分.我程序中按學生總分排名是先將所有學生的總分放在一個全局數(shù)組中,然后再用冐泡法排序,不過我先前沒有將該數(shù)組寫入文件,所以當退出系統(tǒng)重進系統(tǒng)后,從文件中讀入數(shù)據(jù)后,該系統(tǒng)排序功能不好用了.后來我就將該數(shù)組也保存到文件中去,不過此時又遇到了困難,我先是將數(shù)組一下寫入文件,后來出錯了.文件中各數(shù)據(jù)完全不匹配了,后來我采用循環(huán)的方式一個個將數(shù)組中的數(shù)據(jù)寫入文件中保存起來,就解決了該問題!

25、還有就是當我編譯時沒有錯誤,運行時系統(tǒng)就彈出一個對話框說莫莫數(shù)據(jù)不匹配,后來我發(fā)現(xiàn)原來是運用輸入函數(shù)scanf時,要求數(shù)據(jù)類型與要輸入的數(shù)據(jù)類型不同,不過編譯器不能查出這個文題,所以以后編程時一定注意這個問題! 總之, 編碼與調(diào)試分析部分是編程步驟中非常重要的一部分,是一個程序能投入使用必須執(zhí)行的部分,非常重要! 5使用說明及運行結(jié)果 5.1 進入系統(tǒng)界面如下: 輸入1,進行學生信息的錄入,年份輸入必須保證人的年齡在0-100歲之間,月份不大于31,否則提示重新輸入!如下: 每次結(jié)束一個操作后,菜單界面就會自動彈出,而且操作完后自動保存數(shù)據(jù).輸入2時,進行刪除學生操作

26、!如下: 每次刪除時會提示出你要刪除的學生記錄,并提示刪除完畢保存! 菜單3是顯示文件中已經(jīng)保存所有學生的記錄,界面如下: 圖片太小,下面還有所有的學生記錄! 菜單4是按學生的姓查找學生記錄,輸入輸出界面如下: 該操作可以找出該姓的所有學生記錄并顯示出來! 輸入5將數(shù)據(jù)保存到文件中,操作界面如下: 輸入6就是從文件中讀入數(shù)據(jù)并顯示出來,該界面就不給出了! 輸入7來計算所有學生各科總分和均分,輸入輸出界面如下: 輸入8按班級查詢學生記錄,該功能可以輸出該班級(學生學號按20101601格式書寫只要輸入前六位就是班級)所有學生記錄!操作界面如下

27、: 輸入9就是插入學生記錄,該界面就不顯示了,注意插入學生記錄是插入到最后一天記錄! 輸入10是按學號查詢學生信息,只要輸入學生學號就可以找到該學生,如沒找到,會給出錯誤提示,該功能每個步驟都有!,該界面和按班級查找差不多,此處也不給出了. 輸入11,給學生排名,并按名次從高到低顯示出來!界面如下: 輸入12是修改學生信息,該界面是先提示輸入要修改學生的學號,然后顯示要修改的學生的全部信息確認一下,后輸入正確的信息,改后自動保存!~該界面也不給出了! 輸入13時按平均分分段輸出學生信息,界面如下: 輸入0是退出該系統(tǒng)! 到這里該系統(tǒng)所有

28、功能影示完畢,操作非常簡單,該系統(tǒng)具備對學生管理的全部基礎操作,具有可行性!而且非常具有人性化!歡迎使用! 6課程設計心得體會 本次實驗,就是一個較大的C語言編程。以前,我們編寫一些小程序都是一些小函數(shù),不存在一個特定功能的系統(tǒng)。因此,在編寫調(diào)試時不需要懂得太多的調(diào)試技巧。這次實驗編寫的是一個系統(tǒng),代碼相對較多,函數(shù)調(diào)用頻繁,對各個函數(shù)的兼容性調(diào)試,是很大的一項工程。 整個系統(tǒng),一開始以為很大了對我們是個不小的考驗。后面自己分析之后,發(fā)現(xiàn)不過就是一個一個的小函數(shù)拼接而成,沒有什么難的。在對一個一個功能函數(shù),調(diào)試正確后,變開始設計界面,組裝函數(shù)為系統(tǒng)。在這過程中確實遇到了不少的麻煩

29、但大多是些語法錯誤,幾經(jīng)調(diào)試也就好了。 系統(tǒng)的完善。在基本功能無誤后,開始想辦法把系統(tǒng)做的更人性化一點。就比如,在每次函數(shù)輸出后,進行清屏使每次實現(xiàn)新功能時,是在獨自的屏幕下進行。對系統(tǒng)的退出進行提示,以免誤動作退出系統(tǒng)。將性別輸出的字符型,改成漢子的男/女輸出,這在人性方面無疑是便于操作的。 要說這次實驗最大獲得是什么,就是調(diào)試,調(diào)試,再調(diào)試。完善,完善,在完善。還有就是提高了我對編程的興趣!希望自己的編程能力越來越好,將來可以在激烈的社會競爭中脫穎而出! 7.附錄(程序清單) #include #include #include

30、 #define PF printf #include "time.h " #define LEN sizeof(struct St1) //定義結(jié)構(gòu)體// typedef struct St1 { char IDNumber[16];/*學號*/ char FamilyName[16]; /*姓*/ char GivenName[16]; /*名*/ int sex; /*性別(0代表"女",1代表"男")*/ int BirthYear; /*出生年*/ int BirthMonth; /*出

31、生月*/ int BirthDay; /*出生日*/ float score0,score1,score2,score3; /*成績*/ 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; //時 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ù)組下標或循環(huán)變量 c為總分數(shù)組中元素個數(shù) d為平均分數(shù)組元素個數(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(); //輸入學生信息 void print_stu()

34、; //顯示鏈表中所有記錄信息 void search_NO(); //以學號方式查詢信息 void search_name(); //以姓方式查詢信息 void arrage_stu(); //學生成績排名 void del_stu(); //刪除學生信息 void revise_stu(); //修改學生信息 void save(); //保存信息 void jisuan(); //計算所有學生的以及各科總分和均分 void search_clas(); //按班級查

35、詢顯示學生信息 void insert_stu(); //插入學生記錄到表中 void sort(float x[],int n); //對學生按總分進行從高到底排序 void search_allscore(); //按學生總成績查詢,用來輸出排名信息 void jieduan(); //用來輸出按平均分階段輸出信息,其中用了按平均分輸出信息的程序。 void Loadf(); //從文件中讀出所有學生記錄 void main() { printf("*********************************

36、***********************************************"); printf("\n"); printf(" 歡迎來到學生管理系統(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; } //開始創(chuàng)建鏈表 rewind(fp); //移動到文件首 p2=head->next; //找到當前位置 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é)點完 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í)行菜單選項 show_menu(

42、); } } //******************************************顯示菜單****************************************** void show_menu() { PF("\n"); PF("\n**************************************菜單**************************************\n"); PF("\t\t* 1.輸 入 學 生 信 息 *\n");

43、 PF("\t\t* 2.刪 除 學 生 信 息 *\n"); PF("\t\t* 3.顯示鏈表中所有記錄信息 *\n"); PF("\t\t* 4.按照學生的姓查找記錄 *\n"); PF("\t\t* 5.將鏈表中記錄保存到文件中 *\n"); PF("\t\t* 6.從文件中讀入記錄 *\n"); PF("\t\t*

44、7.計算所有學生以及各科總分和均分 *\n"); PF("\t\t* 8.按班級查詢顯示學生信息 *\n"); PF("\t\t* 9.插入記錄到表中 *\n"); PF("\t\t* 10.按學號查詢學生信息 *\n"); PF("\t\t* 11.學生成績排名 *\n"); PF("\t\t* 12.修改學生信息 *\n"); PF("\t\t* 13.按平均分階段輸出學生信息 *\n");

45、 PF("\t\t* 0. 退 出 *\n"); PF("********************************************************************************\n"); PF("\n請選擇\n"); } //******************************************輸入學生信息****************************************** void input_stu() //輸入學生信息 {float

46、a,b; //a,b分別用來存放該生的各科總成績和平均成績 int y,j; y=time(); n=0; StudentNode *p1=NULL,*p2=NULL; p1=( StudentNode *)malloc(sizeof(StudentNode)); PF("\n**********************************輸入學生信息**********************************\n"); //輸入學生信息 PF("\t\t輸入學生學號:\t"); scanf("%s",p1->IDNumber)

47、; //學號 PF("\t\t輸入學生的姓:\t"); scanf("%s",p1->FamilyName); //姓 PF("\t\t輸入學生的名:\t"); scanf("%s",p1->GivenName); //名 PF("\t\t輸入學生性別(0代表女,1代表男):\t"); scanf("%d",&p1->sex); //性別 for(j=0;;j++) //判斷輸入年份是否合理,假設人年

48、齡在0-100歲之間為正常 {PF("\t\t輸入學生出生年:\t"); scanf("%d",&p1->BirthYear); //出生年 if((y-p1->BirthYear)>100||(p1->BirthYear>y)) PF("\t\t年份輸入錯誤不符合要求,請重新輸入出生年份:\t"); else break;} for(j=0;;j++) //判斷輸入月份是否合理 {PF("\t\t輸入學生出生月:\t"); scanf("%d",&p1->Bir

49、thMonth); //出生月 if(p1->BirthMonth<1||p1->BirthMonth>12) PF("\t\t月份輸入錯誤不符合要求,請重新輸入出生月份:\t"); else break;} for(j=0;;j++) // 判斷輸入出生日是否合理 { PF("\t\t輸入學生出生日:\t"); scanf("%d",&p1->BirthDay); //出生日 if(p1->BirthDay<1||p1->BirthDay>31) PF("

50、\t\t出生日輸入錯誤不符合要求,請重新輸入出生日:\t"); else break;} PF("\t\t輸入學生的外語成績:\t"); scanf("%f",&p1->score0); //各科成績 PF("\t\t輸入學生的數(shù)學成績:\t"); scanf("%f",&p1->score1); PF("\t\t輸入學生的C語言成績:\t"); scanf("%f",&p1->score2); PF("\t\t輸入學生的馬哲成績:\t"); scanf("%f",&p1->score3); a=p1->score

51、0+p1->score1+p1->score2+p1->score3; //求該生的各科總成績 b=(a/4); //求該生的平均成績 p1->sum=a; p1->average=b; English=English+p1->score0; //求學生英語總分 Math=Math+p1->score1; //求學生數(shù)學總分 C=C+p1->score2;

52、 //求學生C語言總分 Mazhe=Mazhe+p1->score3; //求學生馬哲總分 Sum[c++]=a; //將各學生的總成績輸入到一個全局數(shù)組當中,方便按成績排序 Avr[d++]=b; //將個學生的平均分輸入到一個全局數(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é)點,然后 將增加的結(jié)點掛在它上面*/ p2->next=p1; } p1->next=NULL; save();//保存到文件 } //******************************************顯示鏈表中所有記錄學生信息*********************************

54、********* void print_stu() //學生信息瀏覽 { StudentNode *p=NULL; if(head==NULL) //判斷鏈表是否為空 { PF("文檔中無記錄!\n"); return; } for(p=head->next;p!=NULL;p=p->next) //讀出信息 { PF("**************************************查看鏈表中所有記錄學生信息**************************************\n"); PF("\t學生

55、學號:\t%s\n",p->IDNumber); PF("\t學生姓:\t%s\n",p->FamilyName); PF("\t學生名:\t%s\n",p->GivenName); PF("\t學生性別:\t%d\n",p->sex); PF("\t學生出生年:\t%d\n",p->BirthYear); PF("\t學生出生月:\t%d\n",p->BirthMonth); PF("\t學生出生日:\t%d\n",p->BirthDay); PF("\t學生英語成績:\t%f\n",p->score0); PF("\t學生數(shù)學成績:\t%f\

56、n",p->score1); PF("\t學生C語言成績:\t%f\n",p->score2); PF("\t學生馬哲成績:\t%f\n",p->score3); PF("\t學生總成績:\t%f\n",p->sum); PF("\t學生平均成績:\t%f\n",p->average); PF("\n"); } //輸出信息 PF("\t各個學生總分分別為:"); for(n=0;n

57、); for(n=0;n

58、return; } PF("輸入學生姓:"); scanf("%s", FamilyName); for(p=head->next;p!=NULL;p=p->next) //讀出信息 { if(!strcmp(p->FamilyName, FamilyName)) {PF("\t\t您查找的學生有:\n"); PF("\n"); PF("\t\t學生學號:\t%s\n",p->IDNumber); PF("\t\t學生姓:\t%s\n",p->FamilyName); PF("\t\t學生名:\t%s\n",p->Give

59、nName); PF("\t\t學生性別:\t%d\n",p->sex); PF("\t\t學生出生年:\t%d\n",p->BirthYear); PF("\t\t學生出生月:\t%d\n",p->BirthMonth); PF("\t\t學生出生日:\t%d\n",p->BirthDay); PF("\t\t學生英語成績:\t%f\n",p->score0); PF("\t\t學生數(shù)學成績:\t%f\n",p->score1); PF("\t\t學生C語言成績:\t%f\n",p->score2); PF("\t\t學生馬哲成績:\t%f\n

60、",p->score3); PF("\t\t學生總成績:\t%f\n",p->sum); PF("\t\t學生平均成績:\t%f\n",p->average); PF("\n"); i=1;} } //輸出信息 if(i!=1) {PF("無該姓氏學生信息!請查證:"); } //沒找到信息時的處理 } //******************************************按照學生學號信息查找*****

61、************************************* void search_NO() //學生學號信息查找 {int i=0; StudentNode *p=NULL; char IDNumber[20]; if(head==NULL) //判斷鏈表是否為空 { PF("文檔中無記錄!\n"); return; } PF("請輸入學生學號:"); scanf("%s",IDNumber); for(p=head->next;p!=NULL;p=p->next) //讀出信息 { if(!s

62、trcmp(p->IDNumber,IDNumber)) {PF("\t\t您查找的學生是:\n"); PF("\n"); PF("\t\t學生學號:\t%s\n",p->IDNumber); PF("\t\t學生姓:\t%s\n",p->FamilyName); PF("\t\t學生名:\t%s\n",p->GivenName); PF("\t\t學生性別:\t%d\n",p->sex); PF("\t\t學生出生年:\t%d\n",p->BirthYear); PF("\t\t學生出生月:\t%d\n",p->BirthMonth);

63、 PF("\t\t學生出生日:\t%d\n",p->BirthDay); PF("\t\t學生英語成績:\t%f\n",p->score0); PF("\t\t學生數(shù)學成績:\t%f\n",p->score1); PF("\t\t學生C語言成績:\t%f\n",p->score2); PF("\t\t學生馬哲成績:\t%f\n",p->score3); PF("\t\t學生總成績:\t%f\n",p->sum); PF("\t\t學生平均成績:\t%f\n",p->average); PF("\n"); i=1

64、;} } //輸出信息 if(!i) {PF("無該生信息!請查證:"); } //沒找到信息時的處理 } //******************************************按照學生班級統(tǒng)計并輸出總成績****************************************** void search_clas() //學生學號信息查找 {int i=0,j=0; StudentNode *p=NULL; char a[6],b

65、[6]; if(head==NULL) //判斷鏈表是否為空 { PF("文檔中無記錄!\n"); return; } PF("請輸入學生班級:"); 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您查找的班級學生有:\n"); PF("\n"); PF("\t\t學生學號:\t%s\n",p->IDNumber); PF("\t\t學生姓:\t%s\n",p->FamilyName); PF("\t\t學生名:\t%s\n",p->GivenName); PF("\t\t學生性別:\t%d\n",p->sex); PF("\t\t學生出生年:\t%d\n",p->BirthYear); PF("\t\t學生出生月:\t%d\n",p->BirthMonth); PF("\t\t學生出生日:\t%d\n",p->BirthDay); PF("\t\t學生英語成績:\t%f\n",p->score0); PF("\t\t學生數(shù)學成績:\t%f\n",p->score1); PF("\t\t學生C語言成績:\t%f\n",p->score2); PF("\t\t學生馬哲成績:\t%f\n",p->score3); PF("\t\t學生總成績:\t%f\n",p->sum); PF("\t\t學

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!