C语言程序设计学生成绩管理系统

时间:2024.4.21

#include"stdio.h"

#include<stdlib.h>

#include<string.h>

#include"process.h"

#include"ctype.h"

typedef struct

{

char num[10];

char name[10];

int chinese;

int math;

int english;

int cyuyan;

double aver;

}Student;

Student stu[99];

int shuru(Student stud[],int n)/*输入若干条记录*/

{

int i=0;

char sign,x[10];

double a=0.0;

while(sign!='n'&&sign!='N')

{

printf("输入学生学号:");

scanf("%s",stu[n+i].num);

printf("输入学生姓名:");

scanf("%s",stu[n+i].name);

printf("输入学生的语文、数学、英语、c语言分数:");

scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].cyuyan); a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].cyuyan)/4;

stu[n+i].aver=a;

gets(x); /*清除多余的输入*/

printf("是否继续输入?(Y/N):\n");

scanf("%c",&sign);

i++;

}

return(n+i);

}

void xianshi(Student stud[],int n) /*显示所有记录*/

{

int i ;

printf("----------------------------------------------------------\n"); /*格式头*/

printf("学号 姓名 语文 数学 英语 c语言 平均成绩 \n");

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

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

{

printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].cyuyan,stu[i].aver);

}

}

void xiugai(Student stud[],int n)/*修改*/

{

int i=0,choice=1;

char x[10];

while(choice!=0)

{ printf("请输入您要修改的学生的学号:\n");

scanf("%s",x);

for(i=0;;i++)

{

if(strcmp(stu[i].num,x)==0) break;

}

printf("请选择您要修改的内容:\n");

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

printf("| 姓名 请按 1 |\n");

printf("| 语文 请按 2 |\n");

printf("| 数学 请按 3 |\n");

printf("| 英语 请按 4 |\n");

printf("| c语言 请按 5 |\n");

printf("| 退出 请按 0 |\n");

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

printf("请输入您的选择:");

scanf("%d", &choice);

switch(choice)

{

case 0:break;

case 1:

printf("请输入新姓名:");

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

break;

case 2: printf("请输入新的语文分数:");

scanf("%d", &stu[i].chinese);

break;

case 3:

printf("请输入新的数学分数:");

scanf("%d",&stu[i].math);

break;

case 4:

printf("请输入新的英语分数

scanf("%d", &stu[i].english);

break;

case 5:

printf("请输入新的c语言分数

scanf("%d", &stu[i].cyuyan);

break;

default:

printf("\n无效选项!");

break;

} break;

}

return;

} int shanchu(Student stud[],int n) /*按姓名查找,删除一条记录*/

{ char s[20];

int i;

int j;

i=0;

printf("输入要删除记录的姓名:");

scanf("%s",s);

while(strcmp(stu[i].name,s)!=0&&i<n) i++;

if(i==n)

{printf("not find!\n");

return(n); } for(j=i;j<n-1;j++) /*删除操作*/

{

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j].name,stu[j+1].name); "); :"); :

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

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

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

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

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

}

printf("Delete Successed!\n");

return(n-1);

}

void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个记录*/

{ char s[20];

int i=0;

printf("输入姓名:");

scanf("%s",s);

while(strcmp(stu[i].name,s)!=0&&i<n) i++; /*查找判断*/

if(i==n)

{printf("not find!\n"); /*输入失败信息*/

return; }

printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/

printf("语文 高数 英语 C语言 平均成绩

是:%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].cyuyan,stu[i].aver);

}

void chaxun_pingjun(Student stud[],int n) /*按平均成绩查找并显示一个记录*/

