c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)-學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)-學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)-學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)-學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)大作業(yè)-學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)科學(xué)學(xué)院計(jì)算機(jī)科學(xué)與應(yīng)用系c程序設(shè)計(jì)報(bào)告

成績(jī)管理系統(tǒng)設(shè)計(jì)

學(xué)生姓名:**

學(xué)號(hào):1004681082

班級(jí):計(jì)科102

指導(dǎo)老師:**

報(bào)告日期:2011-02-16

1.題目與要求

1)問題提出

本人計(jì)劃編寫一個(gè)學(xué)生信息管理系統(tǒng),主要用來管理學(xué)生基本信息及成績(jī)信息。

2)本系統(tǒng)涉及的知識(shí)點(diǎn)

單鏈表、結(jié)構(gòu)體、函數(shù)、循環(huán)、指針、選擇

3)功能要求

(1)建立學(xué)生信息,每個(gè)學(xué)生的信息包括:學(xué)號(hào)、姓名、成績(jī)。

(2)求出每個(gè)學(xué)生的總分和平均分。

(3)查找:根據(jù)學(xué)號(hào)、姓名、成績(jī)、總分、平均分中任一項(xiàng)查詢?cè)撋幕拘畔ⅰ?/p>

(4)排序:根據(jù)學(xué)號(hào)或總分將學(xué)生的信息按照一定的順序進(jìn)行排序。

(5)根據(jù)需要修改學(xué)生的基本信息。

(6)根據(jù)實(shí)際情況刪除某生的信息。

(7)根據(jù)實(shí)際情況插入某生的信息。

(8)輸出。

2.功能設(shè)計(jì)

1)算法設(shè)計(jì)

(1)利用switch語(yǔ)句設(shè)計(jì)如圖所示的主菜單。

請(qǐng)輸入選項(xiàng)編號(hào)

1——查找

2—排序

3——學(xué)生信息的修改

4——鏈表的刪除

5——鏈表的插入

6------鏈表的輸出

7——退出

圖1學(xué)生信息管理系統(tǒng)主菜單

(2)選擇1后,調(diào)用查找函數(shù)search,進(jìn)入查找函數(shù)后利用switch語(yǔ)句實(shí)現(xiàn)如圖所示的查找子菜單。

該菜單中每個(gè)選項(xiàng)調(diào)用一個(gè)函數(shù)(除選項(xiàng)10外)。

查找菜單

請(qǐng)輸入選項(xiàng)編號(hào)

1——按學(xué)號(hào)查找

2——按姓名查找

3——按C語(yǔ)言分?jǐn)?shù)查找

4——按高數(shù)分?jǐn)?shù)查找

5——按英語(yǔ)分?jǐn)?shù)查找

6——按總分查找

7——按平均分查找

8——總分前三名

9——不及格者

10—班級(jí)成績(jī)情況

11——退出

圖2查找子菜單

(3)選項(xiàng)2后,調(diào)用排序函數(shù)arrange,進(jìn)入查找函數(shù)后利用switch語(yǔ)句實(shí)現(xiàn)如圖所示的查找子菜單。

該菜單中每個(gè)每個(gè)選項(xiàng)調(diào)用一個(gè)函數(shù)(除3外)。

排序菜單

輸入選項(xiàng)編號(hào)

1——按學(xué)號(hào)排序

2——按總分排序

3——退出

圖3排序子菜單

(4)選擇3后,調(diào)用修改函數(shù)correct,修改某個(gè)學(xué)生的信息。

(5)選擇4后,調(diào)用刪除函數(shù)del,根據(jù)需要?jiǎng)h除某個(gè)學(xué)生的信.息。

(6)選擇5后,調(diào)用插入函數(shù)insert,根據(jù)需要插入某個(gè)學(xué)生的信息。

(7)選擇6后,調(diào)用輸出函數(shù)output,將每個(gè)學(xué)生的信息全部輸出。

(8)選擇7后,退出學(xué)生信息管理系統(tǒng)。

(9)根據(jù)所選菜單編號(hào)編寫相應(yīng)代碼。

(a)函數(shù)welcome:歡迎用戶使用。

(b)函數(shù)about:簡(jiǎn)要介紹本程序。

(c)函數(shù)create:創(chuàng)建單鏈表,采用循環(huán)輸入的方式輸入學(xué)生的基本信息。

(d)函數(shù)SnoSearch:根據(jù)學(xué)號(hào)查找,輸出該生的基本信息。

(e)函數(shù)NameSearch:根據(jù)姓名查找,輸出該生的基本信息。

(f)函數(shù)CYuYanSearch:根據(jù)C語(yǔ)言成績(jī)成績(jī)查找,輸出該生的基本信息。

