C語言課程設(shè)計成績管理系統(tǒng)_第1頁
C語言課程設(shè)計成績管理系統(tǒng)_第2頁
C語言課程設(shè)計成績管理系統(tǒng)_第3頁
C語言課程設(shè)計成績管理系統(tǒng)_第4頁
C語言課程設(shè)計成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

一、課程設(shè)計的內(nèi)容

(1)信息維護(hù):

要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實現(xiàn)學(xué)生信息數(shù)據(jù)

的維護(hù)。此模塊包括子模塊有:增加學(xué)生信息、、刪除學(xué)生信息、修改

學(xué)生信息

(2)信息查詢:

要求:查詢時可實現(xiàn)按姓名查詢、按學(xué)號查詢

(3)成果統(tǒng)計:

要求:A輸入隨意的一個課程名(如數(shù)學(xué))和一個分?jǐn)?shù)段(如

60-70),統(tǒng)計出在此分?jǐn)?shù)段的學(xué)生狀況。

(4)排序:能對用戶指定的隨意課程名,按成果升序或降序排列學(xué)生

數(shù)據(jù)并顯示排序結(jié)果(運用表格的形式顯示排序后的輸出結(jié)果)

(運用多種方法排序者,加分)

(二)其它要求:

(1)只能運用C/C++語言,源程序要有適當(dāng)?shù)淖⑨專钩绦蚝啙嶉?/p>

(2)至少采納文本菜單界面(假如能采納圖形菜單界面更好)

(3)學(xué)生可自動增加新功能模塊(視狀況可另外加分)

(4)寫出課程設(shè)計報告,具體要求見相關(guān)說明文檔

一、課程設(shè)計的要求及數(shù)據(jù)

1、進(jìn)一步駕馭和利用C語言進(jìn)行程設(shè)計的實力;

2、進(jìn)一步理解和運用結(jié)構(gòu)化程序設(shè)計的思想和方法;

3、初步駕馭開發(fā)一個小型好用系統(tǒng)的基本方法;

4、學(xué)會調(diào)試一個較長程序的基本方法;

5、學(xué)會利用流程圖或N-S圖表示算法;

6、駕馭書寫程序設(shè)計開發(fā)文檔的實力。

三、課程設(shè)計應(yīng)完成的工作

1、編寫完成相應(yīng)題目的程序;

2、編寫課程設(shè)計報告,課程設(shè)計報告的內(nèi)容應(yīng)包括以下6個部分:

1)需求分析:包括設(shè)計題目、設(shè)計要求以及系統(tǒng)功能需求分

析;

2)總體設(shè)計:包括系統(tǒng)總體設(shè)計框架和系統(tǒng)功能模塊圖;

3)具體設(shè)計:包括主要功能模塊的算法設(shè)計思路以及對應(yīng)的

工作流程圖;

4)調(diào)試分析過程描述:包括測試數(shù)據(jù)、測試輸出結(jié)果,以及

對程序調(diào)試過程中存在問題的思索(列出主耍問題的出錯現(xiàn)

象、出錯緣由、解決方法及效果等,適當(dāng)?shù)陌Y(jié)果截圖);

5)總結(jié):課程設(shè)計完成了哪些功能,有沒有什么擴(kuò)展功能?

還有哪些地方須要改進(jìn)?課程設(shè)計過程中的學(xué)習(xí)體會及收

獲、對本次課程設(shè)計的相識以及自己的建議等內(nèi)容;

6)附錄:主要源程序代碼,含必要的注釋。

3、答辯:在試驗室建立程序運行的環(huán)境,并在指導(dǎo)老師的監(jiān)督

下,獨立解

決問題、運行程序和回答老師提出的問題。

目錄

1設(shè)計目的及要

求.................................................P4

2總體設(shè)

計.......................................................P4

3具體設(shè)

計.......................................................P5

3.1功能模塊設(shè)

計.................................................P5

XX功能模塊(可選).......................................

P5

YY功能模塊(可選).......................................

P6

ZZ功能模塊(可選).......................................

P7

3.2數(shù)據(jù)結(jié)構(gòu)設(shè)

計P8

4調(diào)試分

析......................................................P9

4.1結(jié)構(gòu)

體......................................................P9

4.2鏈

表........................................................PH

5遇到的問題及解決方法分

析P12

6總

結(jié)...........................................................

-P13

7源文

P13

7.1鏈

表...........................................................P13

7.2結(jié)構(gòu)

體.........................................................P28

1、目的及要求

一目的:編制一程序?qū)崿F(xiàn)對學(xué)生成果的管理,讓自己既動手又動腦,

獨立實踐,將課本上的理論學(xué)問和實際應(yīng)用問題進(jìn)行有機(jī)結(jié)合,熬煉

自己分析、解決實際問題的實力,提高自身項目開發(fā)及程序調(diào)試實力。

二要求:

