学生成绩管理系统C课设程序Word格式.docx

上传人:b****5 文档编号:21021564 上传时间:2023-01-27 格式:DOCX 页数:15 大小:19.08KB
下载 相关 举报
学生成绩管理系统C课设程序Word格式.docx_第1页
第1页 / 共15页
学生成绩管理系统C课设程序Word格式.docx_第2页
第2页 / 共15页
学生成绩管理系统C课设程序Word格式.docx_第3页
第3页 / 共15页
学生成绩管理系统C课设程序Word格式.docx_第4页
第4页 / 共15页
学生成绩管理系统C课设程序Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统C课设程序Word格式.docx

《学生成绩管理系统C课设程序Word格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C课设程序Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统C课设程序Word格式.docx

load()/*加载记录或可以计算记录个数的函数*/

rb"

!

feof(fp);

fread(&

stu[i],sizeof(structstudent),1,fp);

return(i-1);

/*返回记录个数*/

/*一个任务结束时的选择浏览还是返回的函数*/

voidprintf_back()/*一个任务结束时的选择浏览还是返回*/

{intk,w;

\n\n\tSuccessful.^_^\n\n"

Whatdoyouwanttodo?

\n\n\t1).Browseallnow\t2).Back:

[]\b\b"

scanf("

%d"

&

w);

if(w==1)browse();

elsemenu();

/*显示数据结构项目函数*/

voidprintf_face()/*显示数据结构项目*/

{printf("

\n\tNO.namescore1score2score3average\n"

average(inti)/*对第i个记录的分数求平均值*/

{intj,sum;

for(sum=0,j=0;

j<

3;

j++)

sum+=stu[i].score[j];

stu[i].ave=sum/3.0;

/*学号输入函数*/

no_input(inti,intn)/*i表示第i个的学生信息,n表示比较到第n个学生*/

{intj,k,w1;

do

{w1=0;

NO.:

"

%s"

stu[i].num);

for(j=0;

stu[i].num[j]!

='

\0'

;

j++)/*学号输入函数,作了严格规定*/

if(stu[i].num[j]<

'

0'

||stu[i].num[j]>

9'

)/*判断学号是否为数字*/

{puts("

Inputerror!

Onlybemadeupof(0-9).Pleasereinput!

\n"

w1=1;

break;

if(w1!

for(k=0;

k<

k++)/*比较到第n个学生*/

/*排除第i个学生记录即你要修改的*/

if(k!

=i&

&

strcmp(stu[k].num,stu[i].num)==0)/*判断学号是否有雷同*/

Thisrecordisexist.pleasereinput!

while(w1==1);

/*对分数输入*/

score_input(inti)

{intj;

score%d:

j+1);

stu[i].score[j]);

/*输入一个记录函数*/

input(inti)/*输入一个记录函数*/

{

no_input(i,i);

/*调用学号输入函数*/

name:

stu[i].name);

score_input(i);

/*调用分数输入函数*/

average(i);

/*调用求平均值函数*/

/*显示一个记录的函数*/

printf_one(inti)/*显示一个记录的函数*/

%11s%-17s"

stu[i].num,stu[i].name);

%9d"

stu[i].score[j]);

%9.2f\n"

stu[i].ave);

voidputs___()/*显出---函数*/

{puts("

\n--------------------------------------------------------------------"

/*修改记录函数*/

modify_data(inti,intn)/*修改数据函数,修改第i个记录*/

{intc,w1;

do/*输入选择作个判断*/

\nmodifyby=>

\n\n1).NO.2.name3).score14).score2\n5).score36).allscore7).alldata8).cancelandback"

Whichyouneeded?

:

c);

if(c>

8||c<

1)

\nChoiceerror!

Pleaseagain!

/*判断选择是否错误,若是则重新选择性*/

getchar();

/*当输入是字符时可以防止死循环*/

while(c>

1);

{switch(c)/*选择要修改的项目*/

{case1:

no_input(i,n);

case2:

printf("

scanf("

case3:

score1:

stu[i].score[0]);

case4:

score2:

stu[i].score[1]);

case5:

score3:

stu[i].score[2]);

case6:

score_input(i);

case7:

input(i);

/*调用输入整条学生记录*/

case8:

menu();

/*直接返回主介面*/

2&

c<

7)

puts("

\nNow:

printf_face();

/*调用显示数据结构项目函数*/

printf_one(i);

/*修改后的记录让用户确认*/

\nAreyousure?

\n\n\t1).Sure2).Noandremodify3).Backwithoutsaveinthistime[]\b\b"

/*是否确定*/

w1);

/*选择2则表示这次修改错误要重新修改*/

while(w1==2);

return(w1);

/*返回控制值*/

/****************输入模块****************/

enter()/*输入模块*/

{inti,n;

Howmanystudents(0-%d)?

N-1);

n);

/*要输入的记录个数*/

\nEnterdatanow\n\n"

\nInput%dthstudentrecord.\n"

i+1);

input(i);

/*调用输入函数*/

if(i!

=0)save(n);

/*调用保存函数*/

printf_back();

/*一个任务结束时让用户选择是浏览还是返回*/

/****************追加模块****************/

add()/*追加模块*/

{inti,n,m,k;

FILE*fp;

n=load();

Howmanystudentsareyouwanttoadd(0-%d)?

N-1-n);

m);

/*输入要追加的记录个数*/

k=m+n;

for(i=n;

k;

i-n+1);

ab"

))==NULL)/*以ab方式打开文件,追加保存*/

cannotopenfile\n"

return;

i++)/*输入出到文件*/

/*一个任务结束时的选择浏览还是返回*/

/****************修改模块****************/

