文档库 最新最全的文档下载
当前位置:文档库 › 学生成绩管理系统设计源代码

学生成绩管理系统设计源代码

#include

#include /*清屏*/

#include /*显示目录*/

#include

#define MAX 1000

void input();

void sort(); /*排序数据函数*/

void display(); /*显示数据函数*/

void display1(); /*显示各科成绩函数*/

void display2(); /*按班级显示*/

void fail(); /*不及格科目和学生*/

void insert(); /*插入数据函数*/

void del(); /*删除数据函数*/

void average(); /*平均值函数*/

void find(); /*查找数据函数*/

void save(); /*保存数据函数*/

void read(); /*读出数据函数*/

void del_file(); /*删除文件函数*/

void modify(); /*修改文件函数*/

int now_no=0;

struct student //定义学生信息

{

int no; //学号

char name[20]; //姓名

char grade[20]; //班别

char term[20]; //年级

float score1; //语文

float score2; //数学

float score3; //英语

float score4; //计算机

float sort; //排序成绩

float ave; //平均分

float sum; //总分

};

struct student stu[MAX],*p;

void main() /*主函数*/

{

int as;

char ch;

do

{

start: printf("\n\n\n\n\n\n\t\t\t 欢迎使用学生成绩管理系统\n");

printf("\n\n\n\n\n\n\t\t******************按任意键继续********************");

ch=getch();

}

while(!ch);

system("cls"); /*清屏*/

/*以下为功能选择模块*/

do

{

printf("\n\t$ ******************************菜单*************************** $\n");

printf("\n\t$\t录入学生信息-------------------->\t1 \t$");

printf("\n\t$\t显示学生总成绩信息-------------------->\t2 \t$");

printf("\n\t$\t对总成绩排序-------------------->\t3 \t$");

printf("\n\t$\t显示学生单科成绩排序-------------------->\t4 \t$");

printf("\n\t$\t添加学生信息-------------------->\t5 \t$");

printf("\n\t$\t删除学生信息-------------------->\t6 \t$");

printf("\n\t$\t修改学生信息-------------------->\t7 \t$");

printf("\n\t$\t查询学生信息-------------------->\t8 \t$");

printf("\n\t$\t从文件读入学生信息-------------------->\t9 \t$");

printf("\n\t$\t删除文件中学生信息------------------- >\t10\t$");

printf("\n\t$\t保存学生信息-------------------->\t11\t$");

printf("\n\t$\t显示不及格情况-------------------->\t12\t$");

printf("\n\t$\t按班级显示-------------------->\t13\t$");

printf("\n\t$\t退出-------------------->\t14\t$");

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

printf("\n选择功能选项(输入所选功能前的数字):");

fflush(stdin);

scanf("%d",&as);

switch(as)

{

case 1:system("cls");

input();

break;

case 2:system("cls");

display();

break;

case 3:system("cls");

sort();

break;

case 4:system("cls");

display1();

break;

case 5:system("cls");

insert();

break;

case 6:system("cls");

del();

break;

case 7:system("cls");

modify();

break;

case 8:system("cls");

find();

break;

case 9:system("cls");

read();

break;

case 10:system("cls");

del_file();

break;

case 11:system("cls");

save();

break;

case 12:system("exit");

fail();

break;

case 13:system("exit");

display2();

break;

case 14:system("cls");

exit(0);

default:system("cls");

goto start;

}

}while(1); /*while(1)表示永远循环下去*/

/*至此功能选择模块结束*/ }

void input() /*学生信息录入模块*/

{

int i=0;

char ch;

do

{

printf("\t\t\t\t1.录入学生信息\n输入第%d个学生的信息\n",i+1);

printf("请输入学期:");

fflush(stdin);

gets(stu[i].term);

printf("输入学生班别:");

fflush(stdin);

gets(stu[i].grade);

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

scanf("%u",&stu[i].no);

fflush(stdin);

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

fflush(stdin);

gets(stu[i].name);

printf("输入学生语文成绩:");

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

printf("输入学生数学成绩:");

fflush(stdin);

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

printf("输入学生英语成绩:");

fflush(stdin);

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

printf("输入学生计算机成绩:");

fflush(stdin);

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

printf("\n");

i++;

now_no=i;

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

fflush(stdin);

ch=getch();

}while(ch!='n'&&ch!='N');

system("cls");

}