(g)函數(shù)GaoShuSearch:根據(jù)高數(shù)成績(jī)查找,輸出該生的基本信息。

(h)函數(shù)YingYuSearch:根據(jù)英語(yǔ)成績(jī)查找,輸出該生的基本信息。

(i)函數(shù)ZongFenSearch:根據(jù)總分查找,輸出該生的基本信息。

(j)函數(shù)AverageSearch:根據(jù)平均分查找,輸出該生的基本信息。

(k)函數(shù)QSMSearch:查看班級(jí)前三名學(xué)生信息情況。

(1)函數(shù)BuJiGeSearch:查看班級(jí)不及格學(xué)生信息情況。

成績(jī)菜單

輸入選項(xiàng)編號(hào)

1——C語(yǔ)言不及格者

2——高數(shù)不及格者

3——英語(yǔ)不及格者

4——不及格者

5——全不及格者

6——退出

圖4成績(jī)子菜單

(m)函數(shù)ClassScore:查看班級(jí)成績(jī)平均分整體情況。

(n)函數(shù)SnoArrange:按照學(xué)號(hào)將學(xué)生信息進(jìn)行排序。

(o)函數(shù)ZongFenArrange:按照總分將學(xué)生信息進(jìn)行排序。

(n)函數(shù)over:感謝用戶使用。

2)畫模塊圖

圖5成績(jī)管理系統(tǒng)模塊圖

3)畫部分模塊的流程圖

圖6creat函數(shù)流程圖

圖7SnoSearch函數(shù)流程圖

圖8NameSearch函數(shù)流程圖

開始

圖9QSMSearch函數(shù)流程圖

N

i=0

v

i++

圖10del函數(shù)流程圖

3.程序代碼設(shè)計(jì)

l.main函數(shù):

(1)函數(shù)原型:voidmain。

(2)功能:分別調(diào)用welcome函數(shù)、about函數(shù)、create函數(shù)、search函數(shù)、del函數(shù)、insert函數(shù)、output

函數(shù)和over函數(shù)。

(3)變量及類型:

intm,n;//switch選擇變量

(4)說明:main函數(shù)中用到system("cls"),其作用是清除屏幕上的文字。

2.welcome函數(shù):

(1)函數(shù)原型:voidwelcome。

(2)功能:顯示歡迎用戶使用界面。

(3)說明:getchar()函數(shù)用于使屏幕停止,按下Enter鍵后再執(zhí)行下面程序。

3.about函數(shù):

(1)函數(shù)原型:voidabout()

(2)功能:簡(jiǎn)要介紹本程序。

(3)說明:getchar()函數(shù)用于使屏幕停止,按下Enter鍵后再執(zhí)行下面程序。

4.create函數(shù):

(1)函數(shù)原型:voidcreate()

(2)功能:利用單鏈表、while循環(huán)和scanf函數(shù)完成對(duì)學(xué)生信息的輸入(學(xué)號(hào)、姓名、三門成績(jī)),

并計(jì)算出總分和平均分,再存入單鏈表中。

(3)變量及類型:

inta=0;〃判斷學(xué)生信息輸入是否結(jié)束(學(xué)號(hào)是否為0)

structstudent*p,*pnew;〃結(jié)構(gòu)體指針指向結(jié)點(diǎn)

(4)說明:學(xué)生的人數(shù)不受限制,輸入結(jié)束符號(hào)即可。

5.search函數(shù):

(1)函數(shù)原型:voidsearch()

(2)功能:通過選項(xiàng)來選擇調(diào)用不同函數(shù),完成不同的功能。

(3)變量及類型:

intm,n;//switch選擇變量

6.SnoSearch函數(shù):

(1)函數(shù)原型:voidSnoSearch()

(2)功能:通過學(xué)號(hào)來查找該生的基本信息。

(3)變量及類型:

inta,t;〃2用來存儲(chǔ)學(xué)號(hào);t用來計(jì)數(shù),以便跳出循環(huán)

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

7.NameSearch函數(shù):

(1)函數(shù)原型:voidNameSearch。

(2)功能:通過姓名來查找該生的基本信息。

(3)變量及類型:

intk,t,flag;//k用于判斷;t用于計(jì)數(shù);flag起標(biāo)記作用

charb[20];〃數(shù)組b用于存放姓名

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

8.CYuYanSearch函數(shù):

(1)函數(shù)原型:voidCYuYanSearch()

(2)功能:通過C語(yǔ)言成績(jī)來查找該生的基本信息。

(3)變量及類型:

intt,flag;〃t用于計(jì)數(shù);flag起標(biāo)記作用

