C语言课题Word格式文档下载.docx
《C语言课题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言课题Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
voidwelcome();
voiddisplay1();
voidshowtable();
voidsort(studentstu[]);
voiddeleterecord(studentstu[],inti);
voidaddrecord(studentstud[]);
voiddisplay(studentstud[],intn1,intn2);
voidamendrecord(studentstud[]);
voidcount(studentstud[]);
voidsortnum(studentstud[]);
voidsortnum2(studentstud[]);
voidsortname(studentstud[]);
voidsortname2(studentstud[]);
voidsortcount(studentstud[]);
voidsortcount2(studentstud[]);
voidstatistic(studentstud[]);
#endif
intmenu_select()
charc;
printf("
\n\n"
);
|1.增加学生记录5.统计信息|\n"
|2.查询学生记录6.打开文件|\n"
|3.修改学生记录7.保存文件|\n"
|4.学生纪录排序8.显示记录|\n"
|0.退出系统|\n"
请选择(0-8):
"
c=getchar();
getchar();
return(c-'
0'
}
intfindrecord(studentstud[])/*查找信息*/
charstr[2];
inti,num;
if(numstus==0)
没有可被查找的记录\n"
return-1;
else
以何种方式查找?
\n1.学号\t2.姓名\t3.名次\n"
gets(str);
if(str[0]=='
1'
)/*按学号查找*/
请输入学号:
for(i=0;
i<
=numstus;
i++)
if(strcmp(str,stud[i].number)==0)
display(stud,i,i);
break;
elsecontinue;
elseif(str[0]=='
2'
)/*按姓名查找*/
请输入姓名:
if(strcmp(str,stud[i].name)==0)
3'
)/*按名次查找*/
请输入名次:
scanf("
%d"
&
num);
if(num==stud[i].index)
if(i>
numstus)
没有查找所要的信息。
\n"
returni;
#include"
intopenfile(studentstu[])
inti=0,j;
FILE*fp;
charfilename[20],str[2];
if(numstus!
=0)
已经有记录存在,是否保存?
(y/n)"
y'
||str[0]=='
Y'
)
writetotext(stu);
请输入文件名:
gets(filename);
numstus=0;
if((fp=fopen(filename,"
rb+"
))==NULL)
无法打开该文件\n"
return(-1);
fscanf(fp,"
numstus);
fgetc(fp);
while(i<
%s"
stu[i].number);
stu[i].name);
stu[i].sex);
for(j=0;
j<
numsubs;
j++)
%f"
stu[i].subject[j]);
stu[i].score);
stu[i].average);
stu[i].index);
i++;
fclose(fp);
文件读取成功\n"
是否显示纪录?
display(stu,0,numstus-1);
return(0);
voidsort(studentstud[])
inti,j=0;
charstr[5];
student*p;
p=stud;
没有可供查询的记录!
while
(1)
;
请输入查询方式:
(直接输入回车则结束查询操作)\n"
1.按照学号\t"
2.按照姓名\t"
3.按照名次\n"
if(strlen(str)==0)break;
请输入排序次序:
1.升序排列\t"
2.降序排列\n"
sortnum2(p);
sortnum(p);
display(stud,0,numstus-1);
sortname2(p);
sortname(p);
sortcount2(p);
sortcount(p);
elseprintf("
请输入1~3"
是否退出排序?
)break;
return;
voidsortnum(studentstud[])
inti,j;
studenttemp;
numstus;
numstus-i-1;
if(strcmp(stud[j+1].number,stud[j].number)>
0)
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
voidsortnum2(studentstud[])
if(strcmp(stud[j].number,stud[j+1].number)>
voidsortname(studentstud[])
if(strcmp(stud[j+1].name,stud[j].name)>
voidsortname2(studentstud[])
if(strcmp(stud[j].name,stud[j+1].name)>
voidsortcount(studentstud[])
if(stud[j+1].index>
stud[j].index)
voidsortcount2(studentstud[])
if(stud[j].index>
stud[j+1].index)
voidstatistic(studentstud[])/*新增功能,输出统计信息*/
inti,j=0,k=0;
charc1,str[2];
floataverage[numsubs],sum=0;
下面将统计考试成绩\n"
请选择你要统计哪科的成绩1.A\t2.B\t3.C\t4.D\t5.E\n"
c1=getchar();
\t一共有个%d记录\n"
numstus);
/*总共记录数*/
switch(c1)
case'
:
i++)/*循环输入判断*/
sum+=stud[i].subject[0];
if(stud[k].subject[0]>
stud[i].subject[0])k=i;
if(stud[j].subject[0]<
stud[i].subject[0])j=i;
average[0]=sum/numstus;
\t科目A的最高分:
/*最高分*/
\t\t学号:
%s姓名:
%s分数:
%.2f\n"
stud[j].number,stud[j].name,stud[j].subject[0]);
\t科目A的最低分是:
/*最低分*/
stud[k].number,stud[k].name,stud[k].subject[0]);
\t科目A的平均分是%5.2f\n"
average[0]);
/*平均分*/
sum+=stud[i].subject[1];
if(stud[k].subject[1]>
stud[i].subject[1])k=i;
if(stud[j].subject[1]<
stud[i].subject[1])j=i;
average[1]=sum/numstus;
\t科目B的最高分:
stud[j].number,stud[j].name,stud[j].subject[1]);
\t科目B的最低分是:
stud[k].number,stud[k].name,stud[k].subject[1]);
\t科目B的平均分是%5.2f\n"
average[1]);
sum+=stud[i].subject[2];
if(stud[k].subject[2]>
stud[i].subject[2])k=i;
if(stud[j].subject[2]<
stud[i].subject[2])j=i;
average[2]=sum/numstus;
\t科目C的最高分:
stud[j].number,stud[j].name,stud[j].subject[2]);
\t科目C的最低分是:
stud[k].number,stud[k].name,stud[k].subject[2]);
\t科目C的平均分是%5.2f\n"
average[2]);
4'
sum+=stud[i].subject[3];
if(stud[k].subject[3]>
stud[i].subject[3])k=i;
if(stud[j].subject[3]<
stud[i].subject[3])j=i;
average[3]=sum/numstus;
\t科目D的最高分:
stud[j].number,stud[j].name,stud[j].subject[3]);
\t科目D的最低分是:
stud[k].number,stud[k].name,stud[k].subject[3]);
\t科目D的平均分是%5.2f\n"
average[3]);
5'
sum+=stud[i].subject[4];
if(stud[k].subject[4]>
stud[i].subject[4])k=i;
if(stud[j].subject[4]<
stud[i].subject[4])j=i;
average[4]=sum/numstus;
\t科目E的最高分:
stud[j].number,stud[j].name,stud[j].subject[4]);
\t科目E的最低分是:
stud[k].number,stud[k].name,stud[k].subject[4]);
\t科目E的平均分是%5.2f\n"
average[4]);
default:
输入错误!
请输入1~5之间的数\n"
sum=0;
是否继续进行统计?
);
elsebreak;
intwritetotext(studentstud[])/*将所有记录写入文件*/
charfilename[20];
输入文件名称:
fp=fopen(filename,"
w"
fprintf(fp,"
%d\n"
%s%s%s"
stud[i].number,stud[i].name,stud[i].sex);
%f"
stud[i].subject[j]);
%f%f%d"
stud[i].score,stud[i].average,stud[i].index);
已成功存储!
return0;
voidwelcome()
\t*************************************************************\n"
\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t倾情奉献欢迎使用!
voidshowtable()
---------------------------------------------------------------------------------------\n"
学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n"
--------------------------------------------------------------------------