1、整個系統(tǒng)均用C語言實現(xiàn);

2、利用指針、結(jié)構(gòu)體、鏈表來實現(xiàn)學(xué)生成果的數(shù)據(jù)結(jié)構(gòu)設(shè)計;

3、系統(tǒng)具有輸入、顯示、查詢(查詢時可實現(xiàn)按姓名查詢、按學(xué)號

查詢)、刪除、排序、插入,保存、讀取基本功能;

4、系統(tǒng)的各個功能模塊都用函數(shù)的形式來實現(xiàn);

5、學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實現(xiàn)學(xué)生信息數(shù)據(jù)的維護(hù)。

此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息;

6、可以輸入隨意的一個課程名(如數(shù)學(xué))和一個分?jǐn)?shù)段(如60-70),

統(tǒng)計出在此分?jǐn)?shù)段的學(xué)生狀況;

7、能對用戶指定的隨意課程名,按成果升序或降序排列學(xué)生數(shù)據(jù)并

顯示排序結(jié)果;

8、可自動增加新功能模塊;

9、可以將學(xué)生信息從文件中讀取出來。

2總體設(shè)計

1、主函數(shù)main()

利用if-else,While循環(huán)語句和switch。實現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)

依據(jù)輸入的數(shù)字選項來調(diào)用相應(yīng)的函數(shù)。

2、菜單選擇函數(shù)voidmenu。;

這是一個無參函數(shù),主要實現(xiàn)“功能選擇”的界面,在這個界面里有

顯示系統(tǒng)的13大功能,依據(jù)每個功能前面的序號進(jìn)行選擇。等執(zhí)行

完每一個函數(shù)功能后,按任'0'鍵回到主界面也要通過這個函數(shù)提

示來實現(xiàn)!

3、自定義函數(shù)voidprintstart()voidWrong()>voidNofind()

voidprintcO、voidprinte(Node*p)

用voidWrong。來提示輸入錯誤,用voidNofind()提示沒有找到學(xué)

生資料,用voidprintcO來輸出中文,用voidprinte(Node*p)

來輸出中文。

main()

voidAdd(Link----1)

voicMaths(Link1)

voidQur(Link1)

voidEnglish(Link1)

voidDel(:Link1)

voicselect(Link1)

voidModify(Linl1)voic

Save(Link1)

voidDisp(Link1)

voicmenu()

vcid___________TongjLtLink1)

voicprintcO

voidChinese(Link1)

voicprinte(Node*p)

3具體設(shè)計

3.1功能模塊設(shè)計

排序數(shù)學(xué)成果功能模塊

函數(shù)voidMaths(Link1)

該函數(shù)用于對數(shù)學(xué)成果進(jìn)行降序,11二(Link)mal1oc(sizeof(Node))

用于做新的鏈表連接,假如原鏈表為空的話,返回;不為空的話,

p=l->next;建立接點用于保存信息,對指定鏈表地址進(jìn)行排序。流

程圖如圖所示:

顯示學(xué)生資料功能模塊

函數(shù)voidDisp(Link1)

該函數(shù)負(fù)責(zé)顯示學(xué)生資料,這是一個不返同值函數(shù)。

算法:先將P結(jié)點的指針指向第一個結(jié)點,將P結(jié)點(即第一個結(jié)點)

的數(shù)據(jù)輸出。然后再將p結(jié)點的指針指向p指針的的指針(即下一結(jié)

點),將P結(jié)點(即第一結(jié)點)的數(shù)據(jù)輸出。重復(fù)執(zhí)行此步聚直到P指

函數(shù)voidDel(Link1)

該函數(shù)用于有選擇地刪除學(xué)生資料,假如原來的鏈表為空的話,會返

回;不為空的話,選擇用按哪種類型刪除,假如按學(xué)號刪除,就輸入

學(xué)號,后推斷是否取得地址,取得就執(zhí)行刪除;按名字刪除就輸入名

字,運行同學(xué)號一樣。流程圖如圖所示:

一個結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如一個學(xué)生的學(xué)號、姓名、成

果等數(shù)據(jù))。一個結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段起始

地址。可以設(shè)一個指針變量,用來指向一結(jié)構(gòu)體變量,此時指針變量

的值是結(jié)構(gòu)體的起始地址。指針量變也可以用來指向一結(jié)構(gòu)體數(shù)組中

的元素。

structstudent

charnum[10];/*學(xué)號*/

charname[20];

charsex[4];

intcgrade;

intmgrade;

integrade;

inttotle;

intave;

charneartime[10];/*最近更新時間*/

typedcfstructnode

structstudentdata;

structnode*next;

}Node,*Link;

6總結(jié)

經(jīng)過一個多星期的C語言課程設(shè)計,感覺自己收獲不少!

首先是:要達(dá)到這樣的功能,運用鏈表相當(dāng)便利,但不簡潔理解,所

以在這方面我很了許多的時間看課本,使C語言的學(xué)問強(qiáng)化了不少。

