成绩管理程序文档格式.docx
《成绩管理程序文档格式.docx》由会员分享,可在线阅读,更多相关《成绩管理程序文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
newchengji\n"
\t1:
showchengji\n"
\t2:
shengxu\n"
\t3:
addchengji\n"
\t4:
searchchengji\n"
\t5:
chaxunchengji\n"
\t6:
xiugaichengji\n"
\t7:
deletechengji\n"
\t8:
copychengji\n"
\t9:
paixuchengji\n"
\t10:
inputchengji\n"
\t11:
outputchengji\n"
\t12:
quit\n"
selectachoice:
scanf("
%d"
&
i);
%d\n"
i);
returni;
voidhandle_menu()
{intmenu_select();
for(;
;
)
{switch(menu_select())
{case0:
newRecords();
break;
case1:
display();
case2:
case3:
addRecords();
case4:
case5:
queryInfo();
case6:
modifyRecord();
case7:
removeRecord();
case8:
case9:
sortInfo();
case10:
saveRecords();
case11:
loadRecords();
case12:
quit();
}}
voidnewRecords()
{charstr[5];
if(numStus!
=0)
{if(saveTag==1)
therearerecprds,makeachoic"
whetherrecordornot\n"
gets(str);
if(str[0]!
='
n'
&
str[0]!
N'
numStus=0;
voidquit()
if(saveTag==1)
whethersaverecords?
Y/n"
free(records);
exit(0);
voidshowTable()
{intj;
nunbers\tname\tsex"
for(j=0;
j<
NUM_SUBJECT;
j++)
\t%s"
subject[j]);
\tsum\taverage\tindex\n"
voiddisplay(void)
{inti,j;
if(numStus==0)
therearenorecords"
return;
showTable();
for(i=0;
i<
numStus;
i++)
{
%s\t%s\t%s"
records[i].number,records[i].name,records[i].gender);
j++)/*20*/
\t%.1f"
records[i].score[j]);
\t%.1f\t%.1f\t%d\n"
records[i].sum,records[i].average,records[i].index);
if(i%20==0&
i!
inputanywordsandcontinue\n"
getch();
\n\n"
voidaddRecords()
{charstr[10];
intj;
floatmark,sum;
therearenorecords\n"
elseprintf("
creatnewrecords\n"
while
(1)
addanewrecordsure?
(y/n)"
if(str[0]=='
)/**/
if(numStus>
=arraySize)/*,*/
{records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));
memoryfailed!
arraySize=arraySize+INCR_SIZE;
pleaseinputnumber:
gets(records[numStus].number);
pleaseinputname:
gets(records[numStus].name);
pleaseinputsex(0womam,1man)"
0'
strcpy(records[numStus].gender,"
woman"
else
man"
sum=0;
input%schengji"
mark=(float)atof(str);
records[numStus].score[j]=mark;
sum+=mark;
records[numStus].sum=sum;
records[numStus].average=sum/NUM_SUBJECT;
records[numStus].index=getIndex(sum);
numStus++;
thereare%dmessages\n"
numStus);
saveTag=1;
intgetIndex(floatsum)
intcount=0;
{if(records[i].sum<
sum)
{records[i].index++;
elseif(records[i].sum>
{count++;
returncount+1;
intsaveRecords()
{FILE*fp;
charfname[30];
therearenorecordstosave"
return-1;
inputthenameoffileyouwillsave:
gets(fname);
if(strlen(fname)==0)
strcpy(fname,"
stu_info"
if((fp=fopen(fname,"
wb"
))==NULL)
cannotsavefile\n"
\nsavefile....\n"
fwrite(records,sizeof(StuInfo)*numStus,1,fp);
saveTag=0;
return0;
intloadRecords(void)
FILE*fp;
charstr[5];
=0&
saveTag==0)
choicewhethertocoverrecords(y),or"
addtorepresentrecords(n)?
pressentertocoverrecords\n"
||str[0]=='
{saveTag=1;
{if(saveTag==1)
loadfilewillmodifytherecords,"
whethersavetherecordsornot?
inputfilenametoload:
pressentertoselectstu_info."
rb"
cannotopenfile\n"
\ngetfile...\n"
while(!
feof(fp))
{if(numStus>
=arraySize)
{records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));
memoryfailed"
if(fread(&
records[numStus],sizeof(StuInfo),1,fp)!
=1)
/*ø
'
add_«
'
*/
records[numStus].index=getIndex(records[numStus].sum);
fclose(fp);
thereare%drecords."
intfindRecord(char*target,inttargetType,intfrom)
for(i=from;
{if((targetType==0&
strcmp(target,records[i].number)==0)||
(targetType==1&
strcmp(target,records[i].name)==0)||
(targetType==2&
atoi(target)==records[i].index))
voidqueryInfo()
chartarget[20];
inttype;
intcount;
inti,j;
norecords"
choicehowtocheck:
1.numbers\n"
2.name\n"
3.index"
if(strlen(str)==0)break;
1'
inputthenumbertocheck:
gets(target);
type=0;
elseif(str[0]=='
2'
inputnametocheck:
type=1;
inputtheindextocheck:
type=2;
i=findRecord(target,type,0);
if(i==1)
{showTable();
count=0;
while(i!
=-1)
records[i].sum,records[i].average,
records[i].index);
i=findRecord(target,type,i+1);
if(count==0)
nostudentsuitable\n"
findtotal%drecords.\n\n"
count);
voidremoveRecord()
inttmpi;
norecordtodelete"
howtofindrecordstodelete:
pressentertoover\n"
1.number\n"
3.index\n"
inputnumber:
}else
inputname:
else{printf("
inputindex:
if(i==-1)
nosuitablerecord\n"
suretodeletetherecord?
y'
||str[0]!
Y'
{numStus--;
tmpi=records[i].index;
for(j=i;
{copyRecord(&
records[j+1],&
records[j]);
{if(records[j].index>
tmpi)
records[j].index--;
voidcopyRecord(StuInfo*src,StuInfo*dest)
strcpy(dest->
number,src->
number);
name,src->
name);
gender,src->
gender);
{dest->
score[j]=src->
score[j];
}dest->
sum=src->
sum;
dest->
average=src->
average;
index=src->
index;
voidmodifyRecord()
floatsum,mark;
norecordsavailable\n"
suretomodifyrecords?
:
{tmpi=records[i].index;
pleaseinputanewrecord:
gets(records[i].number);
gets(records[i].name);
inputsex(0:
woman,1:
man):
strcpy(records[i].gender,"
input%sscores:
records[i].score[j]=mark;
records[i].sum=sum;
records[i].average=sum/NUM_SUBJECT;
{if(j==i)continue;
if(records[j].index>
tmpi&
records[j].sum>
elseif(records[j].index<
=tmpi&
records[j].sum<
records[j].index++;
if(records[j].sum>
count++;
records[i].index=count+1;
}saveTag=1;
voidsortInfo()
StuInfotmps;
choicehowtosort:
1.numberup\n"
2.numberdown\n"
p