C语言学生成绩简单管理程序附加流程图Word文档格式.docx

上传人:b****6 文档编号:16550859 上传时间:2022-11-24 格式:DOCX 页数:18 大小:36.04KB
下载 相关 举报
C语言学生成绩简单管理程序附加流程图Word文档格式.docx_第1页
第1页 / 共18页
C语言学生成绩简单管理程序附加流程图Word文档格式.docx_第2页
第2页 / 共18页
C语言学生成绩简单管理程序附加流程图Word文档格式.docx_第3页
第3页 / 共18页
C语言学生成绩简单管理程序附加流程图Word文档格式.docx_第4页
第4页 / 共18页
C语言学生成绩简单管理程序附加流程图Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言学生成绩简单管理程序附加流程图Word文档格式.docx

《C语言学生成绩简单管理程序附加流程图Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩简单管理程序附加流程图Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

C语言学生成绩简单管理程序附加流程图Word文档格式.docx

/*xxx如果没有定义xxx*/

#defineH_STUDENT_HH 

/*xxx定义xx*/

#include"

stdio.h"

string.h"

malloc.h"

#defineLENsizeof(structmessage_student) 

/*一个结构体数组元素的长度*/

#definenumsubs5 

 

/*学科数目*/

typedefstructmessage_student 

/*结构体定义*/

{

charnumber[6];

charname[20];

charsex[4];

floatsubject[numsubs];

floatscore;

floataverage;

intindex;

}student;

externintnumstus;

/*学生数目*/

externstudent*pointer;

/*指向结构体数组*/

externintlens;

intmenu_select();

/*函数声明*/

intopenfile(studentstu[]);

intfindrecord(studentstud[]);

intwritetotext(studentstud[]);

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)

printf("

没有可被查找的记录\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);

getchar();

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<

numstus)

fscanf(fp,"

%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"

是否显示纪录?

gets(str);

if(str[0]=='

display(stu,0,numstus-1);

return(0);

voidsort(studentstud[])

inti,j=0;

charstr[5];

student*p;

p=stud;

if(numstus==0)

没有可供查询的记录!

while

(1)

;

请输入查询方式:

(直接输入回车则结束查询操作)\n"

1.按照学号\t"

2.按照姓名\t"

3.按照名次\n"

if(strlen(str)==0)break;

请输入排序次序:

1.升序排列\t"

2.降序排列\n"

sortnum2(p);

else

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;

student*p;

p=stud;

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;

if(numstus==0)

while

(1)

下面将统计考试成绩\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 

姓名:

分数:

%.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

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

当前位置:首页 > 高等教育 > 法学

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

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