




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 1277-2021實(shí)驗(yàn)裸鼴鼠寄生蟲(chóng)學(xué)等級(jí)及監(jiān)測(cè)
- DB31/T 1253-2020板管熱交換器節(jié)能技術(shù)要求
- DB31/T 1207-2020疫苗冷鏈物流基本數(shù)據(jù)集
- 箱包企業(yè)品牌戰(zhàn)略與宣傳推廣考核試卷
- 領(lǐng)導(dǎo)力與技術(shù)變革關(guān)系的考核試題及答案
- 數(shù)據(jù)庫(kù)安全策略考題及答案闡述
- 2025年計(jì)算機(jī)二級(jí)Web考試新手指導(dǎo)試題及答案
- 跨區(qū)域私人直升機(jī)維修保養(yǎng)與飛行數(shù)據(jù)分析協(xié)議
- 股權(quán)表決權(quán)委托與智能制造產(chǎn)業(yè)投資合同
- 2025年中國(guó)北京特色小鎮(zhèn)行業(yè)市場(chǎng)規(guī)模調(diào)研及投資前景研究分析報(bào)告
- 2023年山西文旅集團(tuán)云游山西股份有限公司招聘筆試模擬試題及答案解析
- 線描畫(huà)基本功教學(xué)課件
- 船上投訴程序(中英文)
- DB37-T 3781-2019 政務(wù)服務(wù)中心能源消耗定額標(biāo)準(zhǔn)-(高清版)
- 企業(yè)組織架構(gòu)表
- 氣象檢測(cè)器實(shí)測(cè)項(xiàng)目質(zhì)量檢驗(yàn)報(bào)告單
- 重癥胰腺炎(1)課件
- 科學(xué)素養(yǎng)全稿ppt課件(完整版)
- 克拉潑改進(jìn)型電容三點(diǎn)式振蕩器
- 介入導(dǎo)管室耗材準(zhǔn)備及管理
- SPC基礎(chǔ)知識(shí)培訓(xùn)教材-入門(mén)級(jí)_課件
評(píng)論
0/150
提交評(píng)論