其次,在做課程設(shè)計的過程中,發(fā)覺了平常許多沒有留意到的問題,

例如:返回值函數(shù)和不返回值函數(shù)兩者在主函數(shù)中的調(diào)用是不同

的........

更重要的是,這次課程設(shè)計雖然花了我不少時間,但正是這些時間,

讓我見識到了C語言的重要性。這個學(xué)生成果管理系統(tǒng)都是在自己學(xué)

問范圍內(nèi)完成的,所以界面清楚簡潔,可能不是很好看,但肯定好用!

從這里我也得到一個體會,做一個程序,或者開發(fā)一個軟件,應(yīng)當(dāng)著

重從它的后臺制作入手,不能做出一個中看不中用的程序或者軟件。

信任這次的課程設(shè)計使我的C語言學(xué)問扎實了許多。

由于這是第一次進(jìn)行設(shè)計,寫文檔,難免會寫得不好!

7源程序

7.1鏈表

#include〃stdio.h〃

#include"sldlib.h〃

#include"string.h〃

intshoudsave=0;/**/

structstudent

charnum[10];/*學(xué)號*/

charname[20];

charsex[4];

intcgrade;

intmgrade;

integrade;

inttotle;

intave;

charneartime[10];/*最近更新時間*/

typedefstructnode

structstudentdata;

structnode*next;

}Node,*Link;

voidmenu()

y—yi,f

Il*T\*T?*T?*T^*T^#T?*T?*T?

\?

*fsX^**TS*TS*TS^T**lSZ7**Ts*lSZ^**lSI

printfC\tl登記學(xué)生資料\t\t\t\t\t2刪除學(xué)生資料\n〃);

printfC\t3查詢學(xué)生資料\t\t\t\t\t4修改學(xué)生資料\n〃);

printfr\t5顯示學(xué)生資料\t\t\t\t\l6統(tǒng)計學(xué)生資料\n〃);

printf(,z\t7排序語文成果\t\t\t\t\t8排序數(shù)學(xué)成果\n〃);

printfC\t9排序英語成果\t\t\t\t\tlO選出分段分?jǐn)?shù)\n〃);

printfCXtll保存學(xué)生資料\t\t\t\t\tl2幫助信息\t\t\n〃);

printf(/z\t0退出系統(tǒng)\t\t\t\t\t\t\t\n");

-9^py-^^,f

II*7**7%^Tw#TW^T%

?X^.]*\?、

^T**iSZT**TSZT**TS*iS*TSZ^*\I1

voidprintstart()

printf(〃---------

-\n〃);

voidWrong()

printf("\n===》提示:輸入錯誤!\n〃);

voidNofind()

printf(〃\n===>提示:沒有找到該學(xué)生!\n〃);

voidprintcO/*本函數(shù)用于輸出中文*/

printf(〃學(xué)號\t姓名\t性別語文成果數(shù)學(xué)成果英語

成果總分平均分、\n〃);

voidprinte(Node*p)/*本函數(shù)用于輸出英文*/

,z,,

printf(%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\n)p->data.num,p-

>data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->dat

a.cgrade,p->data.totle,p->data.ave);

Node*Locate(Link1?charfindmess[],charnameornum[])/*該

函數(shù)用于定位連表中符合要求的接點,并返回該指針*/

Node

if(strcmp(nameornum,,,numz,)==0)/*按學(xué)號查詢*/

r=l->next;

while(r!=NULL)

if(strcmp(r->data.num,findmess)==0)

returnr;

r=r->next;

elseif(strcmp(nameornum,"name")=0)/*按姓名查詢*/

r=l->next;

while(r!=NULL)

if(strcmp(r->data.name,findmess)=0)

returnr;

r=r->noxt;

return0;

voidAdd(Link1)/*增加學(xué)生*/

Node*p,*r,*s;

charnum[10];

r=l;

s=l->noxt;

while(r->next!=NULL)

r=r->next;/*將指針置于最末尾*/

while(1)

printf(〃請你輸入學(xué)號(以'O'返回上一級菜單:)〃);

scanf(〃%s〃,num);

if(strcmp(num,,/0,,)==0)

break;

whi1e(s)

if(strcmp(s->data.num,num)==0)

printf(〃===>提示:學(xué)號為‘%s'的學(xué)生已經(jīng)存在,若要修改請你選

擇‘4修改‘!\n”,num);

printstart();

printc();

printe(s);

printstart();

printf(〃\n〃);

return;

s=s->next;

p=(Node*)malloc(sizcof(Node));

strcpy(p->data.num,num);

printf(〃請你輸入姓名:〃);

scanf(〃%s〃,p->data.name);

getchar();

printf(〃請你輸入性別:〃);

scanf(〃/s〃,p->data.sex);

getchar();

printf(〃請你輸入語文成果:〃);

scanf(〃%d〃,&p->data.cgrade);

