学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx

上传人:b****7 文档编号:9645425 上传时间:2023-02-05 格式:DOCX 页数:32 大小:20.74KB
下载 相关 举报
学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx_第1页
第1页 / 共32页
学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx_第2页
第2页 / 共32页
学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx_第3页
第3页 / 共32页
学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx_第4页
第4页 / 共32页
学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx

《学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx(32页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能.docx

学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能

 

/*4.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,编写一程序。

应用简单菜单和子函数调用方式实现下面的功能:

(1)从键盘输入10个学生的以上内容,存入文件stud.txt

(2)浏览显示成绩表(要求显示格式成绩时,格式较规范)

(3)将10个学生按照平均分数从高到低进行排序,结果存入文件stud1.txt

(4)输入任意的一个课程名,分数从高到低进行排序,结果存入文件stud2.txt

(5)向文件stud1.txt中插入一个记录,成绩排序不变,结果存入文件stud1.txt*/

 

#include"stdio.h"/*头文件名*/

#include"stdlib.h"/*头文件名,因为程序中用到了exit(结束程序)和函数*/

#include"string.h"/*头文件名,因为程序中用到了字符串函数*/

#defineN1000

/*************************************************************************************************/

/*****************************************定义结构体模块******************************************/

structstudent{

longnum;/*定义学生学号为长整型*/

charname[20];/*定义姓名为字符型,占12个字符*/

floatmath,English,physics,total,average;

floatTOT_math,TOT_English,TOT_physics,TOT_total,TOT_aver;

floataver_math,aver_English,aver_physics,aver_total,aver_average;

}student;/*定义结构体名称为student*/

/*************************************************************************************************/

/****************************************输入初始值模块*******************************************/

voidinput(structstudent*p,intsize){

inti;

for(i=0;i

printf("请输入学号:

");

while

(1){scanf("%ld",&p[i].num);

if(long(p[i].num)!

=p[i].num||long(p[i].num)<=0){/*输入判断*/

printf("输入错误,学号必须为整数,请重新输入:

");

fflush(stdin);}

else{break;}}

printf("请输入姓名:

");scanf("%s",p[i].name);

printf("请输入数学成绩:

");

while

(1){scanf("%f",&p[i].math);

if(float(p[i].math)!

=p[i].math||float(p[i].math)<=0||p[i].math>100||p[i].math<0){

printf("输入错误,数学成绩必须为0~100之间的数,请重新输入:

");

fflush(stdin);}

else{break;}}

printf("请输入英语成绩:

");

while

(1){scanf("%f",&p[i].English);

if(float(p[i].English)!

=p[i].English||float(p[i].English)<=0||p[i].English>100||p[i].English<0){

printf("输入错误,英语成绩必须为0~100之间的数,请重新输入:

");

fflush(stdin);}

else{break;}}

printf("请输入物理成绩:

");

while

(1){scanf("%f",&p[i].physics);

if(float(p[i].physics)!

=p[i].physics||float(p[i].physics)<=0||p[i].physics>100||p[i].physics<0){

printf("输入错误,英语成绩必须为0~100之间的数,请重新输入:

");

fflush(stdin);}

else{break;}}

printf("\n");

}

printf("信息录入成功!

\n\n");

}

/************************************************************************************************************/

/*************************************保存初始值到"初始二进制值.txt"模块*************************************/

voidsave(structstudent*p,intsize){/*保存模块*/

FILE*fp;inti;

if((fp=fopen("初始值二进制值.txt","wb+"))==NULL){/*建立文件*/

printf("cannotopenthefile\n");

}

for(i=0;i

fwrite(&p[i],sizeof(student),1,fp);}/*快写函数,写到磁盘中为二进制数*/

fclose(fp);/*关闭文件*/

}

/************************************************************************************************************/

/*************************************保存初始值到"初始二进制值.txt"模块*************************************/

voidsave0(structstudent*p,intsize){/*保存模块*/

FILE*fp;inti;

if((fp=fopen("初始值二进制值1.txt","ab+"))==NULL){/*建立文件*/

printf("cannotopenthefile\n");

}

for(i=0;i

fwrite(&p[i],sizeof(student),1,fp);}/*快写函数,写到磁盘中为二进制数*/

fclose(fp);/*关闭文件*/

}

 

/************************************************************************************************************/

/******************************************保存初始值到可浏览文件模块****************************************/

voidSAVE(structstudent*p,intsize){

FILE*fp;

inti,b=0;

charname[20];

printf("请输入保存初始值的可浏览文件名:

");

scanf("%s",name);

if((fp=fopen(name,"w+"))==NULL){

printf("文件名输入错误!

!

\n");

}

fprintf(fp,"\n\t\t----------------------------------------------------------\n");

fprintf(fp,"\t\t序号学号姓名数学英语物理\n");

fprintf(fp,"\t\t----------------------------------------------------------");

fprintf(fp,"\n");

for(i=0;i

fprintf(fp,"\t\t%-6d%-12d%-12s%-8.2f%-8.2f%-8.2f\n",b,p[i].num,p[i].name,p[i].math,p[i].English,p[i].physics);

fprintf(fp,"\t\t----------------------------------------------------------\n");

}

fclose(fp);

printf("\n文件保存成功!

\n\n");

}

/************************************************************************************************************/

/******************************************读取初始值模块****************************************************/

intread(structstudent*p,intsize){

FILE*fp;inti,n=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!

!

\n");}

for(i=0;i

if(fread(&p[i],sizeof(structstudent),1,fp)!

=0){n++;}}

fclose(fp);

returnn;

}

/************************************************************************************************************/

/******************************************读取输出初始值模块************************************************/

voidread_print(structstudent*p,intsize){

FILE*fp;inti,n=0,b=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!

!

\n");

}printf("\n\t\t----------------------------------------------------------\n");

printf("\t\t序号学号姓名数学英语物理\n");

printf("\t\t----------------------------------------------------------\n");

for(i=0;i

if(fread(&p[i],sizeof(structstudent),1,fp)!

=0){n++;}}

for(i=0;i

printf("\t\t%-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].math,p[i].English);

printf("%-8.2f\n",p[i].physics);

printf("\t\t----------------------------------------------------------\n");

}

printf("\n\n");

fclose(fp);

}

/************************************************************************************************************/

/*********************************************计算总分和平均分模块*******************************************/

voidtotal_average(structstudent*p,intsize){/*求每位同学的总分和平均分模块*/

inti;

for(i=0;i

p[i].total=p[i].math+p[i].English+p[i].physics;

/*每个同学的总分等于三科成绩之和*/

p[i].average=p[i].total/3;/*每个同学的平均分等于总分的1/3*/

}

}

/************************************************************************************************************/

/**************************************输出初始值总分和平均分模块*******************************************/

voidread_print1(structstudent*p,intsize){

voidtotal_average(structstudent*p,intsize);

FILE*fp;inti,n=0,b=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!

!

\n");

}printf("\n\t---------------------------------------------------------------------------\n");

printf("\t序号学号姓名数学英语物理总分平均分\n");

printf("\t---------------------------------------------------------------------------\n");

for(i=0;i

if(fread(&p[i],sizeof(structstudent),1,fp)!

=0){n++;}}

total_average(p,n);

for(i=0;i

printf("\t%-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].math,p[i].English);

printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);

printf("\t---------------------------------------------------------------------------\n");

}

printf("\n\n");

fclose(fp);

}

/************************************************************************************************************/

/***************************************将初始值按平均分排序模块*********************************************/

voidrange(structstudent*p,intsize){/*所有同学的成绩按平均分由高到低排序模块*/

inti,j,k;

structstudenttemp;/*定义一个student类型的变量备用*/

for(i=0;i

k=i;

for(j=i+1;j

if(p[k].average

temp=p[k];

p[k]=p[j];

p[j]=temp;}

}

}

/************************************************************************************************************/

/************************************输出初始值按平均分排序的结果模块****************************************/

intread_print2(structstudent*p,intsize){

voidtotal_average(structstudent*p,intsize);

voidrange(structstudent*p,intsize);

FILE*fp;inti,n=0,b=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!

!

\n");

}printf("\n\t---------------------------------------------------------------------------\n");

printf("\t学号姓名数学英语物理总分平均分名次\n");

printf("\t---------------------------------------------------------------------------\n");

for(i=0;i

if(fread(&p[i],sizeof(structstudent),1,fp)!

=0){n++;}}

total_average(p,n);

range(p,n);

for(i=0;i

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English);

printf("%-8.2f%-10.2f%-8.2f%d\n",p[i].physics,p[i].total,p[i].average,b);

printf("\t---------------------------------------------------------------------------\n");

}

printf("\n\n");

fclose(fp);

returnn;

}

/************************************************************************************************************/

/********************保存初始值按平均分排序后结果到"初始值按平均分排序二进制值.txt"模块**********************************/

voidsave1(structstudent*p,intsize){/*保存模块*/

FILE*fp;inti;

if((fp=fopen("按平均分排序二进制值.txt","wb+"))==NULL){/*建立文件*/

printf("cannotopenthefile\n");

}

for(i=0;i

fwrite(&p[i],sizeof(student),1,fp);}/*快写函数,写到磁盘中为二进制数*/

fclose(fp);/*关闭文件*/

}

/************************************************************************************************************/

/******************************************读取排序后结果模块************************************************

intread1(structstudent*p,intsize){

FILE*fp;inti,n=0;

if((fp=fopen("按平均分排序二进制值.txt","r+"))==NULL){

printf("文件名输入错误!

!

\n");}

for(i=0;i

if(fread(&p[i],sizeof(structstudent),1,fp)!

=0){n++;}}

fclose(fp);

returnn;

}

/************************************************************************************************************/

/*******************************保存初始值按平均分排序后结果到可浏览文件模块*********************************/

voidSAVE1(structstudent*p,intsize){

FILE*fp;

inti,b=0;

charname[20];

printf("请输入保存排序结果的文件名:

");

scanf("%s",name);

if((fp=fopen(name,"w+"))==NULL){

printf("文件名输入错误!

!

\n");

}

fprintf(fp,"\n\t-----------------------------------

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

当前位置:首页 > 经管营销 > 销售营销

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

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