王樹(shù)宇學(xué)生成績(jī)管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
王樹(shù)宇學(xué)生成績(jī)管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
王樹(shù)宇學(xué)生成績(jī)管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
王樹(shù)宇學(xué)生成績(jī)管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、綜合程序課程設(shè)計(jì)說(shuō)明書(shū)課程設(shè)計(jì)名稱(chēng):綜合程序課程設(shè)計(jì)課程設(shè)計(jì)題目:學(xué)生成績(jī)管理系統(tǒng)學(xué) 院 名 稱(chēng):電子信息工程學(xué)院專(zhuān)業(yè):電子信息科學(xué)與技術(shù)班級(jí):120431學(xué)號(hào):12043110姓名:王樹(shù)宇評(píng)分:教師:陶秋香2015 年 04月 10 日綜合程序課程設(shè)計(jì)任務(wù)書(shū)20142015學(xué)年第 2 學(xué)期第 1 周 2周題目學(xué)生成績(jī)管理系統(tǒng)內(nèi)容及要求用 C 編寫(xiě)一系統(tǒng),實(shí)現(xiàn)學(xué)生信息管理,軟件的入口界面應(yīng)包括如下幾個(gè)方面:(一)功能要求:(1)信息維護(hù):要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息(2)信息查詢(xún):要求:查詢(xún)時(shí)可實(shí)現(xiàn)

2、按姓名查詢(xún)、按學(xué)號(hào)查詢(xún)(3)成績(jī)統(tǒng)計(jì):要求: A 輸入任意的一個(gè)課程名(如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如 60-70 ),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況。(4)排序:能對(duì)用戶(hù)指定的任意課程名,按成績(jī)升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用表格的形式顯示排序后的輸出結(jié)果)(使用多種方法排序者,加分)進(jìn)度安排:布置課題,查閱資料,方案分析:程序設(shè)計(jì)及相應(yīng)的調(diào)試:完成設(shè)計(jì)報(bào)告學(xué)生姓名:王樹(shù)宇指導(dǎo)時(shí)間 2015 年 3 月 1 日-2015 年 3 月 15 日指導(dǎo)地點(diǎn): 綜合樓中506任務(wù)2015年 3月1日任務(wù)完成2015年 3月 15下達(dá)日考核1.評(píng)閱 2.答辯3.實(shí)際操作4. 其方式它指導(dǎo)陶秋香系(部)

3、主王忠華教師任內(nèi)容摘要本次課程設(shè)計(jì)的課題是學(xué)生成績(jī)管理系統(tǒng),本文介紹課程設(shè)計(jì)課題的選題意義,說(shuō)明了本系統(tǒng)提供的主要功能,對(duì)設(shè)計(jì)思路、功能模塊、流程圖、功能模塊、中心算法進(jìn)行了詳細(xì)的說(shuō)明,并畫(huà)出流程框圖。本文提供了完整的源程序代碼,并展示了系統(tǒng)使用和運(yùn)行效果。 最后給出了在高級(jí)語(yǔ)言程序設(shè)計(jì)過(guò)程中的總結(jié),其中包含本程序獨(dú)特設(shè)計(jì),作者的設(shè)計(jì)收獲、設(shè)計(jì)中遇到的困難和問(wèn)題,以及自己對(duì)設(shè)計(jì)題目及功能的改進(jìn)意見(jiàn),查閱的參考文獻(xiàn)等方面的內(nèi)容。索引關(guān)鍵字關(guān)鍵詞:源程序代碼,學(xué)生成績(jī)管理,流程框圖目錄第一章 課程設(shè)計(jì)的目的8第二章 設(shè)計(jì)內(nèi)容與要求5第三章 主要技術(shù)指標(biāo)及特點(diǎn)63.1登錄界面顯示73.2登記學(xué)生資料

