C語(yǔ)言專(zhuān)業(yè)課程設(shè)計(jì)學(xué)生成績(jī)標(biāo)準(zhǔn)管理系統(tǒng)_第1頁(yè)
C語(yǔ)言專(zhuān)業(yè)課程設(shè)計(jì)學(xué)生成績(jī)標(biāo)準(zhǔn)管理系統(tǒng)_第2頁(yè)
C語(yǔ)言專(zhuān)業(yè)課程設(shè)計(jì)學(xué)生成績(jī)標(biāo)準(zhǔn)管理系統(tǒng)_第3頁(yè)
C語(yǔ)言專(zhuān)業(yè)課程設(shè)計(jì)學(xué)生成績(jī)標(biāo)準(zhǔn)管理系統(tǒng)_第4頁(yè)
C語(yǔ)言專(zhuān)業(yè)課程設(shè)計(jì)學(xué)生成績(jī)標(biāo)準(zhǔn)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

信息技術(shù)工程學(xué)院

C語(yǔ)言課程設(shè)計(jì)匯報(bào)

題目:學(xué)生成績(jī)管理系統(tǒng)(算〃龍秋achievement

managementsystem)

目錄

一設(shè)計(jì)目的...................................................................3

二課程設(shè)計(jì)的內(nèi)容............................................................3

三課程設(shè)計(jì)的要求與數(shù)據(jù)......................................................4

四課程設(shè)計(jì)應(yīng)完成的工作......................................................4

五總體設(shè)計(jì)(包含兀大功能模塊).............................................5

六詳細(xì)設(shè)計(jì)...................................................................6

6.1各個(gè)模塊的功能和實(shí)現(xiàn).....................................................6

6.2流程圖....................................................................7

(管理員模式流程圖).........................................................7

(來(lái)賓模式流程圖)...........................................................8

..........................................................................................................................................................8

七調(diào)試分析(各模塊測(cè)試結(jié)果)...............................................9

7.1源代碼...............................................................9

7.2各模塊測(cè)試結(jié)果......................................................31

八總結(jié)......................................................................34

九參考資料.................................................................35

一設(shè)計(jì)目標(biāo)

經(jīng)過(guò)本課程設(shè)計(jì)鞏固《C語(yǔ)言程序設(shè)計(jì)》課程教學(xué)結(jié)果,深

入了解結(jié)構(gòu)體、指針、鏈表、動(dòng)態(tài)分配內(nèi)存和文件操作等c

程序設(shè)計(jì)中中高級(jí)技術(shù),經(jīng)過(guò)課程設(shè)計(jì)綜合訓(xùn)練,培養(yǎng)學(xué)生

實(shí)際分析問(wèn)題、編程和動(dòng)手能力、提升學(xué)生利用C語(yǔ)言進(jìn)行

程序設(shè)計(jì)能力,初步培養(yǎng)良好編程習(xí)慣和編程風(fēng)格,初步學(xué)

習(xí)程序文檔撰寫(xiě)方法。

二課程設(shè)計(jì)內(nèi)容

經(jīng)過(guò)C語(yǔ)言程序系統(tǒng),設(shè)計(jì)一個(gè)能夠?qū)W(xué)生成績(jī)信息進(jìn)行管

理程序,其中學(xué)生信息能夠包含:學(xué)號(hào)、各科目標(biāo)成績(jī)平均

分排序等,其功效能夠包含學(xué)生成績(jī)輸入、輸出、查詢(xún)、排

序、刪除、統(tǒng)計(jì)、退出等。

1)封面扉頁(yè)

2)設(shè)計(jì)任務(wù)書(shū)

3)目錄

4)總體設(shè)計(jì)方案(包含步驟圖)

5)使用說(shuō)明及運(yùn)行實(shí)例(包含界面)

6)組員設(shè)計(jì)內(nèi)容介紹

7)項(xiàng)目源程序代碼(注意注釋使用)

8)指導(dǎo)老師評(píng)語(yǔ)

五總體設(shè)計(jì)(包含幾大功效模塊)

1、成績(jī)錄入功效

2、成績(jī)輸出功效

3、成績(jī)查詢(xún)功效

4、刪除模塊