void sort() /*排序数据函数*/ {

struct student temp;

int i,j;

average();

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].ave

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

printf("排序已完成进入可进行显示\n");

system("pause");

system("cls");

}

void sort1() /*排序数据函数*/ {

struct student temp;

int i,j;

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].score1

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

}

void sort2() /*排序数据函数*/ {

struct student temp;

int i,j;

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].score2

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

}

void sort3() /*排序数据函数*/ {

struct student temp;

int i,j;

for(i=1;i

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].score3

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

} /*排序数据函数*/

void sort4()

{

struct student temp;

int i,j;

for(i=1;i

{

for(j=1;j<=now_no-i;j++)

{

if(stu[j-1].score4

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

} /*排序数据函数*/

void display() /*显示数据函数*/

{

int i;

char as;

average();

do

{

printf("\t\t\t\t班级学生信息列表\n\n");

printf("学期\t班别\t学号\t姓名\t语文\t数学\t英语\t计算机\t总分\t平均值\n");

for(i=0;i

printf("%s\t%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].term,stu[i].grade,stu[i]. no,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave);

printf("\t\t\t按任意键返回主菜单");

fflush(stdin);

as=getch();

}while(!as);

system("cls");

}

void display1() /*显示数据函数*/

{

int i;

char as;

do

{

printf("班级学生语文成绩排序:\n\n");

printf("\t班别\t学号\t姓名\t语文\n");

sort1();

for(i=0;i

printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score1);

printf("班级学生数学成绩排序:\n\n");

printf("\t班别\t学号\t姓名\t数学\n");

sort2();

for(i=0;i

printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score2);

printf("班级学生英语成绩排序:\n\n");

printf("\t班别\t学号\t姓名\t英语\n");

sort3();

for(i=0;i

printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score3);

printf("班级学生计算机成绩排序:\n\n");

printf("\t班别\t学号\t姓名\t计算机\n");

sort4();

for(i=0;i

printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score4);

printf("\t\t\t按任意键返回主菜单");

fflush(stdin);

as=getch();

}while(!as);

system("cls");

}

void insert() /*插入数据函数*/

{

char ch;

int i;

do

{

printf("\n输入新插入学生信息:\n");

printf("请输入学期:");

fflush(stdin);

gets(stu[now_no].term);

printf("输入学生班别:");

fflush(stdin);

gets(stu[now_no].grade);

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

scanf("%u",&stu[now_no].no);

fflush(stdin);

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

fflush(stdin);

gets(stu[now_no].name);

printf("输入学生语文成绩:");

fflush(stdin);

scanf("%f",&stu[now_no].score1);

printf("输入学生数学成绩:");

fflush(stdin);

scanf("%f",&stu[now_no].score2);

printf("输入学生英语成绩:");

fflush(stdin);

scanf("%f",&stu[now_no].score3);

printf("输入学生计算机成绩:");

fflush(stdin);

scanf("%f",&stu[now_no].score4);

printf("\n");

now_no=now_no+1;

sort();

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

fflush(stdin);

ch=getch();

system("cls");

}while(ch!='n'&&ch!='N');

}

void del() /*删除数据函数*/ {

unsigned long inum;

int i;

printf("输入要删除学生的学号:");

fflush(stdin);

scanf("%u",&inum);

for(i=0;i

{

if(stu[i].no==inum)

{

if(i==now_no)

now_no-=1;

else

{

stu[i]=stu[now_no-1];

now_no-=1;

}

sort();

break;

}

}

system("cls");

}

void save() /*保存数据函数*/

{

FILE *fp;

int i;

char filepath[20];

printf("输入要保存的文件路径:");

fflush(stdin);

gets(filepath);

if((fp=fopen(filepath,"wb"))==NULL)

{

printf("\n保存失败!");

exit(0);

}

for(i=0;i

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4;

stu[i].ave=stu[i].sum/4;

fprintf(fp,"%s\t%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].term,stu[i].grade,stu[i].no,stu[i].nam e,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave);

}

fclose(fp);

printf("学生信息已保存在%s中!\n",filepath);

system("pause");

system("cls");

}

void find() /*查询函数*/

{

int i;

char str[20],as;

average();

do

{

printf("输入要查询的学生姓名:");

fflush(stdin);

gets(str);

for(i=0;i

if(!strcmp(stu[i].name,str))

{

printf("班别\t学号\t姓名\t语文\t数学\t英语\t计算机\t总分\t平均值\n");

printf("%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].grade,stu[i].no,stu[i].name,stu[i] .score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave);

}

printf("\t\t\t按任意键返回主菜单");

fflush(stdin);

as=getch();

}while(!as);

system("cls");

}

void average() /*求平均数*/

{

int i;

for(i=0;i

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4;

stu[i].ave=stu[i].sum/4;

}

}

void modify() /*修改数据函数*/

{

int i;

char str[20];

printf("输入要修改的学生姓名:");

fflush(stdin);

gets(str);

for(i=0;i

{

if(!strcmp(stu[i].name,str))

{

system("cls");

printf("\n\t\t输入修改后学生信息\n");

printf("\n输入学生学期:");

fflush(stdin);

gets(stu[i].term);

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

fflush(stdin);

scanf("%u",&stu[i].no);

printf("\n输入学生班别:");

fflush(stdin);

gets(stu[i].grade);

printf("\n输入学生语文成绩:");

fflush(stdin);

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

printf("\n输入学生数学成绩:");

fflush(stdin);

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

printf("\n输入学生英语成绩:");

fflush(stdin);

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

printf("\n输入学生计算机成绩:");

fflush(stdin);

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

printf("\n\n");

sort();

break;

}

}

system("cls");

}

void read() /*文件读取*/

{

FILE *fp;

int i;

char filepath[20];

printf("输入要读入的文件路径:");

fflush(stdin);

gets(filepath);

if((fp=fopen(filepath,"r"))==NULL)

{

printf("找不到%s文件!\n",filepath);

system("pause");

exit(0);

}

now_no=0;

for(i=0;i

{

fscanf(fp,"%s\t%s\t%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].term,stu[i].grade,&stu[i].no,stu[i].name

,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].score4,&stu[i].sum,&stu[i].ave);

now_no++;

}

fclose(fp);

printf("保存的在文件%s中的所有信息已经读入!\n",filepath);

system("pause"); /*按任意键继续*/ system("cls");

}

void del_file() /*文件删除*/

{

FILE *fp;

char filepath[20];

printf("输入要删除的文件路径:");

fflush(stdin);

gets(filepath);

fp=fopen(filepath,"w");

fclose(fp);

printf("保存的在文件%s中的所有信息已经删除!\n",filepath);

system("pause");

system("cls");

}

void fail() /*显示不及格情况*/ {

int i;

system("cls");

for(i=0;i

{

if(stu[i].score1<60||stu[i].score2<60||stu[i].score3<60||stu[i].score4<60)

{

printf("班级\t学号\t姓名");

printf("\t\t不及格科目");

printf("\n%s\t%d\t%s",stu[i].grade,stu[i].no,stu[i].name);

if(stu[i].score1<60)printf("\t\t语文");

if(stu[i].score2<60)printf("\t\t数学");

if(stu[i].score3<60)printf("\t\t英语");

if(stu[i].score4<60)printf("\t\t计算机");

}printf("\n");

}

system("pause");

system("cls");

}

void display2() //按班级显示

{

char ch[20];

int i;

sort();

system("cls");

average();

printf("请输入要查询的班级:");

fflush(stdin);

gets(ch);

printf("\n查询结果:");

printf("\n班级\t学号\t姓名\t语文\t数学\t英语\t计算机\t总分\t平均分");

for(i=0;i

{

if(strcmp(stu[i].grade,ch)==0)

{

printf("\n%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f",stu[i].grade,stu[i].no,stu[i].name, stu[i].score1,stu[i].score1,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave);

}

}

printf("\n");

system("pause");

system("cls");

}

相关文档
相关文档 最新文档