{ double s;

int i=0;

printf("输入平均成绩:");

scanf("%lf",&s);

while(stu[i].aver!=s && i<n) i++;

if(i==n)

{ printf("not find!\n"); /*输入失败信息*/

return;

}

printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/

printf("他的姓名是:%s\n",stu[i].name);

printf("他的语文、数学、英语、C语言分数是:%d %d %d %d \n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].cyuyan);

}

void paixu_xuehao(Student stud[],int n) /*按学号排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i<n-1;i++) /*冒泡法排序*/

for(j=0;j<n-1-i;j++)

if(strcmp(stud[j].num,stud[j+1].num)>0)

{ strcpy(t,stud[j].num);

strcpy(stud[j].num,stud[j+1].num);

strcpy(stud[j+1].num,t);

strcpy(x,stud[j].name);

strcpy(stud[j].name,stud[j+1].name);

strcpy(stud[j+1].name,x);

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].cyuyan;stu[j].cyuyan=stu[j+1].cyuyan;stu[j+1].cyuyan=w; }

return;

}

void paixu_pingjun(Student stud[],int n) /*按平均成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i<n-1;i++) /*冒泡法排序*/

for(j=0;j<n-1-i;j++)

if(stu[j].aver>stu[j+1].aver)

{ y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].cyuyan;stu[j].cyuyan=stu[j+1].cyuyan;stu[j+1].cyuyan=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_chinese(Student stud[],int n) /*按语文成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i<n-1;i++) /*冒泡法排序*/

for(j=0;j<n-1-i;j++)

if(stu[j].chinese>stu[j+1].chinese)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].cyuyan;stu[j].cyuyan=stu[j+1].cyuyan;stu[j+1].cyuyan=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_english(Student stud[],int n) /*按英语成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i<n-1;i++) /*冒泡法排序*/

for(j=0;j<n-1-i;j++)

if(stu[j].english>stu[j+1].english)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].cyuyan;stu[j].cyuyan=stu[j+1].cyuyan;stu[j+1].cyuyan=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_math(Student stud[],int n) /*按数学成绩排序*/

{ int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i<n-1;i++) /*冒泡法排序*/

for(j=0;j<n-1-i;j++)

if(stu[j].math>stu[j+1].math)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].cyuyan;stu[j].cyuyan=stu[j+1].cyuyan;stu[j+1].cyuyan=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void paixu_cyuyan(Student stud[],int n) /*按c语言成绩排序*/ { int i,j,p,q,r,w;

double y;

char x[20],t[10];

for(i=0;i<n-1;i++) /*冒泡法排序*/

for(j=0;j<n-1-i;j++)

if(stu[j].cyuyan>stu[j+1].cyuyan)

{

y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;

p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;

r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].cyuyan;stu[j].cyuyan=stu[j+1].cyuyan;stu[j+1].cyuyan=w; strcpy(x,stu[j].name);

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j+1].name,x);

strcpy(t,stu[j].num);

strcpy(stu[j].num,stu[j+1].num);

strcpy(stu[j+1].num,t);

}

return;

}

void tongji(Student stud[],int n)//按分数段统计人数

{ int i,j,a,max,min,k,l,q,p,w;

k=0,l=0,p=0,q=0,w=0;

printf("你想统计哪科成绩: 1语文 2数学 3英语 4C语言 5平均 \n"); scanf("%d",&j);

printf("input 2 score:\n");

scanf("%d%d",&max,&min);

if(max<min)

{

a=max;max=min;min=a;

}

if(j==1)

{

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

{

if(stu[i].chinese>min&&stu[i].chinese<max) k++;

}

printf("分数段的人数为 :%d",k);

}

else if(j==2)

{

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

{

if(stu[i].math>min&&stu[i].math<max) l++; }

printf("分数段的人数为 :%d",l);

}

else if(j==3)

{

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

{

if(stu[i].english>min&&stu[i].english<max) p++; }

printf("分数段的人数为 :%d",p);

}

else if(j==4)

{

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

{

if(stu[i].cyuyan>min&&stu[i].cyuyan<max) w++;

}

printf("分数段的人数为 :%d",w);

}

else if(j==5)

{

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

{

if(stu[i].aver>min&&stu[i].aver<max) q++; }

printf("分数段的人数为 :%d",q);

}

return;

}

int wenjian2(Student stud[],int n) /*从文件中读入数据*/