getchar();

printf(〃請你輸入數(shù)學(xué)成果:〃);

scanf&p->data.mgrade);

getchar();

printf(〃請你輸入英語成果:〃);

scanf(〃%d〃,&p->data.egrade);

getchar();

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.ave=p->data.totle/3;

/*信息輸入已經(jīng)完成*/

p->next=NULL;

r->next=p;

r=P;

shoudsave=l;

voidQur(Link1)/*查詢學(xué)生*/

intsei;

charfindmess[20];

Node*p;

if(!l->ncxt)

printf(〃\n===>提示:沒有資料可以查詢!\n〃);

return;

printf(〃\n===>l按學(xué)號查找\n===>2按姓名查找\n〃);

scanf(〃%d〃,&sel);

if(sel==l)/*學(xué)號*/

printf("請你輸入要查找的學(xué)號:〃);

scanf(〃%s〃,findmess);

p=Locate(1,findmess,〃num〃);

if(p)

printfC\t\t\t\t查找結(jié)果\n〃);

printstart();

printc();

printe(p);

printstart();

else

Nofind();

elseif(sel==2)/*姓名*/

printf(〃請你輸入要查找的姓名:〃);

scanf(〃%s〃,findmess);

p=Locate(l,findmess,z/name,z);

if(p)

printf(z,\t\t\t\t查找結(jié)果\n〃);

printstart();

printc();

printe(p);

printstart();

else

Nofind();

else

Wrong();

voidDel(Link1)/*刪除*/

intsei;

Node*p,*r;

charfindmess[20];

if(!l->next)

printf(〃\。==二〉提示:沒有資料可以刪除!\口〃);

return;

printf(z/\n=?>l按學(xué)號刪除\.:=>2按姓名刪除\n〃);

scanf(繪d〃,&sel);

if(sel==l)

printf(〃請你輸入要刪除的學(xué)號:〃);

scanf(〃%s〃,findmess);

p二Locate。,findmess,〃num〃);

if(p)

r=l;

whi1e(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n===>提示:該學(xué)生已經(jīng)勝利刪除!\n");

shoudsave=l;

else

Nofind();

elseif(sel-2)

printf(〃請你輸入要刪除的姓名:〃);

scanf(〃%s〃,findmess);

p=Locate(1,findmcss,"name");

if(p)

r=l;

while(r->ncxt!=p)

r=r->next;

r->next=p->next;

free(p);

printf(〃\n===>提示:該學(xué)生已經(jīng)勝利刪除!\n〃);

shoudsave=l;

else

Nofind();

else

Wrong();

voidModify(Link1)

Node*p;

charfindmess[20];

if(!l->next)

printf(〃\n===>提示:沒有資料可以修改!\n〃);

return;

printf(〃請你輸入要修改的學(xué)生學(xué)號:〃);

scanf(〃%s〃,findmess);

p=Locate。,findmess,^num^);

if(p)

printf(“請你輸入新學(xué)號(原來是%s):〃,p->data.num);

scanf(〃%s〃,p->data.num);

prinlf(〃請你輸入新姓名(原來是%$):〃,p->data.name);

scanf(〃%s〃,p->data.name);

getchar();

printf(〃請你輸入新性別(原來是%s):〃,p->data.sex);

scanf(〃%s〃,p->data.sex);