floata;〃a用于存放C語(yǔ)言成績(jī)

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

9.GaoShuSearch函數(shù):

(1)函數(shù)原型:voidGaoShuSearch()

(2)功能:通過高數(shù)成績(jī)來查找該生的基本信息。

(3)變量及類型:

intt,flag;〃t用于計(jì)數(shù);flag起標(biāo)記作用

floatb;//b用于存放高數(shù)成績(jī)

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

10.YingYuSearch函數(shù):

(1)函數(shù)原型:voidYingYuSearch()

(2)功能:通過英語(yǔ)成績(jī)來查找該生的基本信息。

(3)變量及類型:

intt,flag;〃t用于計(jì)數(shù);flag起標(biāo)記作用

floatc;〃c用于存放英語(yǔ)成績(jī)

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

ll.ZongfenSearch函數(shù):

(1)函數(shù)原型:voidZongfenSearch()

(2)功能:通過總分來查找該生的基本信息。

(3)變量及類型:

intt,flag;〃t用于計(jì)數(shù);flag起標(biāo)記作用

floatd;〃d用于存放總分

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

12.AverageSearch函數(shù):

(1)函數(shù)原型:voidAverageSearch。

(2)功能:通過平均分來查找該生的基本信息。

(3)變量及類型:

intt,flag;〃t用于計(jì)數(shù);flag起標(biāo)記作用

floate;//e用于存放平均分

stnictstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

13.QSMSearch函數(shù):

(1)函數(shù)原型:voidQSMSearch()

(2)功能:顯示前三名的基本信息

(3)變量及類型:

ints=0,r=0,w=0;//s,r,w均用做計(jì)數(shù)

floatt=0,m=0,n=0;//t,m,n均用做記錄最高分

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

14.BuJiGeSearch函數(shù):

(1)函數(shù)原型:voidBuJiGeSearch()

(2)功能:通過switch選擇輸出不及格情況。

(3)變量及類型:

intn,m,r,s,t,k,h,flag;〃n,m為switch選擇變量;r,s,t,k,h用做計(jì)數(shù);flag起標(biāo)記作用

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

15.ClassScore函數(shù):

(1)函數(shù)原型:voidClassScore()

(2)功能:查看班級(jí)成績(jī)的整體情況。

(3)變量及類型:

inti;〃i用于for循環(huán)

floata=0,b=0,c=0,d,e;//a,b,c,d,e均用于中間變量

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

16.arrange函數(shù):

(1)函數(shù)原型:voidarrange()

(2)功能:通過選項(xiàng)來選擇調(diào)用不同函數(shù),完成不同的功能。

(3)變量及類型:

inta,m;//a,m均為switch選擇變量;

17.SnoArrange函數(shù):

(1)函數(shù)原型:voidSnoArrange。

(2)功能:將學(xué)生信息按照學(xué)號(hào)進(jìn)行排序。

(3)變量及類型:

inta,c,i,j;〃a為switch選擇變量;c用于計(jì)數(shù);i,j用于for循環(huán)

structstudent*p,*q,*k,*newp,*newhead;〃指針p,q,k,newp,newhead均用于倉(cāng)ll建新鏈表

18.ZongFenArrange函數(shù):

(1)函數(shù)原型:voidZongFenArrange。

(2)功能:將學(xué)生信息按照總分進(jìn)行排序。

(3)變量及類型:

inta,c,i,j;〃a為switch選擇變量;c用于計(jì)數(shù);i,j用于for循環(huán)

structstudent*p,*q,*k,*newp,*newhead;//指針p,q,k,newp,newhead均用于倉(cāng)U建新鏈表

19.correct函數(shù):

(1)函數(shù)原型:voidcorrect()

(2)功能:修改某生的信息。

(3)變量及類型:

intt,a,b,m,flag;〃t用于計(jì)數(shù);a用于判斷;b,m為switch選擇變量;flag起標(biāo)記作用

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

20.de1函數(shù):

(1)函數(shù)原型:voiddel()

(2)功能:刪除單鏈表中某生的基本信息。

(3)變量及類型:

inta,n,i,j;〃a存放要?jiǎng)h除的結(jié)點(diǎn);n為switch選擇變量;i,j用于for循環(huán)

structstudent*p;〃指針p用于指向頭結(jié)點(diǎn)

21.insert函數(shù):

(1)函數(shù)原型:voidinsert()

(2)功能:將某生的基本信息插入單鏈表中。

(3)變量及類型:

inta,n,i,j;〃a存放要插入的結(jié)點(diǎn);n為switch選擇變量;i,j用于for循環(huán)