4、83.3保存學(xué)生資料93.4刪除學(xué)生資料103.5修改學(xué)生資料113.6查詢(xún)學(xué)生資料123.7統(tǒng)計(jì)學(xué)生資料133.8對(duì)學(xué)生資料進(jìn)行排序143.9程序主要代碼15第四章 設(shè)計(jì)小結(jié).44.第五章 附錄45參考文獻(xiàn)454 設(shè)計(jì)小結(jié)43第一章課程設(shè)計(jì)的目的1加深對(duì) C語(yǔ)言程序設(shè)計(jì)課程知識(shí)的理解,掌握C 語(yǔ)言應(yīng)用程序的開(kāi)發(fā)方法和步驟;2進(jìn)一步掌握和利用C 語(yǔ)言進(jìn)行程設(shè)計(jì)的能力;3進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法;4初步掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;5學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法;6學(xué)會(huì)利用流程圖或N-S 圖表示算法;7掌握書(shū)寫(xiě)程設(shè)計(jì)開(kāi)發(fā)文檔的能力(書(shū)寫(xiě)課程設(shè)計(jì)報(bào)告)。第二章設(shè)計(jì)內(nèi)容與要

5、求設(shè)計(jì)內(nèi)容:成績(jī)管理系統(tǒng)現(xiàn)有學(xué)生成績(jī)信息,內(nèi)容如下:姓名學(xué)號(hào)語(yǔ)文數(shù)學(xué)英語(yǔ)張明明01677882李成友02789188張輝燦03688256王露04564577陳東明05673847設(shè)計(jì)要求:(1) 信息維護(hù):要求學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息(2) 信息查詢(xún):要求查詢(xún)時(shí)可實(shí)現(xiàn)按姓名查詢(xún)、按學(xué)號(hào)查詢(xún)(3) 成績(jī)統(tǒng)計(jì):要求輸入任意的一個(gè)課程名 (如數(shù)學(xué))和一個(gè)分?jǐn)?shù)段(如 60-70 ),統(tǒng)計(jì)出在此分?jǐn)?shù)段的學(xué)生情況。(4) 排序:能對(duì)用戶(hù)指定的任意課程名,按成績(jī)升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用表格的形式

6、顯示排序后的輸出結(jié)果) (使用多種方法排序者,加分)(5) 至少采用文本菜單界面(如果能采用圖形菜單界面更好)(6) 學(xué)生可自動(dòng)增加新功能模塊(視情況可另外加分)第三章主要技術(shù)指標(biāo)及特點(diǎn)學(xué)生成績(jī)管理系輸入學(xué)生信息更新學(xué)生信息查詢(xún)學(xué)生成績(jī)從從修刪排按按鍵文改除序照照盤(pán)件學(xué)學(xué)學(xué)學(xué)姓輸中生生生號(hào)名入獲成成成查查取績(jī)績(jī)績(jī)找找按按按課照照程學(xué)姓得號(hào)名分刪刪降除除序圖 3.1 :實(shí)驗(yàn)流程圖統(tǒng)計(jì)學(xué)生成績(jī)按 照課 程名 及分 數(shù)段 進(jìn)行 統(tǒng)計(jì)3.1登錄界面顯示圖 3.2 :登陸頁(yè)面此登錄界面是預(yù)先設(shè)定好作為菜單來(lái)顯示的, 在主函數(shù)中以 menu()來(lái)實(shí)現(xiàn)的,在函數(shù)中,是通過(guò)switchcase 來(lái)實(shí)現(xiàn)選擇功能

7、的,用戶(hù)可以通過(guò)需要進(jìn)行選擇,方便了用戶(hù)的使用,非常人性化。3.2登記學(xué)生資料圖 3.3 :登記頁(yè)面當(dāng)系統(tǒng)中沒(méi)有保存學(xué)生信息時(shí),就會(huì)提示沒(méi)有學(xué)生記錄! 也就是說(shuō)不能從文件中導(dǎo)出,這時(shí)就需要用戶(hù)進(jìn)行學(xué)生資料的導(dǎo)入,當(dāng)輸入的學(xué)號(hào)已經(jīng)存在時(shí),系統(tǒng)會(huì)提示用戶(hù)重新輸入一個(gè)未被占用的學(xué)號(hào)信息,否則就重新分配內(nèi)存空間。3.3 保存學(xué)生資料圖 3.4:保存頁(yè)面該操作是將用戶(hù)輸入的學(xué)生信息進(jìn)行保存,用文件的方法進(jìn)行調(diào)試,當(dāng)用戶(hù)輸入對(duì)象的個(gè)數(shù)超過(guò)0 時(shí),顯示保存成功,否則提示,系統(tǒng)連接為空。3.4刪除學(xué)生資料圖 3.5:刪除頁(yè)面圖 3.6:按姓名刪除頁(yè)面這里又是通過(guò)switchcase函數(shù)的調(diào)用,讓用戶(hù)進(jìn)行選擇,

