版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)生信息管理程序
一、設(shè)計(jì)目的:
使用結(jié)構(gòu)體數(shù)組結(jié)構(gòu)實(shí)現(xiàn)簡(jiǎn)單的學(xué)生信息管理功能,要
求具有數(shù)據(jù)輸入、數(shù)據(jù)輸出、數(shù)組排序、兀索插入、兀
素刪除、查詢信息等功能。程序最多容納60名學(xué)生的
記錄。
二、設(shè)計(jì)要求:
1、intInput(void);〃使用程序中一個(gè)空白結(jié)構(gòu)體,輸入一名
學(xué)生的個(gè)人及學(xué)習(xí)信息信息。此功能區(qū)返回一個(gè)值記錄程序存
儲(chǔ)學(xué)生記錄的數(shù)量*/
2、voidChange_record(void);〃修改學(xué)生的記錄選項(xiàng)。
voidDeleterecord(void);〃刪除學(xué)生記錄選項(xiàng)。
4、voidSortjecord(void);〃根據(jù)學(xué)生某項(xiàng)信息排序?qū)W生記
錄選項(xiàng)。
5^voidQueryrecord(void);〃查詢學(xué)生記錄選項(xiàng)。
voidDisplay(void);〃顯示出當(dāng)前程序存儲(chǔ)的所有學(xué)生信
息選項(xiàng)。
7、voidAdd_from_text(inte);〃從文本中提取學(xué)生記錄輸入
程序進(jìn)行處理。
8、voidWritetotext(void);〃將當(dāng)前程序中存儲(chǔ)的學(xué)生記
錄寫入一個(gè)文本文件中。
9、voidEnding(void);〃退出選項(xiàng)。
三、總體設(shè)計(jì):
1、主函數(shù)模塊:
主函數(shù)設(shè)計(jì)較為簡(jiǎn)單,主要是使用switch語(yǔ)句通
過(guò)選擇結(jié)構(gòu)將整個(gè)程序能夠?qū)崿F(xiàn)的功能提示用戶選擇。
主函數(shù)代碼:
intmain(void)〃對(duì)主函數(shù)的定case1:
義。Input(n);〃插入學(xué)
{生記錄函數(shù)。
n=0;for(i=0,n=0;i
for(i=0;i<N;i++)<N;i++)
((
strcpy(stu[i].name,if
(stu[i].num!=U)
stu[i].num=0;n++;
stu[i].score=0;)
)break;
for(;;)〃通過(guò)for語(yǔ)句實(shí)現(xiàn)case2:
使用戶自由決定是否重復(fù)使用此程ChangerecordO;//
序。修改學(xué)生的記錄函數(shù)。
(break;
switchcase3:
(\lenu_selectl())//使用switch語(yǔ)句Delete_record()://
調(diào)用用戶指定菜單項(xiàng)對(duì)應(yīng)的函數(shù)。刪除學(xué)生記錄函數(shù)。
break;
case4:break;
Sortrecord。;〃排case7:
序函數(shù)。printf("請(qǐng)輸入文件
break;的路徑:〃);
case5:scanf("s”,nameO)
Query_rccord();//printf(〃請(qǐng)輸入此文
查詢函數(shù)。本中有多少名學(xué)生的記錄:〃);
break;scanf("%d",&j);
case6:
DispalyO;〃展示函
數(shù)。
Add_from_text(j,nameO);〃從文本中添加學(xué)生記錄的函數(shù)。
n+=j;
break;case9:〃結(jié)束程序使用
case8:界面選項(xiàng)。
printf(”請(qǐng)輸入文件Ending();
的路徑:〃);break;
scanfnameO);cefault:
Write_to_tpxt();//centinui?;〃菜單循
將學(xué)生記錄寫入文本的函數(shù)。環(huán)顯示。
break;)
system(〃c1s〃);序運(yùn)行窗口閃退。
)return0;
system(^pause^);〃防止程)
2、菜單模塊:
菜單模塊包括主菜單和部分功能中要調(diào)用的附屬菜
單,作用是向用戶說(shuō)明其輸入的選擇信息將使程序?qū)崿F(xiàn)什么
3、功能模塊
功能模塊的設(shè)計(jì)就是通過(guò)編寫多個(gè)的函數(shù)對(duì)應(yīng)程
序所要求實(shí)現(xiàn)的功能。函數(shù)在主函數(shù)中將被編號(hào),使用戶向
程序輸入的編號(hào)就能調(diào)用相應(yīng)的函數(shù)體現(xiàn)程序的功能。
四、詳細(xì)設(shè)計(jì)及源代碼:
#include<stdio.h>
#include<windows.h〉〃提供system();語(yǔ)句。
#include<slrii電.h>〃提供strleu()函數(shù)。
^defineN60〃定義全局常量N作為結(jié)構(gòu)體數(shù)組stu口下標(biāo)。
intb,c,numO,n,i=0,j=0;
charname0[40];/*將程序中多次定義的標(biāo)識(shí)符設(shè)置為全局變量。*/
structstudent
{
charname[40];
intnum;
intscore;
}stu[N];
intMenuselectl(void);
intMenuselect2(void);
intMenu_select3(void);
intMenuselectd(void);
intMenuselect5(void);
intMenu_select6(void);
intMenuselect?(void);
intMenu_select8(void);
intMenu_select9(void);〃聲明程序中用到的多種菜單函數(shù)。
structstudent*pointl,*point2;〃全局定義程序中多次用到得結(jié)構(gòu)體指針變
量。
int(*pot2)(void)=Menu_select2:
int(*pot4)(void)=Mcnu_select4;
int(*pot6)(void)=Menu_select6;
int(*pot8)(void)=Menu_select8;〃定義指向菜單pK數(shù)的指針。
intjudgement(void);
intjudgement_small(void);〃聲明程序要調(diào)用的兩個(gè)判斷特殊情況的函數(shù)。
FILE*fp;〃定義指向文件型數(shù)據(jù)的指針變量。
voidChangeservice(void);
voidQuery_service(void);
voidDelete_service(void):
void(*serl)(void)=Changeservice;
void(*ser2)(void)=Deleteservice;
void(*ser3)(void)=Query_scrvice;〃定義指向在有特定功能的函數(shù)內(nèi)部使用
的函數(shù)的指針。
voidSortservicel(intpo);
voidSort_service2(intpo);〃聲明兩個(gè)在有排序功能的函數(shù)中腰使用的函數(shù)。
voidswap(structstudent*pol,structstudent*po2);〃對(duì)交換函數(shù)的聲明。
voidEnding(void);〃對(duì)有結(jié)束功能的函數(shù)的聲明。
voidfind(int(*p)(void),void(*q)(void));〃對(duì)一個(gè)形參是指向函數(shù)的指針
的函數(shù)的聲明。
voidInput(intn)〃對(duì)有插入學(xué)生記錄功能的函數(shù)的定義。
{
printf(〃請(qǐng)輸入學(xué)生姓名:〃);
scanf&stu[n].name);
printf(〃請(qǐng)輸入學(xué)生序號(hào):〃);
stu[n].num=judgement();
printf(〃請(qǐng)輸入學(xué)生信息:〃);
scanf&stu[n].score);
system(〃cls〃);〃此語(yǔ)句執(zhí)行后將清除運(yùn)行窗口顯示的結(jié)果。
)
VOidChangp_rpcord(vcid)〃對(duì)■有修改學(xué)生記錄功能的函數(shù)的定義。
find(pot2,serl);〃在函數(shù)內(nèi)部調(diào)用函數(shù)。
)
voidDelete_record(void)〃對(duì)有刪除學(xué)生記錄功能的函數(shù)的定義。
{
find(pot4,ser2);
(
voidSort_record(void)〃對(duì)有排序?qū)W生記錄功能的匣數(shù)的定義。
{
j=Menu_select8();〃通過(guò)菜單函數(shù)的返回值提供用戶的選擇信息來(lái)執(zhí)行
用戶選定的功能
for(;judgement_smal1()>0;)〃for語(yǔ)句中的判斷用判斷函數(shù)處理后以
提示是否輸入錯(cuò)誤。
(
if(j==1)
(
j=Menu_select9();
Sort_servicel(j);〃通過(guò)菜單函數(shù)的返回值作為另一個(gè)函數(shù)的實(shí)
參來(lái)執(zhí)行用戶選定的功能,
break;
)
elseif(j==2)
j=Menu_select9();
Sort_service2(j);
break;
)
else
continue;
)
}
voidQucry_rccord(void)〃對(duì)有查詢學(xué)生記錄功能的函數(shù)的定義。
{
find(pot6,ser3);
)
voidDispaly(void)〃對(duì)有顯示全部學(xué)生記錄功能的函數(shù)的定義。
(
for(i=0;i<n;i++)〃for語(yǔ)句打印出當(dāng)時(shí)的所有學(xué)生記錄。
(
printf("第%d位學(xué)生姓名為%s\n”,i+1,stu[i].name);
prinlf("班內(nèi)序號(hào)為%d\n",stu[i].num);
printf("學(xué)習(xí)信息為%d\n'n”,stu[i].score);
)
system("pause");〃防止運(yùn)行窗口閃退。
)
voidEnding(void)〃對(duì)有退出功能的函數(shù)的定義。
system(〃cls〃);
printff\n\t
亭亭5^C?jc?!c5|c?jc?jc?!c?jc?!c?jc?|c51c51c51c5}C51C5jC51c5j*55?5jc不5{C5fc*|C5!C?|C5|C?!C?jc\[)\n\\
);
printfC\n\t\t\t歡迎下次繼續(xù)使用,再見!\n\n");
printf(〃\n\n\n\t
exit(O);〃正常退出程序。
}
voidAddfromtext(inte,charch)〃對(duì)有可從文本文件中提取學(xué)生記錄的函
數(shù)的定義。
fp=fopen(nameO,"r");〃使指針指向文件。
if((fp=fopen(name。,"r〃))=NULL)〃判斷指針?biāo)赶虻奈募欠翊?/p>
在,不存在退出此函數(shù)。
printf(〃無(wú)法找到路徑為%s的文本文件。\n〃,nameO);
system("pause");
return;
)
else〃存在則從此文件中提取學(xué)生記錄。
(
for(i=n;i<(n+e+1);i++)
(
fscanf(fp,&stu[i].name,&stu[i].num,
&stu[i].score);
)
prinlf("已提取出文本文件名稱為刎中的所有學(xué)生記錄!\n",nameO);
system("pause");
}
fclose(fp);〃關(guān)閉文本文件,即指針fp不再指向任何文件。
)
voidWrite_to_text(void)〃對(duì)可將程序中存儲(chǔ)并處理后的學(xué)生記錄輸出至一
個(gè)文本文件。
{
fp=fopen(nameO,〃w");〃使指針指向文件。
if((fp=foppn(namoO,,,w,/))==NULL)〃判斷指針?biāo)赶虻奈募欠翊?/p>
在,不存在退出此函數(shù)。
printf("無(wú)法找到名為%d的文本文件。\n",nameO);
system("pause");
return;
)
else〃存在則將程序中儲(chǔ)存的學(xué)生記錄寫入該文件。
(
fprintf(fp,〃姓名\t\t\t\t\t*班內(nèi)序號(hào)\t*學(xué)習(xí)信息*\n〃);
for(i=0;i<n;i++)
(
fprintf(fp,"%-40s*%T4d*%-5d*\n",stu[i].name,
stu[i].num,stu[i].score);
}
printf(〃已將學(xué)生記錄存儲(chǔ)入名稱為%s的文件中!\n”,nameO);
system("pause");
)
fclose(fp);〃關(guān)閉文本文件,即指針fp不再指向任何文件。
}
voidChange_service(void)〃對(duì)在有修改學(xué)生記錄功能的函數(shù)中要調(diào)用的函數(shù)
的定義。
chartempi[40];
inttomp2,temp3;
switch(Menu_select3())/*菜單函數(shù)的返回值用作switch語(yǔ)句的選擇信息
(選擇項(xiàng)較多用switch語(yǔ)句較少則用if語(yǔ)句)。*/
(
system("cis");
case1:
printf(〃此學(xué)生當(dāng)前姓名為%s,請(qǐng)輸入要修改后的名字;〃,
(*pointl).name);/*由于此函數(shù)作為實(shí)參
在find()函數(shù)被調(diào)
用,在調(diào)用前已經(jīng)將尋找到得項(xiàng)的地址付給了全局指針變量point1*/
scanf("%s〃,tempi);
strcpy(pointl->name,tempi);
break;
case2:
printf(〃此學(xué)生當(dāng)前序號(hào)為刎,請(qǐng)輸入要修改后的序號(hào)二
(*pointl).num);
temp2=judgement();
(*pointl).num=temp2;
break:
case3:
prinlf(〃此學(xué)生當(dāng)前信息為%d,請(qǐng)輸入要修改后的信息;。
(*pointl).score);
scanf(,,%d,,?&temp3);
(*pointl).score=temp3;
break;
default:
break;
)
}
voidQuory_servic。(void)〃對(duì)在有查詢學(xué)生記錄功能的函數(shù)中要調(diào)用的函數(shù)
的定義。
{
switch(Menu_select7())〃同上,選擇項(xiàng)較多用switch語(yǔ)句。
(
case1:
printf(〃此學(xué)生當(dāng)前姓名為加,班級(jí)內(nèi)序號(hào)為%d,學(xué)習(xí)信息為%d\n”,
pointl->name,pointl->num,
pointb>score);/*由于此函數(shù)作為實(shí)參在find()函數(shù)被調(diào)用,在其
內(nèi)調(diào)用前已經(jīng)將尋找到得項(xiàng)的地址付給了
全局指針變量point!*/
system("pause");
break;
case2:
printf(“此學(xué)生當(dāng)前姓名為%乙\n",pointl->name);
system("pause");
break;
case3:
printf("此學(xué)生當(dāng)前班內(nèi)序號(hào)為%d。\n〃,pointl->num);
system("pause");
break;
case4:
prinlf(“此學(xué)生當(dāng)前班內(nèi)序號(hào)為%d。\n”,pointl->score);
system("pause");
default:
break;
}
)
voidDe1ete_service(void)〃對(duì)在有刪除學(xué)生記錄功能的函數(shù)中要調(diào)用的函數(shù)
的定義。
(
j=Meni.i_selec.t5():〃選擇項(xiàng)較少用if語(yǔ)句。
if(j==1)
charsure;
printf(“此學(xué)生當(dāng)前姓名為%$,班級(jí)內(nèi)序號(hào)為%d,學(xué)習(xí)信息為%d\n〃,
pointl->name,pointl->num,
pointl->score);/*由于此函數(shù)作為實(shí)參在find()函數(shù)被調(diào)用,在其
內(nèi)調(diào)用前已經(jīng)將尋找到得項(xiàng)的地址付給了
全局指針變量pointl*/
printf(〃請(qǐng)按回車鍵確認(rèn)您的操作!\n〃);
for(;;)
(
if(getchar(sure)=='\n')
(
point2=&stu[n-1];
swap(pointi,point2);
n-;
break;
)
}
systein("cls〃);
printf("刪除記錄成功,感謝使用!〃):
system("pause");
}/*這里刪除一個(gè)學(xué)生的全部記錄的實(shí)現(xiàn)方法是:鎖定要?jiǎng)h除的學(xué)生記錄符
其地址賦給pointl,通過(guò)地址來(lái)
把此時(shí)存入得學(xué)生記錄中最后一位的信息存入該名學(xué)生信息存儲(chǔ)的位置,
然后清空最后一位學(xué)生的占用的結(jié)構(gòu)體
數(shù)組元素并對(duì)程序中記錄存入學(xué)生記錄數(shù)量的全局變量n做減一處理*/
elseif(j=2)〃只刪除一名學(xué)生的信息的功能。
(
pointl->score=0;〃指定學(xué)生信息清零。
)
else
system("pause");
)
voidSort_servicel(intpo)〃對(duì)在有排序?qū)W生記錄功能的函數(shù)中要調(diào)用的第一
個(gè)函數(shù)的定義,即通過(guò)班內(nèi)序號(hào)排序。
{
intm=judgementsinall();
if(po==1)〃成立做降序處理。
(
for(i=0;i<m;i++)
for(c=i+1;c<m+1;c++)
b=i;
if(stu[c].num>stu[b].num)
(
pointl=&stu[c];
point2=&stu[b];
b=c;
swap(pointl,point2);〃調(diào)用函數(shù)交換兩個(gè)結(jié)構(gòu)體數(shù)組元
素內(nèi)的所有信息。
}
)
}
printf(〃排序成功!感謝使用!\n〃);
system("pause");
}
else〃不成立則做升序處理。
(
for(i=0;i<m;i++)
(
for(c=i+l:c<m+l:c++)
(
b=i;
if(stu[c].num<stu[b].num)
pointl=&stu[c];
point2=&stu[b];
b=c;
swap(pointl,point2);
)
)
}
printf(〃排序成功!感謝使用!\n");
system("pause");
}
}
VOidSort_servicc2(charpo)〃對(duì)在有排序?qū)W生記錄功能的函數(shù)中要調(diào)用的第
二個(gè)函數(shù)的定義,即通過(guò)學(xué)習(xí)信息排序。
(
intm=judgementsinall();
if(po=D〃做升序處理
for(i=0;i<m;i++)
for(c=i+1;c<m+1;c++)
b=i;
if(stu[c].score>stu[b].score)
(
pointl=&stu[c];
point2=&stu[b];
b=c;
swap(pointl,point2);
}
)
}
printf("排序成功!感謝使用!\n");
system("pause");
return;
)
else〃做降序處理。
(
for(i=0:i<m:i++)
for(c=i+1;c<m+1;c++)
b=i;
if(stu[c].score<stu[b].score)
(
pointl=&stu[c];
point2=&stu[b];
b=c;
swap(pointl,point2);
}
)
}
printf(〃排序成功!感謝使用!\n〃);
system("pause");
return;
)
)
voidswap(structstudent*pol,structstudent*po2)/*對(duì)一個(gè)具有交換值
功能的函數(shù)的定義,具體功能是交換兩個(gè)結(jié)構(gòu)體數(shù)組元素內(nèi)的所有信息*/
{
structstudenttempO;
tempO=*pol;
pol=po2;
*po2=tempO;
}
voidfind(int(*p)(void),void(*q)(void))/*對(duì)一個(gè)形參是指向函數(shù)的指針的
函數(shù)的定義,此函數(shù)將在查詢、刪除、修改函數(shù)中被使用,即通過(guò)用戶輸入的一
名學(xué)生的名字或班內(nèi)序號(hào)鎖定該名學(xué)生記錄的地址,保存在全局指針變量
point1中,然后用.service函數(shù)處理*/
{
for(;;)
(
j=p();〃通過(guò)函數(shù)的指針調(diào)用函數(shù)
if(j==1)
(
printf(〃請(qǐng)輸入學(xué)生的姓名:〃);
scanf('%s”,nameO);
nameO[str1en(nameO)+1]='\0';〃防止字符數(shù)組越界。
for(i=0;i<N;i++)
{
if(strcmp(nameO,stu[i].name)==0)〃比較兩個(gè)字符數(shù)組
pointl=&stu[i];〃全局變量存入鎖定的學(xué)生地址。
q();
return;〃退出函數(shù)。
}
)
if(i>n)〃對(duì)特殊情況的處理。
printf(〃經(jīng)尋找后沒有發(fā)現(xiàn)姓名為%$的學(xué)生記錄存入程序!
nameO);
system("pause");
break;
)
elseif(j==2)
(
printf(“請(qǐng)輸入學(xué)生的序號(hào):〃);
scanf(線d〃,&numO);
for(i=0;i<N;i++)
(
if(numO==stu[i].num)
(
pointl=&stu[i]:
q();
return;
)
)
if(i>n)
printf(〃經(jīng)尋找后沒有發(fā)現(xiàn)序號(hào)為刎的學(xué)生記錄存入程序!\n
numO);
system("pause");
brecik;
}
else
conlinue;〃用戶在選擇出錯(cuò)時(shí)可以重新輸入選擇。
}
)
intmain(void)〃對(duì)主函數(shù)的定義。
(
n=0;
for(i=0;i<N;i++)
(
strepy(stu[i].name,〃\0");
stu[i].num=0:
stu[i].score=0;
}
for(;;)〃通過(guò)for語(yǔ)句實(shí)現(xiàn)使用戶自由決定是否重發(fā)使用此程序。
switch(Menu一select]())〃使用switch語(yǔ)句調(diào)用用戶指定菜單項(xiàng)對(duì)應(yīng)
的函數(shù)。
(
case1:
Input(n);〃插入學(xué)生記錄函數(shù)。
for(i=0,n=0;i<N;i++)
(
if(stu[i].num!=0)
n++;
}
break;
case2:
Chcinge_record();〃修改學(xué)生的記錄函數(shù)。
break;
case3:
Delete_record();〃刪除學(xué)生記錄函數(shù)。
brpak:
case4:
Sort_record();//排序函數(shù)。
break;
case5:
Queryrecord0;〃查詢函數(shù)。
break;
case6:
DispalyO;〃展示函數(shù)。
brecik;
case7:
printf(〃請(qǐng)輸入文件的路徑:〃);
scanf(飛s”,nameO);
printf(〃請(qǐng)輸入此文本中有多少名學(xué)生的記錄:〃);
scanf("機(jī)T,&j);
Add_fromtext(j,name。);〃從文本中添加學(xué)生記錄的函數(shù)。
n+=j;
break;
case8:
printf(“請(qǐng)輸入文件的路徑:〃);
scanf('%s”,nameO);
();〃將學(xué)生記錄寫入文本的函數(shù)。
break;
case9:〃結(jié)束程序使用界面選項(xiàng)。
Ending();
break;
default:
continue;〃菜單循環(huán)顯示。
)
system("cls");
)
system("pause");〃防止程序運(yùn)行窗口閃退。
return0;
)
intMenu_selectl(void)〃對(duì)第一個(gè)菜單函數(shù)的定義。
printf(z,\t
\\>>>I?
rr?rrw*T*rfc*T?*7*rT?*T?*?**?*J?*J**J*#?rj**T?*T*\]1\I1
printfC\n\t\t\t***歡迎使用學(xué)生信息管理程序***\n\n〃);
printf("\t\t\t\t功能菜單\n\n\n");
printfC\t1、添加學(xué)生記錄信息選項(xiàng)\n〃);
printf("\t2、修改學(xué)生的記錄選項(xiàng)\n〃);
printf(",\t3、刪除學(xué)生記錄選項(xiàng)\n"):
printfCXt4、根據(jù)學(xué)生某項(xiàng)信息排序?qū)W生記錄\n〃);
printfC\t5、查詢學(xué)生信息選項(xiàng)\n〃);
printf(,?\t6、顯示出當(dāng)前存儲(chǔ)的所有學(xué)生信息\n");
printfC\t7、從文本文檔中添加學(xué)生記錄\n〃);
printfC\t8、將當(dāng)前存入的學(xué)生記錄寫入文本文檔\n〃);
printf(,z\t9、退出選項(xiàng)\n〃);
printfC\t
************************************************************\n\
printf("\t\t\t\t\t此時(shí)程序中存儲(chǔ)了%d個(gè)學(xué)生的信息\n\n”,n);
printf("請(qǐng)輸入您的選擇:");
scanf(〃%d〃,&i);〃將用戶指定的菜單項(xiàng)序號(hào)儲(chǔ)存在變量i中。
system("cis");
return(i);//將i作為函數(shù)返回值。
)
intMenuselect.2(void)〃對(duì)第二個(gè)菜單函數(shù)的定義。
(
system(〃cls");
printfC\tl,通過(guò)名字找出要修改的學(xué)生記錄\n\n〃);
printfC\t2.通過(guò)序號(hào)找出要修改的學(xué)生記錄\n\n〃);
printf("\t\t請(qǐng)輸入1或者2:;
scanf&i):
return(i);
intMcnu_selcct3(void)〃對(duì)第三個(gè)菜單函數(shù)的定義。
system("cis");
printf("\tl、修改學(xué)生的姓名\n\n");
printfr\t2.修改學(xué)生的序號(hào)\n\n〃);
printf("\t3、修改學(xué)生的信息\n\n");
printf(,z\t\t\t請(qǐng)輸入1或2或者3:");
scanf("%d",&i);
return(i);
}
intMcnu_select4(void)〃對(duì)第四個(gè)菜單函數(shù)的定義。
{
system("cis");
printfC\tl,通過(guò)名字找出要?jiǎng)h除的學(xué)生記錄\n\n〃);
printf(〃\t2、通過(guò)序號(hào)找出要?jiǎng)h除的學(xué)生記錄\n\n〃);
printf請(qǐng)輸入1或者2:;
scanf&i);
return(i);
intMenuselect5(void)〃對(duì)第五個(gè)菜單函數(shù)的定義。
system(〃cls");
printfC\tl,刪除此學(xué)生的所有信息\n\n〃);
printff\t3,刪除此學(xué)生的學(xué)習(xí)信息\n\n〃);
printf("\t\t\t請(qǐng)輸入1或者2:〃);
scanf&i);
return(i);
)
intMenuselect6(void)//對(duì)第六個(gè)菜單函數(shù)的定義。
(
system("cis");
printff\tl,通過(guò)名字找出要查詢的學(xué)生記錄\n\n〃);
printf(〃\t2、通過(guò)序號(hào)找出要查詢的學(xué)生記錄\n\n〃);
printf(*\t\t請(qǐng)輸入1或者2:;
scanf&i);
return(i);
)
intMenuselect7(void)〃對(duì)第七個(gè)菜單函數(shù)的定義。
(
system("cis"):
printfC\tl>查詢此學(xué)生的所有信息\n\n〃);
printfC\t2.查詢此學(xué)生的姓名\n\n〃);
printf(〃\t3、查詢此學(xué)生的班內(nèi)序號(hào)\n\n");
printfC\t4>查詢此學(xué)生的學(xué)習(xí)信息\n\n〃);
printf(*\t\t\t請(qǐng)輸入1到4間的一個(gè)整數(shù);
scanf&i);
return(i);
)
intMenu_select8(void)〃對(duì)第八個(gè)菜單函數(shù)的定義。
{
systcm(〃cls〃);
printfCAtl.根據(jù)學(xué)生的班內(nèi)序號(hào)排序?qū)W生記錄\n\n");
printfC\t2,根據(jù)學(xué)生的學(xué)習(xí)信息排序?qū)W生記錄\n\n〃);
printf請(qǐng)輸入1或者2:");
scanf&i);
return(i);
)
intMenu_select9(void)〃對(duì)第九個(gè)菜單函數(shù)的定義。
{
system("cls");
printfC\tK按此組數(shù)據(jù)對(duì)?學(xué)生記錄進(jìn)行降序排序\n\n〃):
printfC\t2>按此組數(shù)據(jù)對(duì)學(xué)生記錄進(jìn)行升序排序\n\n〃);
printf請(qǐng)輸入1或者20;
scanf(,,%d,/,&i);
return(i);
}
intjudgement(void)〃對(duì)第一個(gè)判斷函數(shù)的定義,判斷班內(nèi)序號(hào)是否大于60
或者有重復(fù)序號(hào)的情況。
(
inti,out,k,final;
scanf("%d”,&final);
for(out=1;out==1;)
(
if(final>N)
(
system(zzcls/x);
printf(〃序號(hào)為1到60之間的一個(gè)整數(shù),請(qǐng)重新輸入:〃);
scanf(“/d",殳final);
}
if(final<=60)
(
for(i=0,k=0;i<N;i++)
if(final==stu[i].num)
k++;
break;
1
)
}
if(k==0)
break;
else
(
system(〃cIs");
printf(〃您輸入的序號(hào)已被使用請(qǐng)?jiān)俅屋斎氩煌男蛱?hào):〃);
scanf("%d”,殳final);
}
)
return(final);
)
intjudgement_small(void)〃對(duì)第二個(gè)判斷函數(shù)的定義,針對(duì)于排序函數(shù)中的
一類特殊情況設(shè)計(jì)。
intm=-1;
for(i=0;i<N;i++)
if(stu[i].num!=0)
m++;
}
if(m<=0)
printf(〃程序當(dāng)前只存儲(chǔ)了%d位學(xué)生的信息,無(wú)法排序!\n",m+1);
system("pause");
)
returnm;}
五、程序調(diào)試:
運(yùn)行程序:
顯示:
S1^si*5^si**1*
,1、,1、,廣,A、,.、,,、’1、,4、'I、,4、*j*,.、'I、,'、'I、,'、'I、,|、'I、?、,4、’1、,4、,I、,4、'I、。、'I、,,、*T*,,、'I、,|、’I、’1、,卜’[、,,、’1、,4、*T*,,、,1、,上、‘I、,‘、'I、,'、'I、‘1、’;、*T*';、*T*,4、,1、,「'I、,4、
***歡迎使用學(xué)生信息管理程序***
功能菜單
1、添加學(xué)生記錄信息選項(xiàng)
2、修改學(xué)生的記錄選項(xiàng)
3、刪除學(xué)生記錄選項(xiàng)
4、根據(jù)學(xué)生某項(xiàng)信息排序?qū)W生.記錄選項(xiàng)
5、查詢學(xué)生記錄選項(xiàng)
6、顯示當(dāng)前存儲(chǔ)的所有學(xué)生記錄選項(xiàng)
7、從文本文件中提取學(xué)生記錄選項(xiàng)
8、將當(dāng)前存入程序的學(xué)生記錄寫入文本文件
9、退出選項(xiàng)
si*sx*?£>sXzsL*^£xs^*^1/si^^£z^lz^£zxL*^£z
,:、,,、匕、,4、,;',.、']、f,[、^7*,[、,1、,[、,:、,j、,:、,[、(、J、,[、,《、,;、,A、,[、,]、,>、,[、,廣可、,[、,;、,卜,;、,,、,[、J、,j、,[、,.、,,、,;、,,、,]、,卜,;、,,、,[、,[、
此時(shí)程序中存儲(chǔ)了0個(gè)學(xué)生的記錄
請(qǐng)輸入您的選擇:
輸入:1回車
顯示:請(qǐng)輸入學(xué)生姓名:
輸入:a回車
顯示:請(qǐng)輸入學(xué)生序號(hào):
輸入:1回車
顯示:請(qǐng)輸入學(xué)生信息:
輸入:78回車
(回到菜單,在菜單的下面一行中將變?yōu)椤按藭r(shí)程序中存儲(chǔ)了1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省南昌中學(xué)2025-2026學(xué)年高一上學(xué)期1月期末物理試題(含答案)
- 微軟面試題及答案
- 初中政治老師培訓(xùn)課件
- 法人代表委托書模板集合7篇
- 清朝娘子關(guān)戰(zhàn)役
- 風(fēng)力發(fā)電系統(tǒng)技術(shù)要點(diǎn)
- 大體積施工技術(shù)要領(lǐng)
- 人教版《道德與法治》八年級(jí)上冊(cè):10.2天下興亡-匹夫有責(zé)課件
- 初中信息技術(shù)新課標(biāo)解讀
- 2025 小學(xué)三年級(jí)科學(xué)下冊(cè)植物孢子繁殖(蕨類)觀察課件
- 2025年社工社區(qū)招聘筆試題庫(kù)及答案
- 病毒性肺炎診療指南(2025年版)
- 2026年度新疆兵團(tuán)草湖項(xiàng)目區(qū)公安局招聘警務(wù)輔助人員工作(100人)筆試參考題庫(kù)及答案解析
- GB/T 46778-2025精細(xì)陶瓷陶瓷造粒粉壓縮強(qiáng)度試驗(yàn)方法
- 采購(gòu)主管年終工作總結(jié)
- 物業(yè)現(xiàn)場(chǎng)管理培訓(xùn)課件
- 數(shù)據(jù)訪問(wèn)控制策略分析報(bào)告
- 子宮內(nèi)膜異位癥病因課件
- GB/T 18910.103-2025液晶顯示器件第10-3部分:環(huán)境、耐久性和機(jī)械試驗(yàn)方法玻璃強(qiáng)度和可靠性
- 經(jīng)圓孔翼腭神經(jīng)節(jié)射頻調(diào)節(jié)術(shù)
- 夢(mèng)雖遙追則能達(dá)愿雖艱持則可圓模板
評(píng)論
0/150
提交評(píng)論