structstudent*p,*q;〃指針p用于指向頭結(jié)點(diǎn);指針q用于指向新生信息的結(jié)點(diǎn)

22.output函數(shù):

(1)函數(shù)原型:voidoutput。

(2)功能:輸出每個(gè)學(xué)生的基本信息。

(3)變量及類型:

ints=0;//s用于計(jì)數(shù)

structstudent*p〃指針p用于指向頭結(jié)點(diǎn)

23.over函數(shù):

(1)函數(shù)原型:voidover()

(2)功能:顯示感謝用戶使用界面。

4.C程序設(shè)計(jì)總結(jié)

(1)程序調(diào)試情況

在編寫完程序后,執(zhí)行時(shí)總會(huì)出現(xiàn)很多錯(cuò)誤,便又重新檢查程序,改寫程序,再經(jīng)過不斷的調(diào)試,

最終將程序改寫完成。

(2)本人在程序中的感想

程序在編寫時(shí)總是感覺非常難,而且還會(huì)出現(xiàn)很多小錯(cuò)誤,從而導(dǎo)致出很多麻煩,最終經(jīng)過耐心

檢查,才將問題解決。

5.結(jié)束語(yǔ)

由于本人完成此程序是在家中完成,又無(wú)網(wǎng)絡(luò)可以查詢,故只能參考課本,在本人的獨(dú)立下完成此

程序,在此須感謝白燕老師。

6.參考文獻(xiàn)

[1]尹業(yè)安白燕.C語(yǔ)言程序設(shè)計(jì).國(guó)防科技大學(xué)出版社,2008.8

7.附錄:程序清單

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

voidwelcome();

voidabout();

voidcreate();

voidsearch();

voidSnoSearch();

voidNameSearch();

voidCYuYanSearch();

voidGaoShuSearch();

voidYingYuSearch();

voidZongFenSearch();

voidAverageSearch();

voidQSMSearch();

voidBuJiGeSearch();

voidClassScore();

voidarrange();

voidSnoArrange();

voidZongFenArrange();

voidcorrect();

voiddel();

voidinsert();

voidoutput();

voidover();

structstudent