printf(〃請你輸入新的語文成果(原來是%(1分):〃,p->data.cgrade);

scanf(飛d〃,&p->data.cgrade);

getchar();

printf(〃請你輸入新的數(shù)學(xué)成果(原來是%(1分)/z,p->data.mgrade);

scanf(〃%d〃,&p->data.mgrade);

getchar();

printf(〃請你輸入新的英語成果(原來是%d分)p->data.egrade);

scanf(z/%d",&p->data.egrade);

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.ave=p->data.totle/3;

printf(〃\n===>提示:資料修改勝利!\n〃);

shoudsave=l;

else

Nofind();

voidDisp(Link1)

intcount=0;

Node*p;

p=l->next;

if(1p)

printf(〃\『二=》提示:沒有資料可以顯示!\n〃);

return;

printf(/z\t\t\t\t顯示結(jié)果\n");

printstart();

printc();

printf(〃\n〃);

whi1e(p)

printe(p);

p=p->next;

printstart();

printf("\n");

voidTongji(Link1)

Node*pm,*pe,*pc,*pt,*pa;/*用于指向分?jǐn)?shù)最高的接點*/

Node*r=l-〉next;

if(!r)

printf(〃3===》提示:沒有資料可以統(tǒng)計!\n〃);

return;

pm=pe=pc=pt=pa=r;

while(r!=NULL)

if(r->data.cgrade>=pc->data.cgrade)

pc=r;

if(r->data.mgrade>=pm->data.mgrade)

pm=r;

if(r->data.egrade>=pe->data.egradc)

pe=r;

if(r->data.totle>=pt->data.totle)

pt=r;

if(r->data.ave>=pa->data.ave)

pa=r;

r=r->next;

printfC-------------------------------統(tǒng)計結(jié)果

---------------------------------\n〃);

printf("總分最高者:\t%s%d分

\n〃,pt->data.name,pt->data.totle);

printf(〃平均分最高者:\t%s%d分

\n〃,pa->data.name,pa->data.ave);

printf(,z英語最高者:\t%s%d分

\n〃,pe->data.name,pe->data.egrade)

printfC數(shù)學(xué)最高者:\t%s%d分

\n〃,pm->data.name,pm->data.mgrade)r

printf(/z語文最高者:\t%s%d分

\n〃,pc->data.name,pc->data.cgrade);

printstart();

voidChinese(Link1)

Link11;

Node*p,*rr,*s;

ll=(Link)malloc(sizeof(Node));/*用于做新的連表*/

ll->next=NULL;

if(l->next==NULL)

printf(〃\n===>提示:沒有資料可以排序!\n〃);

return;

p=l->next;

while(p)

s=(Node*)malloc(sizeof(Node));/*新建接點用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!=NULL&&

rr->next->data.egrade>=p->data.egrade)

rr=rr->next;

if(rr->next==NULL)

rr->ncxt=s;

else

s->next=rr->next;

rr->next=s;

p=p->next;

free⑴;

l->next=ll->next;

printf(〃\11===》提示:排序已經(jīng)完成!\n〃);

voidMaths(Link1)/*對數(shù)學(xué)排序*/

Link11;

Node*p,*rr,*s;

11=(Link)malloc(sizeof(Node));/*用于做新的連表*/

ll->next=NULL;

if(l->next-NULL)

printf(〃\n===>提示:沒有資料可以排序!\n〃);

return;

p=l->next;

while(p)

s=(Node*)malloc(sizeof(Node));/*新建接點用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!=NL'LL&&

rr->next->data.mgrade>=p->data.mgrade)

rr=rr->next;

if(rr->ncxt==NULL)

rr->next=s;

else

s->next=rr->next;

rr->next=s;

p=p->next;

free⑴;

l->next=ll->next;

printf(〃\n===>提示:排序已經(jīng)完成!\n〃);

voidEnglish(Link1)/*對英語排序*/

Link11;

Node*p,*rr,*s;

11=(Link)malloc(sizeof(Node));/*用于做新的連表*/

ll->next=NULL;

if(l->next==NULL)

printf(〃\n===>提示:沒有資料可以排序!\n〃);

return;

p=l->next;

while(p)

s=(Node*)malloc(sizeof(Node));/*新建接點用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!=NULL&&

rr->next->data.cgrade>=p->data.cgrade)

rr=rr->ncxt;

if(rr->next==NULL)

rr->next=s;

else

s->next=rr->next;

rr->next=s;

p=p->next;

free⑴;

l->next=l]->next;

printf("\n===>提示:排序已經(jīng)完成!\n");

voidselect(Link1)

inti;

intj,k;

Node*pc=1;〃用于指向分?jǐn)?shù)最高的接點

Node*r=l->next;

if(jr)

printf(〃\n===》提示:沒有資料可以篩選!\n〃);

return;

printf(〃輸入課程名1,語文2.數(shù)學(xué)3.英語〃);

scanf(〃/d〃,&i);

if(i==l)

printf(〃請輸入篩選分?jǐn)?shù)的上限:〃);

scanf;

printf(〃請輸入篩選分?jǐn)?shù)的下限:〃);

scanf(〃%d”,&k);

printf(z,-------------------------------篩選結(jié)果

\n〃);

printf(〃學(xué)號\t姓名\t性別語文成果數(shù)學(xué)

成果英語成果總分平均分\n〃);

printstart();

while(r!=NULL)

if(k<=(r->data.egrade)&&(r->data.egrade)<j)

printe(r);

r=r->next;

elseif(i==2)

printf(〃請輸入篩選分?jǐn)?shù)的上限:〃);

scanf(〃%d〃,&j);

printf(〃請輸入篩選分?jǐn)?shù)的下限:〃);

scanf(〃/d〃,&k);

printf(,z-----------------------------------篩選結(jié)果

\n〃);

printf(〃學(xué)號\t姓名\t性別語文成果數(shù)學(xué)

成果英語成果總分平均分\n〃);

printstart();

while(r!=NULL)

if(k<=(r->data.mgrade)&&(r->data.mgradc)<j)

printe(r);

r=r->next;

elseif(i==3)

printf(〃請輸入篩選分?jǐn)?shù)的上限:〃);

scanf&j);

printf("請輸入篩選分?jǐn)?shù)的下限:");

scanf(〃%d",&k);

printf(,z篩選結(jié)果

\n〃);

printf(〃學(xué)號\t姓名\t性別語文成果數(shù)學(xué)

成果英語成果總分平均分\n〃);

printstart();

while(r!=NULL)

if(k<=(r->data.cgrade)&&(r->data.cgrade)<j)

printe(r);

r=r->next;

else

Wrong();

voidSave(Link1)

FILE*fp;

Node*p;

intflag=l,count=0;

fp二fopen(〃c:\\student〃,〃wb〃);

if(fp二二NULL)

printf(〃\n===>提示:重新打開文件時發(fā)生錯誤!\n〃);

exit(1);

p=l->next;

while(p)

if(fwrite(p,sizeof(Node),1,fp)==1)

p=p->next;

count++;

else

flag=O;

break;

if(flag)

printf(〃\n===>提示:文件保存勝利.(有%d條記錄已經(jīng)保

存.)\n〃,count);

shoudsave=0;

fclose(fp);

voidmain()

Link1;/*連表*/

FILE*fp;/*文件指針*/

intsei;

charch;

charjian;

intcount=0;

Node*p,*r;

printf(〃\t\t\t\t學(xué)生成果管理系統(tǒng)\n\t\t\t06自動化2班蔡

曉慶3106000849\t\t\t\t\n/z);

1=(Node*)maHoc(sizeof(Node));

l->next=NULL;

r=l;

fp=fopen(〃C:\\student〃,〃wb〃);

loop:menu();

printf(〃請你選擇操作:〃);

scanf(〃%d〃,&sel);

if(sel==0)

if(shoudsave==1)

{getcharO;

printf(〃\n===>提示:資料已經(jīng)改動,是否將改動保存到文件中

(y/n)?\n〃);

scanf(〃%c”,&ch);

if(ch='y'||ch='Y')

Save(1);

printf(〃\n===>提示:你已經(jīng)退出系統(tǒng),再見!\n〃);

return;

switch(sei)

case1:Add(1);gotoloop;break;/*增加學(xué)生*/

case2:Del(1);gotoloop;break;/*刪除學(xué)生*/

case3:Qur(1);gotoloop;break;/*查詢學(xué)生*/

case4:Modify(1);gotoloop;break;/*修改學(xué)生*/

case5:Disp(l);gotoloop;break;/*顯示學(xué)生*/

case6:Tongji(1);gotoloop;break;/*統(tǒng)計學(xué)生*/

case7:Chinese(1);gotoloop;break;/*語文排序*/

case8:Maths(1);gotoloop;break;/*數(shù)學(xué)排序*/

case9:English(l);gotoloop;break;/*英語排序*/

case10:select(1);gotoloop;break;A選擇分段分?jǐn)?shù)*/

case11:Save(l);gotoloop;break;A保存學(xué)生*/

case12:printf(z,\t\t\t==========%gbM==========\n/?);goto

loop;break;

default:Wrong();getchar();break;

7.2結(jié)構(gòu)體

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

structstudent

charclass_0[20];

charnum[20];

charname[20];

floatmath;

floatc_prog;

floateng;

floatpolity;

floatsport;

floatave;}stu[1000];