8、共有兩種方法:1.按照學(xué)號(hào)2.按照姓名,操作完成后,系統(tǒng)會(huì)自動(dòng)提示,該學(xué)生已經(jīng)成功刪除,當(dāng)再次顯示的時(shí)候,函數(shù)中的鏈表就不再指向該學(xué)號(hào),從而起到刪除的作用。刪除完成后,再次保存一下學(xué)生資料,不然系統(tǒng)仍然默認(rèn)為原始人數(shù)。3.5 修改學(xué)生資料圖 3.7:修改頁(yè)面選擇到達(dá)修改界面:此時(shí)將呈現(xiàn)出現(xiàn)有的學(xué)生資料, 按照要求將新的信息輸入其中,再保存資料,如果輸入的學(xué)號(hào)系統(tǒng)中未顯示, 那么系統(tǒng)則提示沒(méi)有資料可以修改。3.6查詢(xún)學(xué)生資料圖 3.8:查詢(xún)頁(yè)面按照選擇,則會(huì)呈現(xiàn)出用戶(hù)需要查找的所有信息, 每次呈現(xiàn)出來(lái)的時(shí)候都要用之前定義的printheader()函數(shù),這個(gè)很好地將數(shù)據(jù)按照格式化的形式顯現(xiàn)出來(lái)。

9、此為按照學(xué)號(hào)查找的例子,按照姓名查找是同樣道理。3.7 統(tǒng)計(jì)學(xué)生資料圖 3.9:統(tǒng)計(jì)頁(yè)面統(tǒng) 計(jì) 學(xué) 生 資 料 主 要 還 是 用 的 switchcase 函 數(shù) , 通 過(guò) 選 擇 , 用printheader(),printdata(r),printf(END) 等函數(shù)用表格的形式將符合條件的學(xué)生信息全部顯示出來(lái),不過(guò)唯一不足的就是所有的學(xué)生信息沒(méi)有能夠連貫起來(lái),每個(gè)學(xué)生信息前面都有表頭,沒(méi)處理好。3.8 對(duì)學(xué)生資料進(jìn)行排序3.10 排序頁(yè)面該圖顯示的是按照語(yǔ)文成績(jī)排序完的結(jié)果,用鏈表將數(shù)據(jù)進(jìn)行一個(gè)接一個(gè)的比較,按照降序?qū)W(xué)生信息排列下來(lái),最后提示排序已經(jīng)完成,并將所有結(jié)果按照用戶(hù)要求顯

10、示出來(lái)。3.9 程序主要代碼#include "stdio.h"/* 標(biāo)準(zhǔn)輸入輸出函數(shù)庫(kù) */#include "stdlib.h"/* 標(biāo)準(zhǔn)函數(shù)庫(kù) */#include "string.h"/* 字符串函數(shù)庫(kù) */#include "conio.h"/* 屏幕操作函數(shù)庫(kù) */#define HEADER1 "-學(xué)生成績(jī) -n"#define HEADER2 "|學(xué)號(hào)|姓名|語(yǔ)文 |數(shù)學(xué) |英語(yǔ) |總分| 均分 | n"#define HEADER3 "|-|-|-

11、|-|-|-|-|"#define FORMAT "|%-10s |%-15s|%4d|%4d|%4d| %4d| %.2f|n"#define DATA p->data.num,p->,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.ave#define END"- n"int shoudsave=0; /* */struct studentchar num10;/* 學(xué)號(hào) */char name2