(

intsno;

charname[20J;

floatscore1;

floatscore2;

floatscore3;

floatscore;

doubleavg;

structstudent*next;

);

structstudent*head;

intnum=O;

voidmain()

(

intm,n;

welcome();

about();

system(ucls");

create();

system(,'clsH);

Z:printf("l——查找\n”);

printf(M2——排序\n");

printf(M3——學(xué)生信息的修改\n");

printf(M4——鏈表的刪除\n");

printf(n5——鏈表的插入\n”);

printf(n6——鏈表的輸出\n“);

printf(n7——退出\n)

scanf(H%d",&n);

switch(n)

(

case1:

system(,'clsM);

search();

system(“cls");

gotoZ;

case2:

system(“cls");

arrange();

system("clsn);

gotoZ;

case3:

system("clsH);

coiTect();

systemC'cls");

gotoZ;

case4:

systemC'cls");

del();

systemC'cls");

gotoZ;

case5:

systemC^ls");

insert();

system(nclsn);

gotoZ;

case6:

system("cls");

output();

system(nclsn);

gotoZ;

case7:

systemC'cls");

F:printf("你真的想退出嗎\n1——是2——否\n");

scanf(n%d'\&m);

switch(m)

(

case1:

break;

case2:

gotoZ;

default:

system(uclsH);

printf("你的輸入有誤\n");

gotoF;

)

break;

default:

systemC^ls");

printf("你的輸入有誤\n)

gotoZ;

)

system(Hcls");

over();

)

voidwelcome()

printf('^\n\n\n'^);

printf(M[]---------------------------------------------------------------[J\n");

printf(MII---------------------------------------------------------------ll\n");

printf(nII歡迎使用IKn");

printf("IIll\nn);

printf("IIll\nH);

printf(nII學(xué)生成績(jī)管理系統(tǒng)ll\n");

printf(MIIll\nM);

printf("IIll\nH);

printfC,IIll\nn);

printf(MII制作人:**ll\n");

printf("II指導(dǎo)老師:**ll\n");

printf.IIll\nn);

nrintffnII||\nny

printf("[]---------------------------------------------------------------[]\n");

getchar();

voidabout()

(

systemC'cls1');

printf(M\n\n\nn);

printf(M\t\t\t關(guān)于學(xué)生管理系統(tǒng)的說明\n\n\n");

printf("本程序采用鏈表和函數(shù)編寫完成,主要功能有查找,鏈表的刪除,鏈表的插入和鏈表的輸出An”);

printf("程序中主要運(yùn)用鏈表部分和函數(shù)的知識(shí).程序優(yōu)點(diǎn)是:學(xué)生人數(shù)可以根據(jù)實(shí)際情況進(jìn)行更改;\n缺點(diǎn)是:部分程序

過于復(fù)雜,程序功能不太齊全;)

printf("本程序已經(jīng)經(jīng)過多次測(cè)試,尚未出現(xiàn)問題.\n\n若在使用中出現(xiàn)錯(cuò)誤,還請(qǐng)諒解!)

getchar();

voidcreate()

inta=0;

structstudent*p,*pnew;

head=pnew=p=(structstudent*)malloc(sizeof(structstudent));

printf("請(qǐng)依次輸入每位同學(xué)的學(xué)號(hào),姓名和3門成績(jī),按0鍵結(jié)束\n)

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)\n”);

scanf("%d%s%f%f%f",&pnew->sno,pnew->name,&pnew->scorel,&pnew->score2,&pnew->score3);

pnew->score=pnew->score1+pnew->score2+pnew->score3;

pnew->avg=pnew->score/3.0;

pnew->avg=(double)((int)(pnew->avg*100)*0.01);

while(l)

(

num++;

p->next=pnew;

p=pnew;

pnew=(structstudent*)malloc(sizeof(structstudent));

scanf("%dM,&pnew->sno);

if(a==pnew->sno)

break;

scanf(',%s%f%f%f",pnew->name,&pnew->scorel,&pnew->score2,&pnew->score3);

pnew->score=pnew->score1+pnew->score2+pnew->score3;

pnew->avg=pnew->score/3.0;

pnew->avg=(double)((int)(pnew->avg*100)*0.01);

)

p->next=NULL;

)

voidsearch()

(

intm,n;

A:printf("l——按學(xué)號(hào)查找\n");

printf("2——按姓名查找\n");

printf("3——按C語(yǔ)言分?jǐn)?shù)查找\n");

printf("4——按高數(shù)分?jǐn)?shù)查找\n");

printf("5------按英語(yǔ)分?jǐn)?shù)查找\n");

printf(M6------按總分查找\n");

printfC7——按平均分查找\n”);

printf(H8——總分前三名\n)

printf(n9——不及格者W”);

printf("l0——班級(jí)成績(jī)情況\n");

printfC'll——退出\n");

scanf("%d”,&n);

switch(n)

(

case1:

SnoSearch();

gotoA;

case2:

NameSearch();

gotoA;

case3:

CYuYanSearch();

gotoA;

case4:

GaoShuSearch();

gotoA;

case5:

YingYuSearch();

gotoA;

case6:

ZongFenSearch();

gotoA;

case7:

AverageSearch();

gotoA;

case8:

QSMSearch();

gotoA;

case9:

BuJiGeSearch();

gotoA;

case10:

ClassScore();

gotoA;

case11:

system(ncls");

D:printf("你真的想退出嗎\n1——是2——否5");

scanf(n%d'\&m);

switch(m)

(

case1:

break;

case2:

gotoA;

default:

system(ucls");

printf(“你的輸入有誤\n)

gotoD;

}

break;

default:

system(nclsn);

printf("你的輸入有誤\n");

gotoA;

)

)

voidSnoSearch()

(

inta,t;

structstudent*p;

system(uclsn);

printf("請(qǐng)輸入學(xué)號(hào):“);

S:scanf(n%d'\&a);

t=0;p=head;

printf(M\n學(xué)號(hào)為%d的成績(jī)?nèi)缦?\n”,a);

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n)

while(l)

(

t++;

if(t==num+l)

(

system(,'clsH);

printf("你輸入的學(xué)號(hào)有誤\n請(qǐng)重新輸入學(xué)號(hào):");

gotoS;

)

if(a==p->sno)

(

printf(n%d%s%.2f

%.2f%.2f%.2f%.21f\n",p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

break;

)

p=p->next;

)

printf(n\n\n\nM);

)

voidNameSearch()

(

intk,t,flag;

charb[20];

structstudent*p;

system(ucls");

printf(”請(qǐng)輸入姓名:“);

T:scanf(H%s",b);

t=O;flag=O;p=head;

printf("\n姓名為%s的成績(jī)?nèi)缦?\n”,b);

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n“);

while(l)

t++;

if(t==num+l)

if(flag==O)

(

system(nclsu);

printf(”你輸入的姓名有誤\n請(qǐng)重新輸入姓名:");

gotoT;

)

else

break;

)

k=strcmp(p->name,b);

if(k==0)

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\nu,p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

I

printf(n\n\n\n");

}

voidCYuYanSearch()

(

intt,flag;

floata;

structstudent*p;

system(',cls,');

printf("請(qǐng)輸入C語(yǔ)言成績(jī):");

U:scanf("%f",&a);

l=0;flag=0;p=head;

printf("\nC語(yǔ)言成績(jī)?yōu)椋?2f的成績(jī)?nèi)缦掳薾",a);

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的C語(yǔ)言成績(jī)有誤\n請(qǐng)重新輸入C語(yǔ)言成績(jī):");

gotoU;

}

else

break;

)

if(a==p->scoreI)

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\nu,p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

I

printf(n\n\n\n");

}

voidGaoShuSearch()

(

intt,flag;

floatb;

structstudent*p;

system(',cls,');

printf(”請(qǐng)輸入高數(shù)成績(jī):");

V:scanf(”%f”,&b);

t=0;flag=0;p=head;

printf("\n高數(shù)成績(jī)?yōu)椋?2f的成績(jī)?nèi)缦?\n",b);

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的高數(shù)成績(jī)有誤\n請(qǐng)重新輸入高數(shù)成績(jī):");

gotoV;

}

else

break;

)

if(b==p->score2)

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\nu,p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

I

printf(n\n\n\n");

}

voidYingYuSearch()

(

intt,flag;

floatc;

structstudent*p;

system(',cls,');

printf("請(qǐng)輸入英語(yǔ)成績(jī)

W:scanf(n%f',&c);

t=0;flag=0;p=head;

printf(M\n英語(yǔ)成績(jī)?yōu)椋?2f的成績(jī)?nèi)缦?\n”,c);

printf。學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的英語(yǔ)成績(jī)有誤\n請(qǐng)重新輸入英語(yǔ)成績(jī):");

gotoW;

}

else

break;

)

if(c==p->score3)

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\nu,p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

I

printf(n\n\n\n");

}

voidZongFenSearch()

(

intt,flag;

floatd;

structstudent*p;

system(',cls,');

printf(”請(qǐng)輸入總分成績(jī)

X:scanf(”%f”,&d);

t=0;flag=0;p=head;

printf(M\n總分成績(jī)?yōu)椋?2f的成績(jī)?nèi)缦?\n”,d);

printf(”學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的總分成績(jī)有誤\n請(qǐng)重新輸入總分成績(jī):");

gotoX;

)

else

break;

)

if(d==p->score)

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\n",p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

I

printf(n\n\n\n");

}

voidAverageSearch()

(

intt,flag;

doublee;

structstudent*p;

system(',cls,');

printf(”請(qǐng)輸入平均分成績(jī):");

Y:scanf(”%lf”,&e);

t=0;flag=0;p=head;

printf(n\n平均分為%.2£的成績(jī)?nèi)缦?\n”,e);

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的平均分成績(jī)有誤坨請(qǐng)重新輸入平均分成績(jī):");

gotoY;

}

else

break;

)

if(e==p->avg)

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\nu,p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

I

printf(n\n\n\n");

}

voidQSMSearch()

(

ints=0,r=0,w=0;

floatt=0,m=0,n=0;

structstudent*p;

p=head;

system(uclsn);

while(s!=num)

(

S++;

if(t<p->score)

t=p->score;

p=p->next;

printf("前三名成績(jī)?nèi)缦?\n)

printfCf學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n”);

p=head;s=O;

while(s!=num)

(

s++;

if(t==p->score)

printf(n%d%s%.2f

%.2f%.2f%.2f%.21f\nu,p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

p=p->next;

)

p=head;

while(r!=num)

(

r++;

if(((m<p->score)&&(p->score<t))!=0)

m=p->score;

p=p->next;

I

p=head;r=O;

while(r!=num)

(

r++;

if(m==p->score)

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\n",p->sno,p->name,p->scoreI,p->score2,p->score3,p->score,p->avg);

p=p->next;

)

p=head;

while(w!=num)

(

w++;

if(((n<p->score)&&(p->score<m))!=0)

n=p->score;

p=p->next;

)

p=head;w=O;

while(w!=num)

(

w++;

if(n==p->score)

printf(M%d%s%.2f

%.2f%.2f%.2f%.21f\n\n\n\nn,p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

p=p->next;

)

)

voidBuJiGeSearch()

(

intn,m,r,s,t,k,h,flag;

structstudent*p;

system(Hcls");

B:printf("l——C語(yǔ)言不及格者\(yùn)n");

printf("2——高數(shù)不及格者\(yùn)n");

printf("3——英語(yǔ)不及格者\(yùn)n");

printf("4——不及格者小");

printf("5——全不及格者\(yùn)n");

printf("6——退出\n");

r=O;s=O;t=O;k=O;h=O;flag=O;p=head;

scanf("%d",&n);

switch(n)

(

case1:

system("cls");

printf("C語(yǔ)言不及格者:\n");

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n");

while(r!=num)

(

r++;

if(p->score1<60)

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\n\n",p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

)

if(flag==O)

printf(HC語(yǔ)言全部及格\n");

printf(n\n\n\nu);

gotoB;

case2:

system(nclsn);

printf("高數(shù)不及格者:\n");

printfC*學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n)

while(s!=num)

(

s++;

if(p->score2<60)

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\n\n'\p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

)

if(flag==0)

printf("高數(shù)全部及格\n");

printf(M\n\n\nu);

gotoB;

case3:

systemC'cls");

printf("英語(yǔ)不及格者:\n");

printf("學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n)

while(t!=num)

t++;

if(p->score3<60)

(

flag=l;

printf(H%d%s%.2f

,

%.2f%.2f%.2f%.21f\n\n',p->sno>p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

)

if(flag==O)

printf("英語(yǔ)全部及格\n“);

printf(n\n\n\nu);

gotoB;

case4:

system(nclsn);

printf("不及格者:W”);

printf('(學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n“);

while(k!=num)

(

k++;

if((p->scorel<60)ll(p->score2<60)ll(p->score3<60))

(

flag=l;

printf("%d%s%.2f

%.2f%.2f%.2f%.21f\n\n'\p->sno,p->name,p->scoreI,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

)

if(flag==0)

printf("全部及格n\”);

printf(n\n\n\nH);

gotoB;

case5:

systemC^ls");

printf("全不及格者:\n");

printfC'學(xué)號(hào)姓名C語(yǔ)言高數(shù)英語(yǔ)總分平均分\n");

while(h!=num)

h++;

if((p->scorel<60)&&(p->score2<60)&&(p->score3<60))

(

flag=l;

printf(H%d%s%.2f

%.2f%.2f%.2f%.21f\n\n'\p->sno,p->name,p->scorel,p->score2,p->score3,p->score,p->avg);

)

p=p->next;

)

if(flag==O)

printf("沒有全不及格者\(yùn)n)

printf("沒有全不及格者\(yùn)n\n\n\n");

gotoB;

case6:

systemC'cls");

C:printf("你真的想退出嗎\n1——是2——否\n");

scanf(n%d'\&m);

switch(m)

(

case1:

break;

case2:

system("cls");

gotoB;

default:

system(ucls");

printf("你的輸入有誤\n”);

gotoC;

)

break;

default:

system(nclsn);

printf(“你的輸入有誤\n");

gotoB;

printf('^\n\n\n'^);

)

voidClassScore()

(

inti;

floata=0,b=0,c=0,d,e;

structstudent*p;

p=head;

system(uclsn);

printf("班級(jí)成績(jī)平均分如下:\n");

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

(

a=a+p->scorel;

b=b+p->score2;

c=c+p->score3;

d=a+b+c;

p=p->next;

)

a=a/num;

b=b/num;

c=c/num;

d=d/num;

e=d/3;

printf("語(yǔ)文高數(shù)英語(yǔ)總分平均分\n\n”);

printf(M%.2f%.2f%.2f%.2f%,2f\n\n\n\nM,a,b,c,d,e);

)

voidarrange()

(

inta,m;

M:printf("l——按學(xué)號(hào)排序\n");

printf("2——按總分排序\n");

printfC'3——退出\n");

scanf(n%dn,&a);

switch(a)

(

case1:

systemC'cls");

SnoArrange();

output();

systemC^ls");

gotoM;

case2:

system(Hclsn);

ZongFenArrange();

output();

system("cls");

gotoM;

case3:

system(ncls");

L:printf("你真的想退出嗎\n1——是2——否\n“);

scanf(H%dH,&m);

switch(m)

(

case1:

break;

case2:

system(uclsn);

gotoM;

default:

system(ucls,');

printf("你的輸入有誤\n");

gotoL;

break;

default:

systemC^ls");

printf("你的輸入有誤\n");

gotoM;

)

)

voidSnoArrange()

(

inta,c,ij;

structstudent*p,*q,*k,*newp,*newhead;

printfC*1-----按學(xué)號(hào)從小到大的順序\n");

printf(H2——按學(xué)號(hào)從大到小的順序\n)

printf(n3——退出\n");

scanf(n%d",&a);

switch(a)

(

case1:

system(nclsn);

c=0;

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

(

C++;

p=q=head;

for(j=0;j<num;j++)

(

if(q->sno>p->sno)

q=p;

p=p->next;

)

newp=(structstudent*)malloc(sizeof(structstudent));

if(c==l)

newhead=k=newp;

else

(

k->next=newp;

k=k->next;

newp->sno=q->sno;

strcpy(newp->name,q->name);

newp->score1=q->score1;

newp->score2=q->score2;

newp->score3=q->score3;

newp->score=q->score;

newp->avg=q->avg;

q->sno=q->sno+num;

)

k->next=NULL;head=newhead;

system(nclsn);

printf("按學(xué)號(hào)從小到大的順序:\n");

break;

case2:

system("cls");

c=0;

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

(

C++;

p=q=head;

for(j=0;j<num;j++)

(

if(q->sno<p->sno)

q=p;

p=p->next;

)

newp=(structstudent*)malloc(sizeof(structstudent));

if(c==l)

newhead=k=newp;

else

(

k->next=newp;

k=k->next;

}

newp->sno=q->sno;

strcpy(newp->name,q->name);

newp->score1=q->score1;

newp->score2=q->score2;

newp->score3=q->score3;

newp->score=q->score;

newp->avg=q->avg;

q->sno=q->sno-num;

}

k->next=NULL;head=newhead;

system(nclsn);

printf("按學(xué)號(hào)從大到小的順序:\n");

break;

default:

break;

)

)

voidZongFenArrange()

(

inta,c,i,j;

structstudent*p,*q,*k,*newp,*newhead;

printf("1-----按總分從低到高的順序\n");

printf('r2——按總分從高到低的順序\n");

printf('3——退出\n");

scanf("%d'\&a);

switch(a)

(

case1:

systemC'cls");

c=0;

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

(

C++;

p=q=head;

for(j=0;j<num;j++)

if(q->score>p->score)

q=p;

p=p->next;

)

newp=(structstudent*)malloc(sizeof(structstudent));

if(c==l)

newhead=k=newp;

else

(

k->next=newp;

k=k->next;

)

newp->sno=q->sno;

strcpy(newp->name,q->name);

newp->score1=q->score1;

newp->score2=q->score2;

newp->score3=q->score3;

newp->score=q->score;

newp->avg=q->avg;

q->score=q->score+100;

}

k->next=NULL;head=newhead;

system(nclsn);

printf("按總分從低到高的順序:\n");

break;

case2:

systemC'cls");

c=0;

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

(

C++;

p=q=head;

for(j=0;j<num;j+4-)

if(q->score<p->score)

q=p;

p=p->next;

)

newp=(structstudent*)malloc(sizeof(structstudent));

if(c==l)

newhead=k=newp;

else

(

k->next=newp;

k=k->next;

)

newp->sno=q->sno;

strcpy(newp->name,q->name);

newp->score1=q->score1;

newp->score2=q->score2;

newp->score3=q->score3;

newp->score=q->score;

newp->avg=q->avg;

q->score=q->score-100;

}

k->next=NULL;

head=newhead;

system(nclsn);

printf("按總分從高到低的順序:\n)

break;

default:

break;

)

)

voidcorrect()

(

intt,a,b,m,flag;

structstudent*p;

p=head;

printf(”請(qǐng)輸入需要修改信息的學(xué)生的學(xué)號(hào):");

H:scanfC'%d",&a);

t=O;flag=O;p=head;

while(l)

(

if(flag==l)

break;

t++;

if(t==num+l)

(

system("clsn);

printf("\n你輸入的學(xué)號(hào)有誤\n請(qǐng)重新輸入學(xué)號(hào):");

gotoH;

)

if(a==p->sno)

(

flag=l;

I:printf(”\n請(qǐng)選擇你要修改的信息:\nl.學(xué)號(hào)\t2.姓名\t3.C語(yǔ)言V4.高數(shù)\t5.英語(yǔ)\t6.退出\n");

scanf(n%d",&b);

system(HclsH);

switch(b)

(

case1:

printf("原學(xué)號(hào):%d\n",a);

printf('新學(xué)號(hào):”);

scanf(u%dn,&p->sno);

system(nclsu);

printf("修改成功\n");

gotoI;

case2:

printf("原姓名:%s\n',,p->name);

printf(”\n新姓名:”);

scanf(,'%sM,p->name);

system("clsu);

printf("修改成功\n”);

gotoI;

case3:

printf("原C語(yǔ)言成績(jī):%.2f\nH,p->score1);

printf(”\n新C語(yǔ)言成績(jī):");

scanf(u%fn,&p->score1);

printf("修改成功\n”);

system("cls");

gotoI;

case4:

printf(“原高數(shù)成績(jī):%.2f\nM,p->score2);

printf("\n新高數(shù)成績(jī):");

scanf(u%f'\&p->score2);

system("clsH);

prinlf("修改成功\n)

g

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論