charj,h;

/*函數(shù)聲明*/

voidluru();

voidchaxun();

voidcharu();

voidtongji();

voidxiugai();

voidshanchu();

voidpaixuO;

voidtuichu();

FILE*fp;〃指向?qū)W生信息的文件指針

voidmain()

loop:

printf(z,\t\i********************************************

printf("\t\t歡迎運用學(xué)生信息管理系統(tǒng)

\t\t\n");

printf(z/\t\t

\t\t\n/z);

printfC\t\t制作人:電力4史素

芬\t\t\n");

printf(〃\t\t

\t\t\n〃);

printf(〃\t\t

\t\t\n/z);

printfCz\t\tl.錄入學(xué)生成果\n〃);

printfC\t\t2.排序?qū)W生成果\n〃);

printf(〃\t\l3.統(tǒng)計輸出成果\n〃);

printf(〃\t\t4.查詢學(xué)生成果\n〃);

printfCz\t\t5.插入學(xué)生成果\n");

printf(z/\t\t6.修改學(xué)生成果\n〃);

printf(z/\t\t7.刪除學(xué)生成果\n〃);

printf(z,\t\t8.退出管理系統(tǒng)\n");

intn;

printf(〃請選擇功能\n\n〃);

scanf("%d〃,&n);

system(〃cls〃);

switch(n)

case1:

printfC\t\t錄入學(xué)生成果\n\n");

luru();

gotoloop;

case2:

printfC\t\t排序?qū)W生成果\n\n〃);

paixuO;

gotoloop;

case3:

printfC\t\t統(tǒng)計輸出學(xué)生成果\n\n〃);

tongji();

gotoloop;

case4:

printfCz\t\t查詢學(xué)生成果\n\n〃);

chaxun();

gotoloop;

case5:

printfr\t\t插入學(xué)生成果\n\n〃);

charu();

gotoloop;

case6:

printf(,z\t\t修改學(xué)生成果\n\n〃);

xiugai();

gotoloop;

case7:

printfC\t\t刪除學(xué)生成果\n\n〃);

shanchu();

gotoloop;

case8:

printf程序退出。\t感謝運用!\n\n〃);

exit(0);

default:

printf(〃您的輸入有誤,請重試!\n\n〃);

fflush(stdin);

gotoloop;

printf(z,\n按隨意鍵返回.....〃);

voidluru()

inti,m;

FTLE*fp;

printf(〃請輸入學(xué)生人數(shù):〃);

scanf(〃%d〃,&m);

if(m>1000|m<0){printf(〃\n錯誤\n\n");return;}

else

for(i=0;i<m;i++)

{printfC\n請輸入第%d位學(xué)生的成果:\n〃,i+1);

printf("班級:”);

scanf("%s〃,stu[i].class_0);

printf(〃學(xué)號:〃);

scanf(飛s〃,stu[i].num);

printf(〃姓名:〃);

scanf(〃%s〃,stu[i].name);

printf(〃高等數(shù)學(xué)成果:〃);

scanf(〃%f〃,&stu[i].math);

printfCC程序設(shè)計成果:〃);

scanf(z,%fz/,&stu[i].cprog);

printf(〃高校英語成果:〃);

scanfeng);

printf(〃馬克思主義政治經(jīng)濟(jì)學(xué)成果:〃);

scanf(zz%fz/,&stu[i].polity);

printf(〃高校體育成果:〃);

scanf.sport);

stu[i].ave=(stu[i].c_prog+stu[i].eng+stu[i].math+stu[i].

polity+stu

[i].sport)/5;

fp二fopen("stud.c〃,〃w〃);

for(i=0;i<m;i++)

if(fwritesizeof(struct

student),1,fp)!=1)

printfC\n打開文件失敗\n\n\n〃);

fclose(fp);

