C語(yǔ)言課程設(shè)計(jì)實(shí)現(xiàn)總結(jié)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)現(xiàn)總結(jié)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)現(xiàn)總結(jié)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)現(xiàn)總結(jié)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)實(shí)現(xiàn)總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論