{ int i=0,num;

FILE *fp; /*定义文件指针*/

char filename[20]; /*定义文件名*/

printf("\t\t\tInput the filename:");

scanf("\t\t\t%s",filename); /*输入文件名*/

if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/

{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/

printf("\t\t\t");

system("pause");

return(n);

}

fscanf(fp,"%d",&num); /*读入总记录量*/

while(i<num) /*循环读入数据*/

{

fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].cyuyan,&stu[n+i].aver);

i++;

}

n+=num;

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

printf("\t\t\tSuccessed!\n");

printf("\t\t\t");

system("pause");

return(n);

}

void wenjian1(Student stud[],int n) /*将所有记录写入文件*/

{

int i=0;

FILE *fp; /*定义文件指针*/

char filename[20]; /*定义文件名*/

printf("Input the filename:");/*输入文件名*/

scanf("%s",filename);

if((fp=fopen(filename,"w"))==NULL) /*打开文件*/

{

printf("cann't open the file\n");

return;

}

fprintf(fp,"%d\n",n); /*循环写入数据*/

while(i<n)

{

fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].cyuyan,stu[i].aver);

i++;

}

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

printf("Successed!\n"); /*返回成功信息*/

}

int menu() /*菜单函数*/

{

int c; do{

printf("\t\t〓〓〓〓 ☆学生信息管理系统☆ 〓〓〓〓\n"); printf("\t\t〓〓〓〓 1. 编辑 〓〓〓〓\n"); printf("\t\t〓〓〓〓 2. 显示 〓〓〓〓\n"); printf("\t\t〓〓〓〓 3. 查询 〓〓〓〓\n"); printf("\t\t〓〓〓〓 4. 排序 〓〓〓〓\n"); printf("\t\t〓〓〓〓 5. 统计 〓〓〓〓\n"); printf("\t\t〓〓〓〓 6. 文件 〓〓〓〓\n"); printf("\t\t〓〓〓〓 0. 退出 〓〓〓〓\n"); printf("\t\t*********************************************\n"); printf("\t\t\t请选择(0-6):");

scanf("%d",&c);

}while(c<0||c>6);

return(c-0); /*返回选择*/

}

int bianji()

{

printf("\t\t 1. 录入\n");

printf("\t\t 2 .修改\n");

printf("\t\t 3. 删除 \n");

printf("\t\t 按其它数字键退出 \n");

int i;

scanf("%d",&i);

return i;

}

int chaxun()

{

printf("\t\t 1. 按姓名查询\n");

printf("\t\t 2 .按平均成绩查询\n");

printf("\t\t 按其它数字键退出\n");

int i;

scanf("%d",&i);

return i;

}

int paixu()

{

printf("\t\t 1. 按学号\n"); printf("\t\t 2 .按语文成绩\n"); printf("\t\t 3 .按数学成绩\n"); printf("\t\t 4 .按英语成绩\n"); printf("\t\t 5 .按c语言成绩\n"); printf("\t\t 6 .按平均成绩\n"); printf("\t\t按其它数字键退出\n");

int i;

scanf("%d",&i);

return i;

}

int wenjian()

{

printf("\t\t 1. 从文件中读入数据\n"); printf("\t\t 2 .将所有记录写入文件\n"); printf("\t\t 按其它数字键退出 \n");

int i;

scanf("%d",&i);

return i;

}

int main() /*主函数*/

{

int n=0;

for(;;)

{

for(;;)

{

switch(menu())

{

case 1: switch(bianji())

{

case 1:n=shuru(stu,n);xianshi(stu,n); break;

case 2:xiugai(stu ,n);xianshi(stu,n); break;

case 3:shanchu(stu ,n);xianshi(stu,n); break;

} break;

case 2:xianshi(stu,n);break;

case 3:

switch(chaxun())

{

case 1:chaxun_xingming(stu,n);break;

case 2:chaxun_pingjun(stu ,n);break; } break;

case 4: switch(paixu())

{

case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_chinese(stu ,n);xianshi(stu,n);break;

case 3:paixu_math(stu ,n);xianshi(stu,n); break;

case 4:paixu_english(stu ,n);xianshi(stu,n); break; case 5:paixu_cyuyan(stu ,n);xianshi(stu,n); break; case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break; } break;

case 5:tongji(stu,n);break;

case 6:

switch(wenjian())

{

case 1:n=wenjian2(stu,n);break;

case 2:wenjian1(stu ,n);break;

} break;

case 0:

exit(0); /*结束程序*/

}

}

}

}

