




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
信息技術(shù)工程學(xué)院
C語言課程設(shè)計(jì)匯報(bào)
題目:學(xué)生成績管理系統(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各個模塊的功能和實(shí)現(xiàn).....................................................6
6.2流程圖....................................................................7
(管理員模式流程圖).........................................................7
(來賓模式流程圖)...........................................................8
..........................................................................................................................................................8
七調(diào)試分析(各模塊測試結(jié)果)...............................................9
7.1源代碼...............................................................9
7.2各模塊測試結(jié)果......................................................31
八總結(jié)......................................................................34
九參考資料.................................................................35
一設(shè)計(jì)目標(biāo)
經(jīng)過本課程設(shè)計(jì)鞏固《C語言程序設(shè)計(jì)》課程教學(xué)結(jié)果,深
入了解結(jié)構(gòu)體、指針、鏈表、動態(tài)分配內(nèi)存和文件操作等c
程序設(shè)計(jì)中中高級技術(shù),經(jīng)過課程設(shè)計(jì)綜合訓(xùn)練,培養(yǎng)學(xué)生
實(shí)際分析問題、編程和動手能力、提升學(xué)生利用C語言進(jìn)行
程序設(shè)計(jì)能力,初步培養(yǎng)良好編程習(xí)慣和編程風(fēng)格,初步學(xué)
習(xí)程序文檔撰寫方法。
二課程設(shè)計(jì)內(nèi)容
經(jīng)過C語言程序系統(tǒng),設(shè)計(jì)一個能夠?qū)W(xué)生成績信息進(jìn)行管
理程序,其中學(xué)生信息能夠包含:學(xué)號、各科目標(biāo)成績平均
分排序等,其功效能夠包含學(xué)生成績輸入、輸出、查詢、排
序、刪除、統(tǒng)計(jì)、退出等。
1)封面扉頁
2)設(shè)計(jì)任務(wù)書
3)目錄
4)總體設(shè)計(jì)方案(包含步驟圖)
5)使用說明及運(yùn)行實(shí)例(包含界面)
6)組員設(shè)計(jì)內(nèi)容介紹
7)項(xiàng)目源程序代碼(注意注釋使用)
8)指導(dǎo)老師評語
五總體設(shè)計(jì)(包含幾大功效模塊)
1、成績錄入功效
2、成績輸出功效
3、成績查詢功效
4、刪除模塊
5、排序功效
6、統(tǒng)計(jì)功效
7、退出系統(tǒng)
六具體設(shè)計(jì)
6.1各個模塊功效和實(shí)現(xiàn)
(1)整個成績管理系統(tǒng)設(shè)計(jì)分為9個模塊:
L輸入學(xué)生成績
2,刪除學(xué)生成績
3.查詢學(xué)生成績
4?修改學(xué)生成績
5?排序?qū)W生成績
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ù)對成績表進(jìn)行處理。
2.輸入數(shù)據(jù)函數(shù)input。:輸入學(xué)號、成績。
3.排序函數(shù)sort():對總成績或平均成績,進(jìn)行排序,按
從高到低或從低到高。
4.顯示數(shù)據(jù)函數(shù)display。:顯示各個學(xué)生總成績
5.新增數(shù)據(jù)函數(shù)insert。:增加學(xué)生學(xué)生統(tǒng)計(jì)。
6.刪除數(shù)據(jù)函數(shù)del():因?yàn)槎喾N原因,刪除一些同學(xué)成績、
學(xué)號等。
7,平均值函數(shù)average():求各個同學(xué)總成績平均值。
8,查詢數(shù)據(jù)函數(shù)qur():查詢學(xué)生信息。
9.保留數(shù)據(jù)函數(shù)save。:再一次打開界面是,仍有上次所找訊
息。
10.退出系統(tǒng)函數(shù)exit。:當(dāng)要退出整個系統(tǒng)時。
6.2步驟圖
(管理員模式步驟圖)
輸
統(tǒng)刪保退
入
出抨.J4-田
(貴賓模式步驟圖)
退山
程序
7
結(jié)束
七調(diào)試分析(各模塊測試結(jié)果)
7.1源代碼
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#defineHEADER2"學(xué)號姓名數(shù)學(xué)英語C語言總分平均分\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é)生成績管理系統(tǒng)\n");
prinlf("\n");
printf{"
*******************************************************************\n,().
printf("
*\n");
printf("*1輸入成績2刪除成績
*\n");
printf("?
*\n");
printff"?3查詢成績4修改成績
*\n");
printf("?
*\n");
printff"?5排序成績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請你選擇操作命令前數(shù)字(0-9):”);
)
intmenu2(){
//intselect;
time_tnow;
now=time(NULL);
system("cls");〃清屏
printf("\n學(xué)生模式
\n\n\n");
printff"學(xué)生成績管理系統(tǒng)\n");
printf("\n");
printf("
*******************************************************************\n”)?
printf("*
*\n");
printf("*1查詢成績2排序成績
*\n");
printf("*
*\n");
printf("*3顯示全部0退出系統(tǒng)
*\n");
printf("
*\n");
printf("
*******************************************************************\n)?
printf("*4切換登錄模式
*\n");
printf("
printf("\n請你選擇操作命令前數(shù)字(0~4):");
return0;
}
voidprintheader()
(
printf(HEADER2);
)
voidprintdatafNode*pp){
Node*p;
P=PP;
printf(FORMAT,DATA);
}
voidWrong(){
printf("\n\n\n\n************錯誤:輸入不正當(dāng)H!*********\a\n”);
getch();
)
voidNofind{){
printf("\n沒有該學(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)在無學(xué)生成績統(tǒng)計(jì)!!\n“);
getch();
return;
)
prinlfC'\n\n");
printheader();
while(p)
{
printdata(p);
p=p->next;〃移至下一個結(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é)號我0統(tǒng)計(jì)節(jié)點(diǎn)添加操作
(
s=l->next;
while(l)
stringinput(num,10,“學(xué)號(按0退出
flag=O;
if(strcmp(num;,O")==O)
return;
b=l->nexl;
while(s)〃查詢學(xué)號是否存在,若存在則要求重新輸入
(
if(strcmp(s->data.num/num)==O)
(
flag=l;
treak;
)
s=s->next;
)
if(flag==l)〃遑醒用戶是否重新輸入
(
getchar[);
printf("=====>學(xué)號%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語言[0-100]:");
p->data.mgrade=numberinput("^(^[0-100]:");
p->dald.陽ddsnurnginpulC'英語[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======>暫無學(xué)生統(tǒng)計(jì)!!\n”);
getch();
return;
)
systemf'cls");
Disp(l);
printf("\n1經(jīng)過學(xué)號刪除2經(jīng)過姓名刪除\n“);
printf("請選擇[1,2D;
scanfC^d'\&sel);
if(sel==l)
(
stringinput(findmess,10,”請輸入學(xué)號:");
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請輸入學(xué)生姓名門;
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暫無學(xué)生統(tǒng)計(jì)!!\n“);
return;
)
printf("\n>1經(jīng)過學(xué)號吞找>2經(jīng)過姓名查找\n“);
printf("請選擇[廣2]:");
scanf("%d",&select);
if(select==l)
(
stringinput(searchinput,10,”請輸入要查找學(xué)號廠,);
p=lucdle(l,bedrchiripul,"fiurri");
if(P)
{printheader();
printdata(p);
)
else
Nofind(|;
)
elseif(select==2)
(
stringinput(searchinput,15,“請輸入學(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沒有該學(xué)生統(tǒng)計(jì)!\n“);
getch();
return;
)
system("cls");
printf("修改學(xué)生統(tǒng)計(jì)。;
Disp(l);
stringinput(findmess,10,”請輸入學(xué)號
p=locate(lzfindmess,"num");
if(P)
(
printf("學(xué)號:%s,\n",p->data.num);
printf("姓名:%s,",p->);
stringinput(p->,15,”輸入新姓名:");
printf("c語言:%d,",p->data.c8rade);
p->data.cgrade=numberinput("c語言
printf("數(shù)學(xué):%d,",p->data.mgrade);
p->data.mgrade=numberinput("S[^[0~100]:");
printf("英語:%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暫無學(xué)生統(tǒng)計(jì)!\n");
return;
)
ll=(Node*)malloc(sizeof(Node));〃用于倉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)無管理員,請創(chuàng)建!\n\n請輸入管理員賬號:");
scanf("%s",str_z);
printf(”請?jiān)O(shè)置?個六位數(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("請選擇你登錄方法:\n\n");
printf(”l.管理員模式0.貴賓模式\n”);
printf("請選擇:|0~1)");
scanf("%d”,&slale);
if(state==O)
return0;
elseif(state==l)
(
printf("請輸入賬號:");
scanf("%s,str_z);
if(strcmp(strlzstr_z)==0&&strcmp(str2,str_m)==0)
return1;
else
(
printf("賬號或密碼錯誤!!!\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("請輸入管理員賬號:”);
scanf("%s"zstr_z;\n');
printf("請輸入密碼:”);
,
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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 焦作大學(xué)《數(shù)據(jù)挖掘概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 濟(jì)南職業(yè)學(xué)院《醫(yī)療器械生物相容性評價(jià)》2023-2024學(xué)年第二學(xué)期期末試卷
- 張家口學(xué)院《汽車故障診斷與維修》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東經(jīng)貿(mào)職業(yè)學(xué)院《儀器分析實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 對外經(jīng)濟(jì)貿(mào)易大學(xué)《能源化學(xué)與化工》2023-2024學(xué)年第二學(xué)期期末試卷
- 大學(xué)生就業(yè)安全教育
- 濟(jì)寧職業(yè)技術(shù)學(xué)院《行政法(上)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東旅游職業(yè)學(xué)院《中國古代文學(xué)四》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江師范大學(xué)《會計(jì)信息系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廈門大學(xué)《GMDSS綜合業(yè)務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 我的家鄉(xiāng)寧波
- 路燈設(shè)施維修施工組織設(shè)計(jì)
- 執(zhí)業(yè)醫(yī)師注冊健康體檢表
- 普通高等學(xué)校畢業(yè)生 畢業(yè)研究生就業(yè)協(xié)議書
- 地鐵通信工程漏纜卡具安裝作業(yè)指導(dǎo)書
- 地下室頂板施工電梯加固方案(共4頁)
- 【工程文檔】電梯安裝樣板放線記錄
- EAS制造功能培訓(xùn)_MPS和MRP_完整版(截止70)
- 烤煙常見蟲草害的防治措施
- 新課改背景下的初中數(shù)學(xué)課堂有效教學(xué)研究
- 叉車自查表 廠內(nèi)機(jī)動車輛(叉車)安全自查表
評論
0/150
提交評論