12、0;char sex4;int cgrade;int mgrade;int egrade;int total;float ave;char neartime10;/* 最近更新時(shí)間*/;typedef struct nodestruct student data;struct node *next;Node,*Link;void menu()system("cls");/* 調(diào)用 DOS 命令,清屏 .與 clrscr()功能相同 */cprintf("n");cprintf("學(xué)生成績(jī)管理系統(tǒng)nn");cprintf("*

13、菜單 *n");cprintf("*1登記學(xué)生資料2刪除學(xué)生資料*n");cprintf("*3查詢(xún)學(xué)生資料4修改學(xué)生資料*n");printf("*5插入學(xué)生資料6 統(tǒng)計(jì)學(xué)生資料*n");cprintf("*7排序?qū)W生資料8保存學(xué)生資料*n");cprintf("*9呈現(xiàn)學(xué)生資料0退出系統(tǒng)*n");cprintf("*n");/*cprintf()送格式化輸出至文本窗口屏幕中*/void printheader() /* 格式化輸出表頭*/printf(HEADE

14、R1);printf(HEADER2);printf(HEADER3);void printdata(Node *pp) /*格式化輸出表中數(shù)據(jù)*/Node* p;p=pp;printf(FORMA T,DATA);void Wrong()printf("n=> 提示 : 輸入錯(cuò)誤 !n");void Nofind()printf("n=> 提示 : 沒(méi)有找到該學(xué)生!n");void Disp(Link l) /*顯示單鏈表l 中存儲(chǔ)的學(xué)生記錄,內(nèi)容為student 結(jié)構(gòu)中定義的內(nèi)容*/Node *p;p=l->next;/*l 存儲(chǔ)的

15、是單鏈表中頭結(jié)點(diǎn)的指針,該頭結(jié)點(diǎn)沒(méi)有存儲(chǔ)學(xué)生信息,指針域指向的后繼結(jié)點(diǎn)才有學(xué)生信息*/if(!p) /*p=NULL,NUll在 stdlib 中定義為0*/printf("n=> 沒(méi)有學(xué)生記錄 !n");getchar();return;printf("nn");printheader(); /* 輸出表格頭部*/while(p)/* 逐條輸出鏈表中存儲(chǔ)的學(xué)生信息*/printdata(p);p=p->next; /* 移動(dòng)直下一個(gè)結(jié)點(diǎn)*/printf(HEADER3);getchar();/*作用:用于定位鏈表中符合要求的節(jié)點(diǎn),并返回指向

16、該節(jié)點(diǎn)的指針參數(shù): findmess 保存要查找的具體內(nèi)容; nameornum 保存按什么查找;在單鏈表l 中查找 ;*/Node* Locate(Link l,char findmess,char nameornum) /*該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針*/Node *r;if(strcmp(nameornum,"num")=0) /*按學(xué)號(hào)查詢(xún)*/r=l->next;while(r!=NULL)if(strcmp(r->data.num,findmess)=0)return r;r=r->next;else if(strcmp(na

17、meornum,"name")=0) /*按姓名查詢(xún)*/r=l->next;while(r!=NULL)if(strcmp(r->,findmess)=0)return r;r=r->next;return 0;/* 增加學(xué)生記錄*/void Add(Link l)Node *p,*r,*s; /* 實(shí)現(xiàn)添加操作的臨時(shí)的結(jié)構(gòu)體指針變量*/char ch,flag=0,num10;r=l;s=l->next;system("cls");Disp(l); /* 先打印出已有的學(xué)生信息 while(r->next

18、!=NULL)*/r=r->next; /*將指針移至于鏈表最末尾,準(zhǔn)備添加記錄*/while(1) /*一次可輸入多條記錄,直至輸入學(xué)號(hào)為0 的記錄結(jié)點(diǎn)添加操作*/while(1) /*輸入學(xué)號(hào),保證該學(xué)號(hào)沒(méi)有被使用,若輸入學(xué)號(hào)為0,則退出添加記錄操作*/printf(" 請(qǐng)你輸入學(xué)號(hào)(以 '0'返回上一級(jí)菜單:)");scanf("%s",num);flag=0;if(strcmp(num,"0")=0) /*輸入為0,則退出添加操作,返回主界面*/return;s=l->next;while(s) /

