• <code id="tjv70"><tr id="tjv70"><noframes id="tjv70">
    <code id="tjv70"></code>
    <rt id="tjv70"><form id="tjv70"><dfn id="tjv70"></dfn></form></rt>
    <code id="tjv70"><tr id="tjv70"></tr></code>

    [計(jì)算機(jī)軟件及應(yīng)用]學(xué)生管理系統(tǒng)與車輛管理系統(tǒng) 課程設(shè)計(jì)報(bào)告

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

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

    15 積分

    下載資源

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

    資源描述:

    《[計(jì)算機(jī)軟件及應(yīng)用]學(xué)生管理系統(tǒng)與車輛管理系統(tǒng) 課程設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《[計(jì)算機(jī)軟件及應(yīng)用]學(xué)生管理系統(tǒng)與車輛管理系統(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 專業(yè):通信工程 班級(jí):10級(jí)16班 (車輛管理系統(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.使用說明及運(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)交通車輛違章管理系統(tǒng)的違章信息錄入、違章情況查詢、針對(duì)每臺(tái)車輛統(tǒng)計(jì)罰款總金額

    3、等基本操作。進(jìn)一步鞏固C語(yǔ)言的學(xué)習(xí),培養(yǎng)一定的綜合編程能力。 1.2需要處理的基礎(chǔ)數(shù)據(jù) 設(shè)違章種類分為違章停車、闖紅燈、超速等三種。設(shè)違章停車每次罰款100元、闖紅燈每次罰款200元、超速每次罰款500元。 需處理的車輛及違章基本信息包括:車牌號(hào)、車主姓名、違章停車次數(shù)、闖紅燈次數(shù)、超速次數(shù)。 1.3系統(tǒng)功能 1.車輛及違章信息的錄入。 2.基于車牌號(hào)查詢每臺(tái)車輛的違章情況。 3.基于車牌號(hào)統(tǒng)計(jì)每臺(tái)車輛的罰款總金額。 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、 車輛管理系統(tǒng) 輸入車輛信息 輸入車牌號(hào)查詢其違章情況 輸入車牌號(hào)統(tǒng)計(jì)其罰款總金額 2.2程序設(shè)計(jì)流程圖 開始 輸入車輛信息 輸入為1嗎? 是 輸入車牌號(hào)查詢其違章情況 輸入為1碼? 輸入車牌號(hào)統(tǒng)計(jì)該臺(tái)車輛的罰款總金額 否 是 否 輸入為1碼? 結(jié)束 是 否 3.程序代碼設(shè)計(jì) 3.1 頭文件 為了使用系統(tǒng)中一些函數(shù),引入一些系統(tǒng)函數(shù)的頭文件#include #include 定義一個(gè)車輛結(jié)構(gòu)體,用來(lái)記錄車輛的

    5、相關(guān)信息: typedef struct Pe { char vno[8]; /*車牌號(hào)*/ char name[15]; /*車主姓名*/ int times1; /*違章停車次數(shù)*/ int times2; /*闖紅燈次數(shù)*/ int times3; /*超速次數(shù)*/ }PECCANCY; 之后就是編寫的程序,該程序?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è)分功能,不過遇

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

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

    8、會(huì)帶來(lái)沒必要的困難,總而言之,此次編程設(shè)計(jì)讓我受益匪淺?。?!,希望我的編程能力越來(lái)越高,將來(lái)能在激烈的社會(huì)競(jìng)爭(zhēng)中脫穎而出 ! 7.附錄(程序清單) #include #include #define p 1000 typedef struct Pe { char vno[8]; /*車牌號(hào)*/ 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<<"車牌號(hào)為"<>d; if(d==0) break; } } (學(xué)生管理系統(tǒng)課程設(shè)計(jì)報(bào)告) 目錄 1.課程設(shè)計(jì)任務(wù)……………………………………………………….13 2

    14、設(shè)計(jì)結(jié)構(gòu)圖及流程圖………………………………………………14 3程序代碼設(shè)計(jì)……………………………………………………….20 3.1頭文件………………………………………………………..20 3.2源文件………………………………………………………..21 4編碼與調(diào)試分析…………………………………………………….22 5使用說明及運(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)的錄入、查詢、刪除、統(tǒng)計(jì)等基本操作。進(jìn)一步鞏固C語(yǔ)言的學(xué)習(xí),以提高學(xué)生對(duì)開發(fā)環(huán)境的進(jìn)一步認(rèn)識(shí)和綜合編程能力。 1.2需要處理的基礎(chǔ)數(shù)據(jù) 學(xué)生基本信息:學(xué)號(hào)(例如2003級(jí)12班6號(hào)寫作20031206)、姓、名、性別、出生年月日、課程名稱(外語(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.基于姓名的查詢。如:姓張的所有同學(xué)。 6. 對(duì)性別、

    16、出生年月日的合理性進(jìn)行判斷(如0代表“女”,1代表“男”,輸入其他值非法,年齡不能為負(fù),月份不能大于13等) 7.基于各種基本數(shù)據(jù)的統(tǒng)計(jì)計(jì)算。如: ①統(tǒng)計(jì)每個(gè)學(xué)生各門功課的平均成績(jī),并按平均成績(jī)從高到低的次序排名輸出每個(gè)學(xué)生各門功課的綜合成績(jī)和平均成績(jī)(名次、學(xué)號(hào)、姓名、平均成績(jī)、各門功課的考試成績(jī))。 ②列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格學(xué)生清單(學(xué)號(hào)、姓名、不及格的課程和成績(jī))。 ③統(tǒng)計(jì)并輸出各門功課的平均成績(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é)生信息 查詢學(xué)生信息 按學(xué)號(hào)查詢 按學(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é)束 開辟一空間使*p

    18、1,*p2指向它 開辟一新空間*p1指向它 開始 對(duì)*p1指向的空間賦值,取出 P1->num的值 查找函數(shù)search_NO() 開始 獲得頭指針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() 開始 創(chuàng)建一新空間給*PP 對(duì)*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? 輸出個(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ù)過于簡(jiǎn)單就不再畫出其流程圖。 3程序代碼設(shè)計(jì) 3.1 頭文件 先是,為了用到一些系統(tǒng)函數(shù),所以引用一些庫(kù)文件: #include #in

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

    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)方式查詢信息 void search_name(); //以姓方式查詢信息 void arrage_stu(); //學(xué)生成績(jī)排名 void del_stu(); //刪除學(xué)生信息 void revise_stu(); //修改學(xué)生信息 void save(); //保存信息

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

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

    25、還有就是當(dāng)我編譯時(shí)沒有錯(cuò)誤,運(yùn)行時(shí)系統(tǒng)就彈出一個(gè)對(duì)話框說莫莫數(shù)據(jù)不匹配,后來(lái)我發(fā)現(xiàn)原來(lái)是運(yùn)用輸入函數(shù)scanf時(shí),要求數(shù)據(jù)類型與要輸入的數(shù)據(jù)類型不同,不過編譯器不能查出這個(gè)文題,所以以后編程時(shí)一定注意這個(gè)問題! 總之, 編碼與調(diào)試分析部分是編程步驟中非常重要的一部分,是一個(gè)程序能投入使用必須執(zhí)行的部分,非常重要! 5使用說明及運(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í)查詢學(xué)生記錄,該功能可以輸出該班級(jí)(學(xué)生學(xué)號(hào)按20101601格式書寫只要輸入前六位就是班級(jí))所有學(xué)生記錄!操作界面如下

    27、: 輸入9就是插入學(xué)生記錄,該界面就不顯示了,注意插入學(xué)生記錄是插入到最后一天記錄! 輸入10是按學(xué)號(hào)查詢學(xué)生信息,只要輸入學(xué)生學(xué)號(hào)就可以找到該學(xué)生,如沒找到,會(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ǔ)言編程。以前,我們編寫一些小程序都是一些小函數(shù),不存在一個(gè)特定功能的系統(tǒng)。因此,在編寫調(diào)試時(shí)不需要懂得太多的調(diào)試技巧。這次實(shí)驗(yàn)編寫的是一個(gè)系統(tǒng),代碼相對(duì)較多,函數(shù)調(diào)用頻繁,對(duì)各個(gè)函數(shù)的兼容性調(diào)試,是很大的一項(xiàng)工程。 整個(gè)系統(tǒng),一開始以為很大了對(duì)我們是個(gè)不小的考驗(yàn)。后面自己分析之后,發(fā)現(xiàn)不過就是一個(gè)一個(gè)的小函數(shù)拼接而成,沒有什么難的。在對(duì)一個(gè)一個(gè)功能函數(shù),調(diào)試正確后,變開始設(shè)計(jì)界面,組裝函數(shù)為系統(tǒng)。在這過程中確實(shí)遇到了不少的麻煩

    29、但大多是些語(yǔ)法錯(cuò)誤,幾經(jīng)調(diào)試也就好了。 系統(tǒng)的完善。在基本功能無(wú)誤后,開始想辦法把系統(tǒng)做的更人性化一點(diǎn)。就比如,在每次函數(shù)輸出后,進(jìn)行清屏使每次實(shí)現(xiàn)新功能時(shí),是在獨(dú)自的屏幕下進(jìn)行。對(duì)系統(tǒng)的退出進(jìn)行提示,以免誤動(dòng)作退出系統(tǒng)。將性別輸出的字符型,改成漢子的男/女輸出,這在人性方面無(wú)疑是便于操作的。 要說這次實(shí)驗(yàn)最大獲得是什么,就是調(diào)試,調(diào)試,再調(diào)試。完善,完善,在完善。還有就是提高了我對(duì)編程的興趣!希望自己的編程能力越來(lái)越好,將來(lái)可以在激烈的社會(huì)競(jìng)爭(zhēng)中脫穎而出! 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];/*學(xué)號(hào)*/ char FamilyName[16]; /*姓*/ char GivenName[16]; /*名*/ int sex; /*性別(0代表"女",1代表"男")*/ int BirthYear; /*出生年*/ int BirthMonth; /*出

    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)方式查詢信息 void search_name(); //以姓方式查詢信息 void arrage_stu(); //學(xué)生成績(jī)排名 void del_stu(); //刪除學(xué)生信息 void revise_stu(); //修改學(xué)生信息 void save(); //保存信息 void jisuan(); //計(jì)算所有學(xué)生的以及各科總分和均分 void search_clas(); //按班級(jí)查

    35、詢顯示學(xué)生信息 void insert_stu(); //插入學(xué)生記錄到表中 void sort(float x[],int n); //對(duì)學(xué)生按總分進(jìn)行從高到底排序 void search_allscore(); //按學(xué)生總成績(jī)查詢,用來(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; } //開始創(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í)查詢顯示學(xué)生信息 *\n"); PF("\t\t* 9.插入記錄到表中 *\n"); PF("\t\t* 10.按學(xué)號(hào)查詢學(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)查證:"); } //沒找到信息時(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)查證:"); } //沒找到信息時(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ú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

    相關(guān)資源

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

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

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


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