5、排序功效

6、統(tǒng)計(jì)功效

7、退出系統(tǒng)

六具體設(shè)計(jì)

6.1各個(gè)模塊功效和實(shí)現(xiàn)

(1)整個(gè)成績(jī)管理系統(tǒng)設(shè)計(jì)分為9個(gè)模塊:

L輸入學(xué)生成績(jī)

2,刪除學(xué)生成績(jī)

3.查詢(xún)學(xué)生成績(jī)

4?修改學(xué)生成績(jī)

5?排序?qū)W生成績(jī)

6.保留統(tǒng)計(jì)

7.顯示全部

8.退出系統(tǒng)

9.修改管理員信息

(2)(關(guān)鍵函數(shù)功效)

L主函數(shù)main。:定義學(xué)生結(jié)構(gòu)體數(shù)組,調(diào)用錄入,統(tǒng)計(jì)等

函數(shù)對(duì)成績(jī)表進(jìn)行處理。

2.輸入數(shù)據(jù)函數(shù)input。:輸入學(xué)號(hào)、成績(jī)。

3.排序函數(shù)sort():對(duì)總成績(jī)或平均成績(jī),進(jìn)行排序,按

從高到低或從低到高。

4.顯示數(shù)據(jù)函數(shù)display。:顯示各個(gè)學(xué)生總成績(jī)

5.新增數(shù)據(jù)函數(shù)insert。:增加學(xué)生學(xué)生統(tǒng)計(jì)。

6.刪除數(shù)據(jù)函數(shù)del():因?yàn)槎喾N原因,刪除一些同學(xué)成績(jī)、

學(xué)號(hào)等。

7,平均值函數(shù)average():求各個(gè)同學(xué)總成績(jī)平均值。

8,查詢(xún)數(shù)據(jù)函數(shù)qur():查詢(xún)學(xué)生信息。

9.保留數(shù)據(jù)函數(shù)save。:再一次打開(kāi)界面是,仍有上次所找訊

息。

10.退出系統(tǒng)函數(shù)exit。:當(dāng)要退出整個(gè)系統(tǒng)時(shí)。

6.2步驟圖

(管理員模式步驟圖)

統(tǒng)刪保退

出抨.J4-田

(貴賓模式步驟圖)

退山

程序

7

結(jié)束

七調(diào)試分析(各模塊測(cè)試結(jié)果)

7.1源代碼

#include<stdio.h>

#include<string.h>

#include<time.h>

#include<stdlib.h>

#include<conio.h>

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

#defineFORMAT"%s%s%d%d%d%d%.2f\n"

#defineDATA

p->data.num,p->,p->data.mgrade,p->data.egrade,p->data.cgrade,p->data.total,p->data.

ave

intsaveflag=O;

typedefunsignedshortWORD;

structstudent{

charnum[10];

charname[15];

intmgrade;

integrade;

intcgrade;

inttotal;

floatave;

);

typedefstructnode{

structstudentdata;

structnode*next;

}Node/Link;

