c語言程序設計課程設計大作業-學生成績管理系統_第1頁
c語言程序設計課程設計大作業-學生成績管理系統_第2頁
c語言程序設計課程設計大作業-學生成績管理系統_第3頁
c語言程序設計課程設計大作業-學生成績管理系統_第4頁
c語言程序設計課程設計大作業-學生成績管理系統_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

計算機科學學院計算機科學與應用系c程序設計報告

成績管理系統設計

學生姓名:**

學號:1004681082

班級:計科102

指導老師:**

報告日期:2011-02-16

1.題目與要求

1)問題提出

本人計劃編寫一個學生信息管理系統,主要用來管理學生基本信息及成績信息。

2)本系統涉及的知識點

單鏈表、結構體、函數、循環、指針、選擇

3)功能要求

(1)建立學生信息,每個學生的信息包括:學號、姓名、成績。

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

(3)查找:根據學號、姓名、成績、總分、平均分中任一項查詢該生的基本信息。

(4)排序:根據學號或總分將學生的信息按照一定的順序進行排序。

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

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

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

(8)輸出。

2.功能設計

1)算法設計

(1)利用switch語句設計如圖所示的主菜單。

請輸入選項編號

1——查找

2—排序

3——學生信息的修改

4——鏈表的刪除

5——鏈表的插入

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

7——退出

圖1學生信息管理系統主菜單

(2)選擇1后,調用查找函數search,進入查找函數后利用switch語句實現如圖所示的查找子菜單。

該菜單中每個選項調用一個函數(除選項10外)。

查找菜單

請輸入選項編號

1——按學號查找

2——按姓名查找

3——按C語言分數查找

4——按高數分數查找

5——按英語分數查找

6——按總分查找

7——按平均分查找

8——總分前三名

9——不及格者

10—班級成績情況

11——退出

圖2查找子菜單

(3)選項2后,調用排序函數arrange,進入查找函數后利用switch語句實現如圖所示的查找子菜單。

該菜單中每個每個選項調用一個函數(除3外)。

排序菜單

輸入選項編號

1——按學號排序

2——按總分排序

3——退出

圖3排序子菜單

(4)選擇3后,調用修改函數correct,修改某個學生的信息。

(5)選擇4后,調用刪除函數del,根據需要刪除某個學生的信.息。

(6)選擇5后,調用插入函數insert,根據需要插入某個學生的信息。

(7)選擇6后,調用輸出函數output,將每個學生的信息全部輸出。

(8)選擇7后,退出學生信息管理系統。

(9)根據所選菜單編號編寫相應代碼。

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

(b)函數about:簡要介紹本程序。

(c)函數create:創建單鏈表,采用循環輸入的方式輸入學生的基本信息。

(d)函數SnoSearch:根據學號查找,輸出該生的基本信息。

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

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

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

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

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

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

(k)函數QSMSearch:查看班級前三名學生信息情況。

(1)函數BuJiGeSearch:查看班級不及格學生信息情況。

成績菜單

輸入選項編號

1——C語言不及格者

2——高數不及格者

3——英語不及格者

4——不及格者

5——全不及格者

6——退出

圖4成績子菜單

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

(n)函數SnoArrange:按照學號將學生信息進行排序。

(o)函數ZongFenArrange:按照總分將學生信息進行排序。

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

2)畫模塊圖

圖5成績管理系統模塊圖

3)畫部分模塊的流程圖

圖6creat函數流程圖

圖7SnoSearch函數流程圖

圖8NameSearch函數流程圖

開始

圖9QSMSearch函數流程圖

N

i=0

v

i++

圖10del函數流程圖

3.程序代碼設計

l.main函數:

(1)函數原型:voidmain。

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

函數和over函數。

(3)變量及類型:

intm,n;//switch選擇變量

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

2.welcome函數:

(1)函數原型:voidwelcome。

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

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

3.about函數:

(1)函數原型:voidabout()

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

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

4.create函數:

(1)函數原型:voidcreate()

(2)功能:利用單鏈表、while循環和scanf函數完成對學生信息的輸入(學號、姓名、三門成績),

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

(3)變量及類型:

inta=0;〃判斷學生信息輸入是否結束(學號是否為0)

structstudent*p,*pnew;〃結構體指針指向結點

(4)說明:學生的人數不受限制,輸入結束符號即可。

5.search函數:

(1)函數原型:voidsearch()

(2)功能:通過選項來選擇調用不同函數,完成不同的功能。

(3)變量及類型:

intm,n;//switch選擇變量

6.SnoSearch函數:

(1)函數原型:voidSnoSearch()

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

(3)變量及類型:

inta,t;〃2用來存儲學號;t用來計數,以便跳出循環

structstudent*p;〃指針p用于指向頭結點

7.NameSearch函數:

(1)函數原型:voidNameSearch。

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

(3)變量及類型:

intk,t,flag;//k用于判斷;t用于計數;flag起標記作用

charb[20];〃數組b用于存放姓名

structstudent*p;〃指針p用于指向頭結點

8.CYuYanSearch函數:

(1)函數原型:voidCYuYanSearch()

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

(3)變量及類型:

intt,flag;〃t用于計數;flag起標記作用

floata;〃a用于存放C語言成績

structstudent*p;〃指針p用于指向頭結點

9.GaoShuSearch函數:

(1)函數原型:voidGaoShuSearch()

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

(3)變量及類型:

intt,flag;〃t用于計數;flag起標記作用

floatb;//b用于存放高數成績

structstudent*p;〃指針p用于指向頭結點

10.YingYuSearch函數:

(1)函數原型:voidYingYuSearch()

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

(3)變量及類型:

intt,flag;〃t用于計數;flag起標記作用

floatc;〃c用于存放英語成績

structstudent*p;〃指針p用于指向頭結點

ll.ZongfenSearch函數:

(1)函數原型:voidZongfenSearch()

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

(3)變量及類型:

intt,flag;〃t用于計數;flag起標記作用

floatd;〃d用于存放總分

structstudent*p;〃指針p用于指向頭結點

12.AverageSearch函數:

(1)函數原型:voidAverageSearch。

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

(3)變量及類型:

intt,flag;〃t用于計數;flag起標記作用

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

stnictstudent*p;〃指針p用于指向頭結點

13.QSMSearch函數:

(1)函數原型:voidQSMSearch()

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

(3)變量及類型:

ints=0,r=0,w=0;//s,r,w均用做計數

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

structstudent*p;〃指針p用于指向頭結點

14.BuJiGeSearch函數:

(1)函數原型:voidBuJiGeSearch()

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

(3)變量及類型:

intn,m,r,s,t,k,h,flag;〃n,m為switch選擇變量;r,s,t,k,h用做計數;flag起標記作用

structstudent*p;〃指針p用于指向頭結點

15.ClassScore函數:

(1)函數原型:voidClassScore()

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

(3)變量及類型:

inti;〃i用于for循環

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

structstudent*p;〃指針p用于指向頭結點

16.arrange函數:

(1)函數原型:voidarrange()

(2)功能:通過選項來選擇調用不同函數,完成不同的功能。

(3)變量及類型:

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

17.SnoArrange函數:

(1)函數原型:voidSnoArrange。

(2)功能:將學生信息按照學號進行排序。

(3)變量及類型:

inta,c,i,j;〃a為switch選擇變量;c用于計數;i,j用于for循環

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

18.ZongFenArrange函數:

(1)函數原型:voidZongFenArrange。

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

(3)變量及類型:

inta,c,i,j;〃a為switch選擇變量;c用于計數;i,j用于for循環

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

19.correct函數:

(1)函數原型:voidcorrect()

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

(3)變量及類型:

intt,a,b,m,flag;〃t用于計數;a用于判斷;b,m為switch選擇變量;flag起標記作用

structstudent*p;〃指針p用于指向頭結點

20.de1函數:

(1)函數原型:voiddel()

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

(3)變量及類型:

inta,n,i,j;〃a存放要刪除的結點;n為switch選擇變量;i,j用于for循環

structstudent*p;〃指針p用于指向頭結點

21.insert函數:

(1)函數原型:voidinsert()

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

(3)變量及類型:

inta,n,i,j;〃a存放要插入的結點;n為switch選擇變量;i,j用于for循環

structstudent*p,*q;〃指針p用于指向頭結點;指針q用于指向新生信息的結點

22.output函數:

(1)函數原型:voidoutput。

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

(3)變量及類型:

ints=0;//s用于計數

structstudent*p〃指針p用于指向頭結點

23.over函數:

(1)函數原型:voidover()

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

4.C程序設計總結

(1)程序調試情況

在編寫完程序后,執行時總會出現很多錯誤,便又重新檢查程序,改寫程序,再經過不斷的調試,

最終將程序改寫完成。

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

程序在編寫時總是感覺非常難,而且還會出現很多小錯誤,從而導致出很多麻煩,最終經過耐心

檢查,才將問題解決。

5.結束語

由于本人完成此程序是在家中完成,又無網絡可以查詢,故只能參考課本,在本人的獨立下完成此

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

6.參考文獻

[1]尹業安白燕.C語言程序設計.國防科技大學出版社,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——學生信息的修改\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學生成績管理系統ll\n");