modify()/*修改模块*/

{structstudents;

inti,n,k,w0=1,w1,w2=0;

{//clrscr();

k=-1;

/*给用户看全部记录以便确认要修改的记录*/

puts___();

/*显示-----*/

{if((i!

=0)&

(i%10==0))/*目的是分屏显示*/

\n\nRememberNO.whichneededmodify.passanykeytocontiune..."

getch();

\n\n"

/*调用显示一个记录的函数*/

\n\nEnterNO.thatyouwanttomodify!

NO.:

s.num);

/*输入要修改的数据的学号*/

i++)/*查找要修改的数据*/

if(strcmp(s.num,stu[i].num)==0)

{k=i;

/*找到要修改的记录*/

s=stu[i];

/*把stu[i](即当次修改的学生记录)备份给s,以便用户反悔时恢复名誉*/

if(k==-1)printf("

\n\nNOexist!

pleaseagain"

while(k==-1);

/*当K=-1表示没有找到*/

printf_one(k);

w1=modify_data(k,n);

/*修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改*/

if(w1==1)/*W1等于1时则表示用户确定这次修改*/

\nSuccessful^_^.\n\nAreyoumodifyanother?

\n\n\t1).Yes2).Backwithsave\t[]\b\b"

w0);

w2=1;

/*来控制保存,使w2=1是标记已有过修改*/

else

{w0=0;

if(w2==1)

stu[k]=s;

}/*走到这里是由于用户没有确认这次修改(在调用修改函数w1=modify_data(k,n);

时没有确认).使W0=0,为了让终止循环,

stu[k]=s,则把备份的s恢复给stu[k](即当次修改的),这样的好处是确保在此之前修改过的成功保存,而本次(用户没有确认的)不修改*/

if(w0!

=1&

w2==1)/*W0不等于1则表示正常返回,w2=1表示在此之前有过修改,这时就保存用户已确认修改的并返回*/

save(n);

/*w2不等于1表示在此次之前没有修改过(即:

第一次),而又反悔这次修改,则不保存返回*/

while(w0==1);

menu();

/****************删除模块****************/

del()/*删除模块*/

inti,j,n,k,c,w0=1;

/*给用户看全部记录以便确认要删除的记录*/

=0)

(i%10==0))/*目的是分屏显示,每10个一屏*/

\n\nRememberNO.whichneededdel.passanykeytocontiune..."

\n\nEnterNO.thatyouwanttoDelete!

/*找到要修改的记录的下标赋给K*/

/*K=-1,表示没有找到相同之的*/

\n\t1).sure2).noanddelanother3).backwithoutsaveall[]\b\b"

if(c==1)

{stu[k].ave=0;

/*stu[k].ave=0用来标识这个记录是要删除的.保存时则不保存stu[k].ave=0的数据*/

\n\nSuccessful^_^.\n\nAreyouagain?

\n\t1).again2).backtomenu\t[]\b\b"

/*问是否继续*/

if(c==3)w0=0;

/*w0=0不删除直接返回*/

c!

=3)/*只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录*/

/*返回主介面*/

/****************浏览(全部)模块****************/

browse()/*浏览(全部)模块*/

{inti,j,n;

/*加载记录*/

//clrscr();

\n\nPassanykeytocontiune..."

\tThereare%drecord.\n"

n);

\nPassanykeytoback..."

/*按任意健*/

/****************查找模块****************/

search()/*查找模块*/

{inti,n,k,w1=1,w2,w3,w4;

structstudents;

{

{k=-1;

\n\nEnternamethatyouwanttosearch!

name:

s.name);

if(strcmp(s.name,stu[i].name)==0)

if(k==-1)

please"

\n\nAreyouagain?

\n\t1).again2).NOandback[]\b\b"

w2=0;

//保证在第一次找到的基础上再查找找不到时能退出

while(k==-1&

w1==1);

/*如果w1不等于1则直接返回*/

w4=0;

w3=0;

=-1)/*k不等于-1表示找到,如果找到则选择操作*/

\n\nWhatdoyouwanttodo?

\n\t1).Searchanother2).Modify3).Delete4).Backmenu[]\b\b"

w2);

switch(w2)

{case2:

w3=modify_data(k,n);

/*调用修改数据函数*/

\n\t1).Sure2).Noandback[]\b\b"

w4);

if(w4==1)

stu[k].ave=0;

/*表示删除*/

break;

if(w3==1||w4==1)

{save(n);

\n\nSuccessful.^_^."

\n\t1).Searchanother2).Back[]\b\b"

while(w2==1);

/****************插入模块****************/

insert()/*插入模块*/

{inti,j,n,c;

\nInputonedata.\n"

{input(n);

/*输入到第n个记录,即插入到最后*/

printf_one(n);

\n\nAreyousure?

\n\n\t1).Sure\t2).cancelsndagain\t3).Backwithuotsave[]\b\b"

{for(j=0;

j++)/*用起泡法排序*/

i>

j;

i--)

if(stu[i].ave>

stu[i-1].ave)

{s=stu[i-1];

stu[i-1]=stu[i];

stu[i]=s;

save(n+1);

elseif(c!

=2)menu();

while(c==2);

/****************排序模块(按平均成绩)****************/

order()/*排序模块(按平均成绩)*/

{inti,j,k,n;

n-1;

i++)/*选择法排序*/

for(j=i+1;

if(stu[j].ave>

stu[k].ave)k=j;

stu[i]=stu[k];

stu[k]=s;

/****************主界面****************/

menu()/*主界面*/

{intn,w1;

/*清屏*/

\t\t*********************MENU*********************\n\n"

\t\t\t\t1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1