19、*查詢(xún)?cè)搶W(xué)號(hào)是否已經(jīng)存在,若存在則要求重新輸入一個(gè)未被占用的學(xué)號(hào)*/if(strcmp(s->data.num,num)=0)flag=1;break;s=s->next;if(flag=1) /* 提示用戶(hù)是否重新輸入*/ getchar();printf("=> 學(xué)號(hào)%s 不存在 ,重新輸入嗎 ?(y/n):",num);scanf("%c",&ch);if(ch='y'|ch='Y')continue;elsereturn;elsebreak;p=(Node *)malloc(sizeof(

20、Node); /*申請(qǐng)內(nèi)存空間*/if(!p)printf("n分配內(nèi)存失敗"); /*如沒(méi)有申請(qǐng)到,打印提示信息*/return ;/* 返回主界面*/strcpy(p->data.num,num); /* 將字符串num 拷貝到 p->data.num 中 */printf(" 請(qǐng)你輸入姓名:");scanf("%s",p->);getchar();printf(" 請(qǐng)你輸入語(yǔ)文成績(jī):");scanf("%d",&p->data.cgrade

21、);getchar();printf(" 請(qǐng)你輸入數(shù)學(xué)成績(jī):");scanf("%d",&p->data.mgrade);getchar();printf(" 請(qǐng)你輸入英語(yǔ)成績(jī):");scanf("%d",&p->data.egrade);p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.total / 3;getchar();/*信息輸入已經(jīng)完

22、成*/p->next=NULL;r->next=p;r=p;shoudsave=1;void Qur(Link l) /*按學(xué)號(hào)或姓名,查詢(xún)學(xué)生記錄*/int sel; /*1: 按學(xué)號(hào)查, 2:按姓名查,其他:返回主界面(菜單) */ char findmess20; /* 保存用戶(hù)輸入的查詢(xún)內(nèi)容 */Node *p;if(!l->next)/*若鏈表為空 */system("cls");printf("n=> 提示 : 沒(méi)有資料可以查詢(xún)!n");return;system("cls");printf(&qu

23、ot;n=>1按學(xué)號(hào)查找 n=>2 按姓名查找 n");printf("請(qǐng)選擇 1,2:");scanf("%d",&sel);if(sel=1)/*學(xué)號(hào)*/printf(" 請(qǐng)你輸入要查找的學(xué)號(hào):");scanf("%s",findmess);p=Locate(l,findmess,"num");/*在 l 中查找學(xué)號(hào)為searchinput 值的節(jié)點(diǎn),并返回節(jié)點(diǎn)的指針*/if(p)/* 若 p!=NULL*/printheader();printdata(p);

24、printf(END);printf(" 請(qǐng)按任意鍵返回");getchar();elseNofind();getchar();else if(sel=2) /*姓名*/printf(" 請(qǐng)你輸入要查找的姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p)printheader();printdata(p);printf(END);printf(" 請(qǐng)按任意鍵返回");getchar();elseNofind();getchar

25、();elseWrong();/* 刪除學(xué)生記錄:先找到保存該學(xué)生記錄的節(jié)點(diǎn),然后刪除該節(jié)點(diǎn)*/void Del(Link l) /*刪除*/int sel;Node *p,*r;char findmess20;if(!l->next)printf("n=> 提示 : 沒(méi)有資料可以刪除!n");getchar();return;printf("n=>1 按學(xué)號(hào)刪除 n=>2 按姓名刪除 n"); scanf("%d",&sel);if(sel=1)printf(" 請(qǐng)你輸入要?jiǎng)h除的學(xué)號(hào):&qu

26、ot;);scanf("%s",findmess);p=Locate(l,findmess,"num");if(p)r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("n=> 提示 : 該學(xué)生已經(jīng)成功刪除!n");getchar();shoudsave=1;elseNofind();else if(sel=2)printf(" 請(qǐng)你輸入要?jiǎng)h除的姓名:");scanf("%s",findmess

27、);p=Locate(l,findmess,"name");if(p)r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("n=> 提示 : 該學(xué)生已經(jīng)成功刪除!n");getchar();shoudsave=1;elseNofind();getchar();elseWrong();getchar();/* 修改學(xué)生記錄。先按輸入的學(xué)號(hào)查詢(xún)到該記錄,然后提示用戶(hù)修改學(xué)號(hào)之外的值,學(xué)號(hào)不能修改*/void Modify(Link l)Node *p;cha

28、r findmess20;if(!l->next) system("cls");printf("n=> 提示 : 沒(méi)有資料可以修改!n");getchar();return;system("cls");printf(" 修改學(xué)生資料");Disp(l);printf(" 請(qǐng)你輸入要修改的學(xué)生學(xué)號(hào):");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p)printf(" 請(qǐng)你輸入新

29、學(xué)號(hào)(原來(lái)是 %s):",p->data.num);scanf("%s",p->data.num);printf(" 請(qǐng)你輸入新姓名(原來(lái)是 %s):",p->);scanf("%s",p->);getchar();printf(" 請(qǐng)你輸入新的語(yǔ)文成績(jī)(原來(lái)是 %d 分 ):",p->data.cgrade);scanf("%d",&p->data.cgrade);getchar();printf(&qu

30、ot; 請(qǐng)你輸入新的數(shù)學(xué)成績(jī)(原來(lái)是 %d 分 ):",p->data.mgrade);scanf("%d",&p->data.mgrade);getchar();printf(" 請(qǐng)你輸入新的英語(yǔ)成績(jī) (原來(lái)是 %d 分 ):",p->data.egrade); scanf("%d",&p->data.egrade);p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.av

31、e=p->data.total/3;printf("n=> 提示 : 資料修改成功 !n");shoudsave=1;getchar();elseNofind();getchar();/* 插入記錄 :按學(xué)號(hào)查詢(xún)到要插入的節(jié)點(diǎn)的位置,然后在該學(xué)號(hào)之后插入一個(gè)新節(jié)點(diǎn)。*/void Insert(Link l)Link p,v,newinfo; /*p指向插入位置,newinfo 指新插入記錄*/char ch,num10,s10; /*s保存插入點(diǎn)位置之前的學(xué)號(hào),num 保存輸入的新記錄的學(xué)號(hào)*/int flag=0;v=l->next;Disp(l);wh

32、ile(1) printf(" 請(qǐng)輸入需要插入的新學(xué)號(hào): n"); scanf("%s",num);flag=0;v=l->next;while(v) /*查詢(xún)?cè)搶W(xué)號(hào)是否存在,flag=1表示該學(xué)號(hào)存在*/if(strcmp(v->data.num,s)=0) flag=1;break;v=v->next;if(flag=1)break; /* 若學(xué)號(hào)存在,則進(jìn)行插入之前的新記錄的輸入操作*/else getchar();printf("n=> 學(xué)號(hào)scanf("%c",&ch);if(ch=

33、'y'|ch='Y')continue;elsereturn;%s不存在,重新試嗎?(y/n):",s);/* 以下新記錄的輸入操作與Add() 相同 */printf("請(qǐng)輸入需要輸入的新學(xué)生學(xué)號(hào):n");scanf("%s",num);v=l->next;while(v)if(strcmp(v->data.num,num)=0)printf("=>對(duì)不起 ,新學(xué)號(hào) :'%s' 已經(jīng)存在!n",num);printheader();printdata(v);

34、printf("n");getchar();return;v=v->next;newinfo=(Node *)malloc(sizeof(Node);if(!newinfo)printf("n分配資源失敗"); /*如沒(méi)有申請(qǐng)到,打印提示信息*/return ;/* 返回主界面*/strcpy(newinfo->data.num,num);printf(" 請(qǐng)輸入學(xué)生的姓名:n");scanf("%s",newinfo->);printf("請(qǐng)輸入學(xué)生的語(yǔ)文成績(jī)0-10

35、0 : n");scanf("%s",newinfo->data.cgrade);printf("請(qǐng)輸入學(xué)生的數(shù)學(xué)成績(jī)0-100 : n");scanf("%s",newinfo->data.mgrade);printf("請(qǐng)輸入學(xué)生的英語(yǔ)成績(jī)0-100 : n");scanf("%s",newinfo->data.egrade);newinfo->data.total=newinfo->data.egrade+newinfo->data.cgrad

36、e+newinfo->data.mgrade;newinfo->data.ave=(float)(newinfo->data.total/3);newinfo->next=NULL;shoudsave=1; /*在 main() 有對(duì)該全局變量的判斷,若為1,則進(jìn)行存盤(pán)操作*/* 將指針賦值給p,因?yàn)?l 中的頭節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)才實(shí)際保存著學(xué)生的記錄*/p=l->next;while(1)if(strcmp(p->data.num,s)=0) /* 在鏈表中插入一個(gè)節(jié)點(diǎn)*/newinfo->next=p->next;p->next=newi

37、nfo;break;p=p->next;Disp(l);printf("nn");getchar();void Tongji(Link l)Node *pm,*pe,*pc,*pt,*pa; /*用于指向分?jǐn)?shù)最高的接點(diǎn)*/Node *r=l->next;int num1=0,num2=0,num3=0,num4=0,num5=0;int select;if(!r)printf("n=> 提示 : 沒(méi)有資料可以統(tǒng)計(jì)!n");return ;system("cls");pm=pe=pc=pt=pa=r;printf(&q

38、uot; 請(qǐng)選擇所需統(tǒng)計(jì)科目:1.語(yǔ)文2.數(shù)學(xué)3.英語(yǔ) n");scanf("%d",&select);switch(select)case 1:printf("請(qǐng) 選 擇 需 要 統(tǒng) 計(jì) 的 分 數(shù) 段 : 1.0-602.60-703.70-804.80-905.90-100n");scanf("%d",&select);switch(select)case 1:while(r!=NULL)if(r->data.cgrade<60)num1+;printheader();printdata(r

39、);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;case 2:while(r!=NULL)if(r->data.cgrade>=60&&r->data.cgrade<70)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;case 3:while(r!=NULL)if(r->data.cgrade

40、>=70&&r->data.cgrade<80)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;case 4:while(r!=NULL)if(r->data.cgrade>=80&&r->data.cgrade<90)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在

41、此分?jǐn)?shù)段的共有%d 人n",num1);break;case 5:while(r!=NULL)if(r->data.cgrade>=90&&r->data.cgrade<100)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;break;case 2:printf("請(qǐng) 選 擇 需 要 統(tǒng) 計(jì) 的 分 數(shù) 段 : 1.0-602.60-703.70-804.80-905.90-

42、100n");scanf("%d",&select);switch(select)case 1:while(r!=NULL)if(r->data.mgrade<60)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;case 2:while(r!=NULL)if(r->data.mgrade>=60&&r->data.mgrade<70)num1+;

43、printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;case 3:while(r!=NULL)if(r->data.mgrade>=70&&r->data.mgrade<80)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;case 4:while(r!=

44、NULL)if(r->data.mgrade>=80&&r->data.mgrade<90)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;case 5:while(r!=NULL)if(r->data.mgrade>=90&&r->data.mgrade<100)num1+;printheader();printdata(r);printf(END);r=r->next;printf(" 在此分?jǐn)?shù)段的共有%d 人n",num1);break;break;case 3:printf("請(qǐng) 選 擇 需 要 統(tǒng) 計(jì) 的 分 數(shù) 段 : 1.0-602.60-703.70-804.80-905.90-100n");scanf("%d",&select);switch(select)case 1:while(r!=NULL)if(r->data.egrade<60)num1+;printheader();printdata(r);

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論