更多相关推荐:
C语言学生成绩管理系统课程设计报告

C语言课程设计报告一问题描述题目七学生成绩管理系统设计学生成绩信息包括学期学号班别姓名四门课程成绩语文数学英语和计算机等主要功能1能按学期按班级完成对学生成绩的录入修改2能按班级统计学生的成绩求学生的总分及平均...

C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称学生成绩管理系统专业指导老师班级姓名学号座号时间一实验目的1在编辑应用程序过程中逐步加深对C语言编程的理解2加强实践的能力动手能力同时进一步对所学的知识进行巩固3培养初步编程...

C语言实验报告--学生成绩管理系统 中南大学

XX大学CSUC语言程序设计实践报告学生姓名剽悍的小白兔指导教师TZ学院信息科学与工程学院专业班级电气信息类XXXX班完成时间20XX年X月题目学生成绩管理系统一设计目的通过课程设计使学生综合使用所学过的C语言...

C语言课程设计报告 --学生成绩管理系统

内蒙古科技大学课程设计论文内蒙古科技大学本科生课程设计论文题目学生成绩管理系统学生姓名胡书培学号1067111106专业计算机科学与技术班级10级计算机1班指导教师周李涌20xx年12月30日1内蒙古科技大学课...

c语言程序设计报告 学生成绩管理系统

学生成绩管理系统课程设计报告书学生成绩管理系统单位分院班级学号姓名指导老师完成日期20xx年7月14日1学生成绩管理系统内容摘要摘要本次课程设计的课题是学生成绩管理系统本文介绍课程设计课题的选题意义说明了本系统...

C语言编程实验:学生成绩管理系统

计算机编程课程设计题目学生成绩管理系统班级姓名学号指导教师完成时间一设计目的进一步加深巩固学生所学专业课程C语言的基本理论知识理论联系实际进一步培养学生综合分析问题和解决问题的能力掌握运用C语言独立地编写调试应...

C语言课程设计报告学生成绩管理系统

数据结构课程设计报告学号0820xx106姓名付振华日期20xx年7月9日一课程设计题目学生成绩管理二需求分析给出n个学生的m门考试的成绩表每个学生的信息由学号姓名性别以及各科成绩组成对学生的考试成绩进行有关统...

C语言课程设计_学生成绩管理系统 完整版

includeltstdiohgtincludeltstdlibhgtincludeltiohgtincludeltstringhgtstrcmp函数原型包含defineN100定义最大学生人数为100stru...

学生成绩管理系统C语言课程设计

includeltstdiohgtincludeltstringhgtincludeltconiohgtincludeltstdlibhgtstructstsintnumcharname20intscorest...

C语言程序设计报告 ---学生成绩管理系统

学生成绩管理系统大学物联网工程学院课程名称设计题目班级姓名指导教师课程设计报告计算机综合实践学生成绩管理系统自动化1001班学号评分20xx年11月15日1学生成绩管理系统目录一设计目的和任务3二总体设计3三详...

C语言课程设计—学生成绩管理系统(源代码)吉林大学1

includeltstdiohgtincludeltstringhgtincludeltstdlibhgtincludelttimehgttypedefstructstudent定义结构体charIDNumbe...

C语言课程设计报告学生成绩管理系统[1]

C语言课程设计报告一组员信息组长岳英明信科092班学号0909281074负责构思程序的大体算法流程图编写代码检查错误成员孟琼瑶信科092班学号0909281075主要编写代码查资料界面设计二设计目的进一步加深...

c语言程序设计学生成绩管理系统实验报告(34篇)