fp二fopen("stud.c〃,〃r〃);

printf(〃\n已錄入的學(xué)生成果:\n〃);

printf(〃\n班級學(xué)號姓名高等數(shù)學(xué)C程序設(shè)計高

校英語馬克思主義經(jīng)濟(jì)學(xué)高校體育平均分\。〃);

for(i=0;i<m;i++)

{fread(&stu[i],sizeof(structstudent),1,fp);

printf(,z\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-

6.2f\n〃,stu[i].class0,

stu[i],num,stu[i].name,stu[i].math,stu[i].c_prog,stu[i].

eng,

stu[i].polity,stu[i].sport,stu[i].ave);

fclose(fp);

getchar();

voidpaixu()

loop:

printf(-\t=================l,平均成果排序

printf(〃\t=========2,高數(shù)成果排序

printf(,z\t=================3,C語言成果排序

printf(z,\t=================4,英語成果排序

printf(〃\t=========5,馬克思經(jīng)濟(jì)學(xué)成果排序

=====\n〃);

printf(/z\t=================6,高校體育成果排序

\nO;

printf(〃\t=========7,學(xué)號排序

==========\n〃);

printf(〃請輸入你的選擇\n〃);

intt;

scanf(〃%d〃,&t);

FILE*fp;intx,y,z;structstudenttemp;

if((fp=fopen(z,stud.c〃,〃r〃))二二NULL)

{printf(z,\n無法打開文件\n\n\n〃);return;)

for(x=0;fread(&stu[x],sizeof(struct

student),1,fp)!=0;x++)

printf("\n");

fclose(fp);

z=x;

for(x=O;x<z;x++)

for(y=x+l;y<z;y++)

if(stu[x].ave<stu[y].ave)

{temp=stu[x];

stu[x]=stu[y];

stu[y]=temp;

printf(〃\n排序后的數(shù)據(jù):\n〃);

printf(〃\n班級學(xué)號姓名高等數(shù)學(xué)C程序設(shè)計高

校英語馬克思主義經(jīng)濟(jì)學(xué)高校體育平均分\n〃);

fp二fopen("stud.c〃,〃w〃);

for(x=0;x<z;x++)

{fwrite(&stu[x],sizeof(structstudent),1,fp);

printf(,z\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-

6.2f\n,/,stu[x].class_0,

stu[x].num,stu[x].name,stu[x].math,stu[x].c_prog,stu[x].

eng,

stu[x].polity,stu[x].sport,stu[x].ave);

printf('\n");getchar();

fclose(fp);

return;

elseif(t=2)

FILE*fp;intx,y,z;structstudent

gaoshu;

if((fp=fopen("stud.c〃,"r"))=二NULL)

{printf(/z\n無法打開文件\n\n\n〃);return;)

for(x=0;fread(&stu[x],sizeof(struct

student),1,fp)!=0;x++)

printf(〃\n〃);

fclose(fp);

z二x;

for(x=0;x<z;x++)

for(y=x+l;y<z;y++)

if(stu[x].math<stu[y].math)

{gaoshu=stu[x];

stu[x]=stu[y];

stu[y]=gaoshu;

printf(〃\n排序后的數(shù)據(jù):\n〃);

printf(〃\n班級學(xué)號姓名高等數(shù)學(xué)\n〃);

fp二fopen("stud,c","w〃);

for(x=0;x<z;x++)

{fwrite(&stu[x],sizeof(structstudent),1,fp);

printf(,z\n%-6s%-6s%-6s%-9.2f\n〃,stu[x],class_0,

stu[x].num,stu[x].name,stu[x].math);

printf(〃\n");getchar();

fclose(fp);

return;

elseif(t=3)

FILE*fp;intx,y,z;structstudent

yuyan;

if((fp=fopenCstud,c","rO)==NULL)

{printf(,z\n無法打開文件\n\n\n〃);return;}

for(x=0;fread(&stu[x],sizeof(struct

student),1,fp)!=0;x4-+)

printf(〃\n〃);

fclose(fp);

z=x;

for(x=0;x<z;x++)

for(y=x+1;y<z;y++)

if(stu[x].c_prog<stu[y].c_prog)

{yuyan=stu[x];

stu[x]=stu[y];

stu[y]=yuyan;

printf(〃\n排序后的數(shù)據(jù):\n〃);

printf(〃\n班級學(xué)號姓名C語言\n〃);

fp=fopen(z/stud.c〃,〃w〃);

for(x=0;x〈z;x++)

{fwrite(&stu[x],sizeof(structstudent),1,fp);

printf(,z\n%-6s%-6s%-6s%-9.2f\n,z,stu[x].class0,

stu[x].num,stu[x].name,stu[x].c_prog);

printf(〃\n〃);getchar();

fclose(fp);

return;

elseif(t=4)

FILE*fp;intx,y,z;structstudent

ying;

if((fp二fopen("stud.c〃,)=NULL)

{printf(z,\n無法打開文件\n\n\n〃);return;}

for(x=0;fread(&stu[x],sizeof(struct

student),1,fp)!=0;x")

printf(〃\n〃);

fclose(fp);

z二x;

for(x=0;x<z;x++)

for(y=x+l;y<z;y++)

if(stu[x].eng<stu[y].eng)

{ying=stu[x];

stu[x]=stu[y];

stu[y]=ying;

printf(〃\n排序后的數(shù)據(jù):\n〃);

printf(〃\n班級學(xué)號姓名英語\n〃);

fp二fopen(〃stud.c〃,〃w〃);

for(x=O;x<z;x++)

{fwrite(&stu[x],sizeof(structstudent),1,fp);

printf(z,\n%-6s%-6s%-6s%-9.2f\nzz,stu[x].class_O,

stu[x].num,stu[x].name,stu[x].eng);

printf(〃\n");getchar();

fclose(fp);

return;

elseif(t=5)

FILE*fp;intx,y,z;structstudent

makesi;

if((fp=fopen("stud.c〃,〃r〃))二二NULL)

{printf(z,\n無法打開文件\n\n\n〃);return;)

for(x=0;fread(&stu[x],sizeof(struct

student),1,fp)!=0;x++)

printf("\n");

fclose(fp);

z=x;

for(x=0;x<z;x++)

for(y=x+l;y<z;y++)

if(stu[x].polity<stu[y].polity)

{makesi=stu[x];

stu[x]=stu[y];

stu[y]=makesi;

printf(〃\n排序后的數(shù)據(jù):\n〃);

printf(〃\n班級學(xué)號姓名馬克思經(jīng)濟(jì)學(xué)\n〃);

fp=fopen(/zstud.c〃,〃w〃);

for(x=0;x<z;x++)

{fwrite(&stu[x],sizeof(structstudent),1,fp);

printf(z,\n%-6s%-6s%-6s%-9.2f\n〃,stu[x].class_0,

stu[x].num,stu[x].name,stu[x].polity);

printf(〃\n〃);getchar();

fclose(fp);

return;

elseif(t=6)

FILE*fp;intx,y,z;structstudent

tiyu;

if((fp=fopenCstud.c","r"))=NULL)

{printf(z/\n無法打開文件\n\n\n〃);return;}

for(x=0;fread(&stu[x],sizeof(struct

student),1,fp)!=0;x++)

printf(〃\n");

fclose(fp);

z=x;

for(x=0;x〈z;x++)

for(y=x+l;y<z;y++)

if(stu[x].sport<stu[y].sport)

{tiyu=stu[x];

stu[x]=stu[y];

stu[y]=tiyu;

printf(〃\n排序后的數(shù)據(jù):\n〃);

printf(〃\n班級學(xué)號姓名高校體育\n〃);

fp=fopen(〃stud.c","w〃);

for(x=0;x<z;x++)

{fwrite

溫馨提示

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

評論

0/150

提交評論