voidmenu(){

time_tnow;

now=time(NULL);

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

prinlf("\n");

printf{"

*******************************************************************\n,().

printf("

*\n");

printf("*1輸入成績(jī)2刪除成績(jī)

*\n");

printf("?

*\n");

printff"?3查詢(xún)成績(jī)4修改成績(jī)

*\n");

printf("?

*\n");

printff"?5排序成績(jī)6保留統(tǒng)計(jì)

*\n");

printff"*

*\n");

printff"?7顯示全部0退出系統(tǒng)

*\n");

printff'*

*\n");

printf("

*******************************************************************\n”)?

printf("8切換登錄模式9修改管理員信息

*\n");

printfC,

*******************************************************************\n”)?

prinlf("\n請(qǐng)你選擇操作命令前數(shù)字(0-9):”);

)

intmenu2(){

//intselect;

time_tnow;

now=time(NULL);

system("cls");〃清屏

printf("\n學(xué)生模式

\n\n\n");

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

printf("\n");

printf("

*******************************************************************\n”)?

printf("*

*\n");

printf("*1查詢(xún)成績(jī)2排序成績(jī)

*\n");

printf("*

*\n");

printf("*3顯示全部0退出系統(tǒng)

*\n");

printf("

*\n");

printf("

*******************************************************************\n)?

printf("*4切換登錄模式

*\n");

printf("

printf("\n請(qǐng)你選擇操作命令前數(shù)字(0~4):");

return0;

}

voidprintheader()

(

printf(HEADER2);

)

voidprintdatafNode*pp){

Node*p;

P=PP;

printf(FORMAT,DATA);

}

voidWrong(){

printf("\n\n\n\n************錯(cuò)誤:輸入不正當(dāng)H!*********\a\n”);

getch();

)

voidNofind{){

printf("\n沒(méi)有該學(xué)生!!\n“);

Node*locatefLinkl,charfindmess[],charnameornum[])

Node*r;

if(strcmp(nameornum,"num")==0)

{

r=l->riexl;

while(r)

|

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

returnr;

r=r->next;

)

)

elseif(strcmp(nameornum/"name")==0)

(

r=l->next;

while(r)

(

if(strcmp(r->,findmess)==O)

returnr;

r=r->next;

)

)

return0;

voidstringinput(char*t,intlens,char*notice)

charn[225);

do

(

prinir(nulice);

scanf("%s,n);

if(strlen(n)>lens)

print-超出寬度!!!\n“);

}while(strlen(n)>lens);

strcpy(t,n);

)

intnumberinput(char"notice)

{intt=0;

do

(

printf(notice);

scanf("%d",&t);

if(t>100||t<0)printf("\n分?jǐn)?shù)必需在0r00之間!!!\n");

}while(t>100||t<0);

returnt;

)

voidDisp(Linkl){

Node*p;

system("cls");

p=l->next;

if(!p)

printf("\n現(xiàn)在無(wú)學(xué)生成績(jī)統(tǒng)計(jì)!!\n“);

getch();

return;

)

prinlfC'\n\n");

printheader();

while(p)

{

printdata(p);

p=p->next;〃移至下一個(gè)結(jié)點(diǎn)

)

)

voidAdd(Linkl){

〃printf("增加學(xué)生統(tǒng)計(jì)模塊\n”);

//system("PAUSE");}

Node*p,*r,*s;

charch,flag=0,num[10(

r=l;

system("cls");

Disp(l);〃先打印打經(jīng)有學(xué)生信息

while(r->next!=NULL)

仁r->next;〃將只指針移至鏈表末尾,準(zhǔn)備添加統(tǒng)計(jì)

while(l)〃一次可輸入條統(tǒng)計(jì),直至輸入學(xué)號(hào)我0統(tǒng)計(jì)節(jié)點(diǎn)添加操作

(

s=l->next;

while(l)

stringinput(num,10,“學(xué)號(hào)(按0退出

flag=O;

if(strcmp(num;,O")==O)

return;

b=l->nexl;

while(s)〃查詢(xún)學(xué)號(hào)是否存在,若存在則要求重新輸入

(

if(strcmp(s->data.num/num)==O)

(

flag=l;

treak;

)

s=s->next;

)

if(flag==l)〃遑醒用戶(hù)是否重新輸入

(

getchar[);

printf("=====>學(xué)號(hào)%s已存在,是否重新輸入?(y/n)\a:",num);

scanf("%c",&ch);

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

continue;

else

return;

)

else

break;

)

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

strcpy(p->data.num,num);〃將字符串mun拷貝到p->data.num中

stringinput(p->,15,"name:");

p->data.cgrade=numberinput("c語(yǔ)言[0-100]:");

p->data.mgrade=numberinput("^(^[0-100]:");

p->dald.陽(yáng)ddsnurnginpulC'英語(yǔ)[0-100]:");

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

p->data.ave=(float)(p->data.total/3);

p->next=NULL;

while(r->next!=NULL)

r=r->next;

r->next=p;

saveflag=l;

)

}

voidDel(Linkl){

//printf(“刪除學(xué)生統(tǒng)計(jì)模塊\n“);

//system("PAUSE");

intsei;

Node*p,*r;

charfindmess[20];

if(!l->next)

(

system("cls");

printf(”\n======>暫無(wú)學(xué)生統(tǒng)計(jì)!!\n”);

getch();

return;

)

systemf'cls");

Disp(l);

printf("\n1經(jīng)過(guò)學(xué)號(hào)刪除2經(jīng)過(guò)姓名刪除\n“);

printf("請(qǐng)選擇[1,2D;

scanfC^d'\&sel);

if(sel==l)

(

stringinput(findmess,10,”請(qǐng)輸入學(xué)號(hào):");

p=locate(lzfindmess,"num");

if(P)

(

r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);〃釋放內(nèi)存空間

printf("\n刪除成功!\n“);

saveflag=l;

)

else

Nofind();

}

elseif(sel==2)

(

stringinput(findmess,15J請(qǐng)輸入學(xué)生姓名門(mén);

p=locate(l,findmess/"name");

if(P)

while(r->next!=p)

r=r->ne:<t;

r->next=p->next;

free(p);

printf("\n刪除成功l!\n“);

saveflag=l;

)

else

Nofind();

)

else

Wrong();

getch();

)

voidQur(Linkl){

intselect;

charsearchinput[2O];

Node*p;

system("cls");

if(!l->next)

(

printf("\n暫無(wú)學(xué)生統(tǒng)計(jì)!!\n“);

return;

)

printf("\n>1經(jīng)過(guò)學(xué)號(hào)吞找>2經(jīng)過(guò)姓名查找\n“);

printf("請(qǐng)選擇[廣2]:");

scanf("%d",&select);

if(select==l)

(

stringinput(searchinput,10,”請(qǐng)輸入要查找學(xué)號(hào)廠,);

p=lucdle(l,bedrchiripul,"fiurri");

if(P)

{printheader();

printdata(p);

)

else

Nofind(|;

)

elseif(select==2)

(

stringinput(searchinput,15,“請(qǐng)輸入學(xué)生姓名

p=locatA(l,searchinputz"name");

if(P)

{

printheader();

printdata(p);

)

else

Nofind();

)

else

Wrongf);

system("PAUSE");

)

voidModify(Linkl){

Node*p;

charfindmess[20j

if(!l->next)

(

system("cis");

printf("\n沒(méi)有該學(xué)生統(tǒng)計(jì)!\n“);

getch();

return;

)

system("cls");

printf("修改學(xué)生統(tǒng)計(jì)。;

Disp(l);

stringinput(findmess,10,”請(qǐng)輸入學(xué)號(hào)

p=locate(lzfindmess,"num");

if(P)

(

printf("學(xué)號(hào):%s,\n",p->data.num);

printf("姓名:%s,",p->);

stringinput(p->,15,”輸入新姓名:");

printf("c語(yǔ)言:%d,",p->data.c8rade);

p->data.cgrade=numberinput("c語(yǔ)言

printf("數(shù)學(xué):%d,",p->data.mgrade);

p->data.mgrade=numberinput("S[^[0~100]:");

printf("英語(yǔ):%d,",p->data.egrade);

p->data.egrade=numberinput("5?iS[0~100]:");

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

p->data.ave=(float)(p->data.total)/3;

printf("\n===>修改成功!)

saveflag=l;

)

else

Nofind();

getch();

)

voidSort(Linkl){

LinkII;

Node*p,*rr,*s;

inti=0;

system("cls");

if(l->next==NULL)

(

printf("\n暫無(wú)學(xué)生統(tǒng)計(jì)!\n");

return;

)

ll=(Node*)malloc(sizeof(Node));〃用于倉(cāng)ij建新節(jié)點(diǎn)

ll->next=NULL;

printf("目前狀態(tài):\n“);

Disp(l);

system("PAUSE");

p=l->next;

while(p)

Qu\*******期孝刈3甘******u\..Uluud

fT=3e|)aAes

,(l)ds!Q

T“u\******************************u\”)j】U!」d

(

f;xau<-d=d

f++!

)

(TinN=id同!i|M

fjxau<-|=d

Ijxau<-||=jx9u<-|

(

f;xau<-d=d

(

fS=lX9U<-JJ

fixau<-jj=jxau<-s

}

as|d

fs=ixsu<-jj

(nnN==Jxau<-jj)j!

(

flX9U<-JJ=JJ

)

(iejore;ep<-d=<|e)ore;ep<-)x9u<-jj^^iinN=iD:au<-」」)叫!q/v\

,ll=」」

,TinN=1x3u<-s

feiep<-d=eiep<-s

J((apoN))oazis)3O||euj(+apoN)=s

system("PAUSE");

)

voidSavefLinkl){

〃prmtf("保留模塊\n”|;

//system("PAUSE");

FILE*fp;

Node*p;

intcount=0;

fp=fopen("student.txt',"wb");

p=l->next;

while(p)

(

if(fwrite(p/sizeof(Node),l,fp)==l)

(

p=p->next;

count++;

)

else

break;

)

if(count>0)

(

printf("\n\n\n\n\n保留完成,目前共有%壯名學(xué)生統(tǒng)計(jì)\n",count);

saveflag=O;

)

else

printf("空文件,保留失敗!!\n”);

fclose(fp);〃關(guān)閉文件

getch();

)

intlogin()

(

FILE*fpl/fp2;

intstate;

charstrn20],str2[20],str_z[20],str_m[7];

if((fpl=fopen("admin.txt","rb"))==NULL)

(

printf("本系統(tǒng)無(wú)管理員,請(qǐng)創(chuàng)建!\n\n請(qǐng)輸入管理員賬號(hào):");

scanf("%s",str_z);

printf(”請(qǐng)?jiān)O(shè)置?個(gè)六位數(shù)密碼

fp2=fopen(',admin.txt","wb");

fprintf(fp2,"%s%c",str_z/\n');

fprintf(fp2,"%s%c"/str_m;');

fclose(fp2);

)

fpl=fopen("admin.txt","rb");

fscanf(fplj%s”,strl);

fscanf(fpl,”%s”,str2);

fclose(fpl);

while(l)

printf("請(qǐng)選擇你登錄方法:\n\n");

printf(”l.管理員模式0.貴賓模式\n”);

printf("請(qǐng)選擇:|0~1)");

scanf("%d”,&slale);

if(state==O)

return0;

elseif(state==l)

(

printf("請(qǐng)輸入賬號(hào):");

scanf("%s,str_z);

if(strcmp(strlzstr_z)==0&&strcmp(str2,str_m)==0)

return1;

else

(

printf("賬號(hào)或密碼錯(cuò)誤!!!\a\n");

systemfPAUSE");

systemf'cls");

)

)

else

(

printf("輸入不正當(dāng)!H\a\n");

exit(0);

}

)

)

voidModify_admin()

(

FILE*fp;

char5lr_z[20],blf_fn[7]="";

fp=fopen("admin.t:<t"/"wb");

printf("請(qǐng)輸入管理員賬號(hào):”);

scanf("%s"zstr_z;\n');

printf("請(qǐng)輸入密碼:”);

,

fprintf(fp,"%s%c"/str_z;\n);

fprintf(fp,"%s%c",str_m,'');

fclose(fp);

printf("管理員信息更新完成!!\a\n");

getch();

)

intmain()

(

LinkL;

FILE*fp;

intselect,State=O;

charchzadmin[20],admin_p[20];

intcount=0;

Node*p,*r;

systemf'colorOA");

L=(Node*)malloc(sizeof;Node));

L->next=NULL;

r=L;

fp=fopen(,'student.txt";'ab+");

Loop:{

State=login();

)

while(!feof(fp))

{p=(Node*)malloc(sizeof(Node));

if(fread(p,sizeof(Node)/lJp)==l)

(

p->next=NULL;

r->next=p;

r=p;

count++;

)

)

fclose(fp);

if(State==l)

{

while(l)

(

system("cls");

printf("\n管理員模式\n\n”);

menu();

P=r;

scanf("%d",&select);

if(select==O)

if(saveflag==l)

getchar[);

printf(”\n統(tǒng)計(jì)已修改,是否保留當(dāng)初統(tǒng)計(jì)?(y/n):");

scanf("%c"z&ch);

ir(di==VIM)=='Y')

Save(L);

)

printf("謝謝您使用!!!\n“);

break;

}

switch(select)

(

casel:Add(L);break;〃增加模塊

溫馨提示

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

評(píng)論

0/150

提交評(píng)論