printf(MIIll\nM);

printf("IIll\nH);

printfC,IIll\nn);

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

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

printf.IIll\nn);

nrintffnII||\nny

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

getchar();

voidabout()

(

systemC'cls1');

printf(M\n\n\nn);

printf(M\t\t\t關于學生管理系統的說明\n\n\n");

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

printf("程序中主要運用鏈表部分和函數的知識.程序優點是:學生人數可以根據實際情況進行更改;\n缺點是:部分程序

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

printf("本程序已經經過多次測試,尚未出現問題.\n\n若在使用中出現錯誤,還請諒解!)

getchar();

voidcreate()

inta=0;

structstudent*p,*pnew;

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

printf("請依次輸入每位同學的學號,姓名和3門成績,按0鍵結束\n)

printf("學號姓名C語言高數英語\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——按學號查找\n");

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

printf("3——按C語言分數查找\n");

printf("4——按高數分數查找\n");

printf("5------按英語分數查找\n");

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

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

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

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

printf("l0——班級成績情況\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("請輸入學號:“);

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

t=0;p=head;

printf(M\n學號為%d的成績如下:\n”,a);

printf("學號姓名C語言高數英語總分平均分\n)

while(l)

(

t++;

if(t==num+l)

(

system(,'clsH);

printf("你輸入的學號有誤\n請重新輸入學號:");

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(”請輸入姓名:“);

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

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

printf("\n姓名為%s的成績如下:\n”,b);

printf("學號姓名C語言高數英語總分平均分\n“);

while(l)

t++;

if(t==num+l)

if(flag==O)

(

system(nclsu);

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

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("請輸入C語言成績:");

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

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

printf("\nC語言成績為%.2f的成績如下八n",a);

printf("學號姓名C語言高數英語總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的C語言成績有誤\n請重新輸入C語言成績:");

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(”請輸入高數成績:");

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

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

printf("\n高數成績為%.2f的成績如下:\n",b);

printf("學號姓名C語言高數英語總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的高數成績有誤\n請重新輸入高數成績:");

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("請輸入英語成績

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

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

printf(M\n英語成績為%.2f的成績如下:\n”,c);

printf。學號姓名C語言高數英語總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

printf("你輸入的英語成績有誤\n請重新輸入英語成績:");

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(”請輸入總分成績

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

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

printf(M\n總分成績為%.2f的成績如下:\n”,d);

printf(”學號姓名C語言高數英語總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

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

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(”請輸入平均分成績:");

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

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

printf(n\n平均分為%.2£的成績如下:\n”,e);

printf("學號姓名C語言高數英語總分平均分\n");

while(l)

t++;

if(t==num+l)

(

if(flag==O)

(

system("cls");

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

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("前三名成績如下:\n)

printfCf學號姓名C語言高數英語總分平均分\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語言不及格者\n");

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

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

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

printf("5——全不及格者\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語言不及格者:\n");

printf("學號姓名C語言高數英語總分平均分\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語言全部及格\n");

printf(n\n\n\nu);

gotoB;

case2:

system(nclsn);

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

printfC*學號姓名C語言高數英語總分平均分\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("高數全部及格\n");

printf(M\n\n\nu);

gotoB;

case3:

systemC'cls");

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

printf("學號姓名C語言高數英語總分平均分\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("英語全部及格\n“);

printf(n\n\n\nu);

gotoB;

case4:

system(nclsn);

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

printf('(學號姓名C語言高數英語總分平均分\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'學號姓名C語言高數英語總分平均分\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("沒有全不及格者\n)

printf("沒有全不及格者\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("班級成績平均分如下:\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("語文高數英語總分平均分\n\n”);

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

)

voidarrange()

(

inta,m;

M:printf("l——按學號排序\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-----按學號從小到大的順序\n");

printf(H2——按學號從大到小的順序\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("按學號從小到大的順序:\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("按學號從大到小的順序:\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(”請輸入需要修改信息的學生的學號:");

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你輸入的學號有誤\n請重新輸入學號:");

gotoH;

)

if(a==p->sno)

(

flag=l;

I:printf(”\n請選擇你要修改的信息:\nl.學號\t2.姓名\t3.C語言V4.高數\t5.英語\t6.退出\n");

scanf(n%d",&b);

system(HclsH);

switch(b)

(

case1:

printf("原學號:%d\n",a);

printf('新學號:”);

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語言成績:%.2f\nH,p->score1);

printf(”\n新C語言成績:");

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

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

system("cls");

gotoI;

case4:

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

printf("\n新高數成績:");

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

system("clsH);

prinlf("修改成功\n)

g

溫馨提示

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

評論

0/150

提交評論