




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧師范高等??茖W(xué)?!督Y(jié)晶化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 工程項(xiàng)目投資監(jiān)理的合理化意見
- 耐火澆注料施工方案
- 廣東省廣州市2024-2025學(xué)年高二(上)期末生物試卷(含解析)
- 掛梯施工方案
- consul 節(jié)點(diǎn)查詢、服務(wù)提出和節(jié)點(diǎn)驅(qū)逐的命令
- chatbi落地應(yīng)用實(shí)例
- can電路的寄生電容
- ards肺保護(hù)通氣策略講課后點(diǎn)評(píng)
- 架空光纜 施工方案
- 2025年常州機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)參考答案
- 2024年四川大學(xué)華西醫(yī)院招聘考試真題
- 2025年安徽衛(wèi)生健康職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案1套
- 《澳大利亞》導(dǎo)學(xué)案
- 2025年寧夏工商職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 2025四川省安全員A證考試題庫(kù)附答案
- 2025年高考語(yǔ)文備考訓(xùn)練之社會(huì)現(xiàn)象:“數(shù)字囤積癥”
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)帶答案
- 蘇教版三年級(jí)科學(xué)下冊(cè)第一單元第3課《植物開花了》課件
- 休閑海島開發(fā)策劃方案
- DB36-T 2097-2024 固定資產(chǎn)投資項(xiàng)目節(jié)能報(bào)告編制規(guī)范
評(píng)論
0/150
提交評(píng)論