学生成绩管理系统C语言版.docx

上传人:b****6 文档编号:9107750 上传时间:2023-02-03 格式:DOCX 页数:17 大小:17.78KB
下载 相关 举报
学生成绩管理系统C语言版.docx_第1页
第1页 / 共17页
学生成绩管理系统C语言版.docx_第2页
第2页 / 共17页
学生成绩管理系统C语言版.docx_第3页
第3页 / 共17页
学生成绩管理系统C语言版.docx_第4页
第4页 / 共17页
学生成绩管理系统C语言版.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统C语言版.docx

《学生成绩管理系统C语言版.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言版.docx(17页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统C语言版.docx

学生成绩管理系统C语言版

#include/*常用的标准输入输出函数*/

#include/*access 函数原型包含*/

#include/*exit 函数原型包含*/

#include/*strcmp 函数原型包含*/

#include

#include

#include 

#define N 100/*最多的学生人数*/

 

struct student/*学生结构体定义*/

{

char clas[15];/*班级*/

char no[13];/*学号,最多为 12 位*/

char name[20];/*姓名*/

char sex[8];/*性别*/

char addr[30];/*地址*/

char phone[15];/*电话*/

float score[5];/*存储五门课成绩*/

float ave;/*平均分*/

}stu[N];

int num;

 

void init();

void weihu();

void tongji();

void tongji1();

void tongji2();

void sort1();

void find1();

void save();

void newfile();

void read1();

void newfile();

void new1();

void delete1();

void modify();

void sortscore();

int findname(char cname[]);

 

void main()

{

int choice=1;

system("COLOR 2f");

printf("~~~~~~~~~~~~~~~~~学生信息管理系统~~~~~~~~~~~~~~~~\n");

printf("********\n");

printf("***欢迎进入!

!

!

***\n");

printf("**\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

init();

while(choice!

=5)

{

system("COLOR 1F");

printf("*******************************\n");

printf("****\n");

printf("**主菜单**\n");

printf("**1:

学生成绩维护**\n");

printf("**2:

学生成绩统计**\n");

printf("**3:

学生成绩排序**\n");

printf("**4:

学生成绩查询**\n");

printf("**5:

退出**\n");

printf("****\n");

printf("*******************************\n");

printf("请选择:

");

scanf("%d",&choice);

switch(choice)

{

case 1:

weihu();

break;

case 2:

tongji();

break;

case 3:

sort1();

break;

case 4:

find1();

break;

case 5:

save();

printf("谢谢使用本系统!

!

\n");

break;

default:

printf("选择错误,请重新选择!

");

}

}

}

//1)输出学生成绩(公共函数)

void output()/*输出学生数据*/

{

int i,j;

for(i=0;i

{

printf("班级姓名学号性别地址电话

\n ");

printf("%s%s%s%s%s

%s\n",stu[i].clas,stu[i].name,stu[i].no,stu[i].sex,stu[i].addr,stu[i].phone);

printf("\n");

printf("C 语言大学物理网页设计高数英语\n");

for(j=0;j<5;j++)

printf("%-12.f",stu[i].score[j]);

printf("\n");

printf("\n");

}

}

//2)系统初始化代码

void init()

{

if(access("stu[i].dat",0))/*判断文件是否存在*/

newfile();/*不存在创建新的数据文件*/

else

read1();/*若存在,从文件中读取数据*/

 

}

//3)创立新的数据文件

void newfile()/*从键盘输入学生成绩并保存到文件中*/

{

int i;

FILE *fp;

if((fp=fopen("F:

\\stu.dat","wb"))==NULL)/*创建二进制文件*/

{

printf("文件创建失败!

请重新运行程序。

\n");

exit(0);/*终止程序运行*/

}

printf("请输入学生人数:

");

scanf("%d",&num);

for(i=0;i

{

printf("班级:

");

getchar();

gets(stu[i].clas);

printf("姓名:

");

gets(stu[i].name);

printf("请输入第%d 位学生的学号:

",i+1);

gets(stu[i].no);printf("性别:

");

gets(stu[i].sex);

printf("地址:

");

gets(stu[i].addr);

printf("电话:

");

gets(stu[i].phone);

printf("C 语言:

");

scanf("%f",&stu[i].score[0]);

printf("大学物理:

");

scanf("%f",&stu[i].score[1]);

printf("网页设计:

");

scanf("%f",&stu[i].score[2]);

printf("高数:

");

scanf("%f",&stu[i].score[3]);

printf("英语:

");

scanf("%f",&stu[i].score[4]);

fwrite(&stu,sizeof(stu),1,fp);

printf("请输入下一条学生信息\n");/*把第 i+1 名学生成绩写入文件

*/

}

fclose(fp);

printf("你刚刚输入的数据共有%d 个学生成绩。

详细数据为:

\n",num);

output();

}

//4)从数据文件中读取成绩

void read1()

{

FILE *fp;

num=0;/*num 为数据文件实际存储成绩人数*/

fp=fopen("stu.dat","r");

if(fp==NULL)/*文件不存在*/

{

printf("文件打开失败!

请重新运行程序。

\n");

exit(0);/*终止程序运行*/

}

while(!

feof(fp))

{

fread(&stu[num],1,sizeof(struct student),fp);

num++;

}

num--;

fclose(fp);

printf("现在共有%d 个学生成绩,初始数据为:

\n",num);

output();/*输出读取结果*/

}

//5)学生成绩维护

void weihu()

{

int choice1;

system("COLOR 2F");

printf("*******************************************\n");

printf("****\n");

printf("**学生成绩维护子菜单**\n");

printf("** 1.新增**\n");

printf("** 2.删除(按学号)**\n");

printf("** 3.修改**\n");

printf("****\n");

printf("********************************************\n");

printf("请选择");

scanf("%d",&choice1);

switch(choice1)

{

case 1:

new1();

break;

case 2:

delete1();

break;

case 3:

modify();

break;

default:

printf("选择错误,请重新选择!

\n");

}

}

//6)新增一个学生成绩

void new1()

{

printf("请输入班级:

");

getchar();

gets(stu[num].clas);

printf("请输入学号:

");

gets(stu[num].no);

printf("姓名:

");

gets(stu[num].name);

printf("性别:

");

gets(stu[num].sex);

printf("地址:

");

gets(stu[num].addr);

printf("电话:

");

gets(stu[num].phone);

printf("C 语言:

");

scanf("%f",&stu[num].score[0]);

printf("大学物理:

");

scanf("%f",&stu[num].score[1]);

printf("网页设计:

");

scanf("%f",&stu[num].score[2]);

printf("高数:

");

scanf("%f",&stu[num].score[3]);

printf("英语:

");

scanf("%f",&stu[num].score[4]);

num++;

printf("现在共有%d 个学生成绩,数据为:

\n",num);

output();

}

//7)按学号查找

int find(char sno[])

{

int i;

for(i=0;i

if(strcmp(stu[i].no,sno)==0)/*判断两个字符串相等*/

 

return i;/*查找成功*/

return -1;/*查找失败*/

}

//删除学生信息

void delete1()

{

char cno[13];

int i,j;

printf("请输入要删除的学号:

\n");

getchar();

gets(cno);

i=find(cno);

if(i==-1)

{

printf("不存在该学号!

\n");

}

else

{

for(j=i;j

stu[j]=stu[j+1];

num--;

printf("删除后还有%d 个学生成绩,数据为:

\n",num);

output();

}

}

//修改学生信息

void modify()

{

char cno[13];

int i,j;

printf("请输入要修改学生的学号:

\n");

getchar();

gets(cno);

i=find(cno);

printf("班级:

");

gets(stu[i].clas);

printf("姓名:

");

gets(stu[i].name);

printf("性别:

");

gets(stu[i].sex);

printf("地址:

");

gets(stu[i].addr);

printf("电话:

");

gets(stu[i].phone);

printf("C 语言:

");

scanf("%f",&stu[i].score[0]);

printf("大学物理:

");

scanf("%f",&stu[i].score[1]);

printf("网页设计:

");

scanf("%f",&stu[i].score[2]);

printf("高数:

");

scanf("%f",&stu[i].score[3]);

printf("英语:

");

scanf("%f",&stu[i].score[4]);

printf("修改后为:

\n");

printf("%s\t%s\t%s\t%s\t%s\t%s\t\n",stu[i].clas,stu[i].name,stu[i].no,stu[i].sex,stu[i].addr,

stu[i].phone);

printf("C 语言大学物理网页设计高数英语\n");

for(j=0;j<5;j++)

printf("%-12.f",stu[i].score[j]);

printf("\n");

}

//10)统计

void tongji()

{

int choice2;

system("COLOR 3F");

printf("***************************************************\n");

printf("******\n");

printf("***统计子菜单***\n");

printf("*** 1.计算每门课程平均分***\n");

printf("*** 2.计算每个学生平均分***\n");

printf("******\n");

printf("***************************************************\n");

printf("请选择:

");

scanf("%d",&choice2);

if(choice2==1)

tongji1();

else if(choice2==2)

tongji2();

else

printf("选择错误,请重新选择!

\n");

}

//11)计算每个学生平均分

void tongji1()

{

int i,j;

float sum;

float avec[5];/*存储每门课程的平均分*/

for(j=0;j<5;j++)

{

sum=0;

for(i=0;i

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

avec[j]=sum/num;

}

printf("各门课平均分:

\n");

printf("C 语言大学物理网页设计高数英语\n");

for(i=0;i<5;i++)

printf("%-10.2f",avec[i]);

printf("\n");

}

//12)计算每个人的平均分

void tongji2()

{

int i,j;

float sum;

for(j=0;j

{

sum=0;

for(i=0;i<5;i++)

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

stu[j].ave=sum/5;

printf("第%d 个人的平均分:

%.2f\n",j+1,stu[j].ave);

}

}

//13)排序

void sort1()

{

int choice3;

system("COLOR 6F");

printf("*****************************************\n");

printf("\n");

printf("*****排序子菜单*****\n");

printf("**********\n");

printf("*****1.按成绩*****\n");

printf("\n");

printf("*****************************************\n");

printf("请选择:

\n");

scanf("%d",&choice3);

if("choice3==1")

sortscore();

else

printf("选择错误,请重新选择!

\n");

}

//14)按学生平均分排序

void sortscore()/*按平均成绩从高到低冒泡法排序*/

{

int i,j;

struct student temp;

tongji2();/* 先计算每个学生的平均分*/

for(i=0;i<=num-2;i++)

{

for(j=0;j

if(stu[j].ave

{

temp=stu[j];

stu[j]=stu[j+1];

stu[j+1]=temp;

 

}

}

for(i=0;i

printf("%.2f ",stu[i].score[1]);

printf("排序后的学生成绩为:

\n");

output();

}

//15)查找

void find1()

{

int choice4;

char cno[13],cname[20];

int i,j;

system("COLOR 5F");

printf("*********************************************************\n");

printf("*********************\n");

printf("*********查找子菜单************\n");

printf("*********1.按学号************\n");

printf("*********2.按姓名************\n");

printf("*********************\n");

printf("*********************************************************\n");

printf("请选择:

");

scanf("%d",&choice4);

if(choice4==1)

{

printf("输入要查找学生的学号:

");

getchar();

gets(cno);

puts(cno);

i=find(cno);

}

else if(choice4==2)

{

printf("请输入要查找学生的姓名:

");

getchar();

gets(cname);

i=findname(cname);

}

else

{

printf("选择错误,请重新选择!

\n");

return;

}

if(i==-1)

printf("要查找的学生不存在。

\n");

else

{

printf("查找到的学生信息为:

\n");

printf("班级\t 姓名\t 学号\t 性别\t 地址\t 电话\t\n ");

printf("%s\t%s\t%s\t%s\t%s\t%s\t\n",stu[i].clas,stu[i].name,stu[i].no,stu

[i].sex,stu[i].addr,

stu[i].phone);

printf("\n");

printf("C 语言大学物理网页设计高数英语\n");

for(j=0;j<5;j++)

printf("%-12.f",stu[i].score[j]);

}

}

//16)按姓名查找

int findname(char cname[])

{

int i;

for(i=0;i

if(strcmp(stu[i].name,cname)==0)/*判断两个字符串*/

return i;/*查找成功*/

return -1;/*查找失败*/

}

//17)保存文件

void save()/*将修改过的学生成绩重新写回到数据文

件中*/

{

int i;

FILE *fp;

if((fp=fopen("stu.dat","wb"))==NULL)/*创建二进制文件*/

{

printf("文件创建失败!

请重新运行程序。

\n");

exit(0);/*终止程序运行*/

}

for(i=0;i

fwrite(&stu[i],1,sizeof(struct student),fp);

/*把第 i+1 个学生成绩写入文件*/

fclose(fp);

}

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

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

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

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