c语言程序设计学生管理系统
#define _CRT_SECURE_NO_WARNINGS
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define student_data "d:/学生数据"
#define student_score "d:/学生成绩"
int count = 0;
struct student
{
int num,ksmc,zhmc;
char name[15],add[15];
char sex;
float chinese,math,english,ave,huping,pinde,teacher,zhcp;
};
void daoruwenjian(struct student *stu) //导入文件
{
FILE * fp;
int i;
fp = fopen( "d:/学生数据.txt", "w+");
if(fp == NULL)
{
} printf("打开文件失败\n");
printf("打开文件成功\n");
for(i=0; i
{
if(stu[i].num == 0)
{
continue;
}
fprintf(fp,"%d %s %c %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].add);
}
fclose(fp);
}
void duchuwenjian(struct student *stu) //读出文件
{
FILE * fp;
int i=0,tmp=0;
fp = fopen( "d:/学生数据.txt", "r");
if(fp == NULL)
{
printf("打开文件失败\n"); } printf("打开文件成功\n");
//如果直接输出文件数据
while(!feof(fp))
{
fscanf(fp,"%d %s %c %s\n",&stu[i].num,stu[i].name,&stu[i].sex,stu[i].add);
i++;
tmp++;
}
if(count == 0)
{
count = tmp;
}
fclose(fp);
fp = fopen( "d:/学生数据.txt", "r");
for(i=0; i
{
fscanf(fp,"%d %s %c %s\n",&stu[i].num,stu[i].name,&stu[i].sex,stu[i].add);
}
fclose(fp);
}
void daoruwenjian_score(struct student *stu) //导入文件
{
FILE * fp;
int i;
fp = fopen( "d:/学生数据.txt", "w+");
if(fp == NULL)
{
printf("打开文件失败\n");
}
printf("打开文件成功\n");
for(i=0; i
{
fprintf(fp,"%d %s %c %s %f %f %f %f %d %f %f %f %f %d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].add,stu[i].chinese,stu[i].math,stu[i].english,stu[i].ave,stu[i].ksmc,stu[i].huping,stu[i].pinde,stu[i].teacher,stu[i].zhcp,stu[i].zhmc);
}
fclose(fp);
}
void duchuwenjian_score(struct student *stu) //读出得分文件
{
FILE * fp;
int i=0,tmp =0;
fp = fopen( "d:/学生数据.txt", "r");
if(fp == NULL)
{
printf("打开文件失败\n");
}
printf("打开文件成功\n");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %s %f %f %f %f %d %f %f %f %f %d\n",&stu[i].num,stu[i].name,&stu[i].sex,stu[i].add,&stu[i].chinese,&stu[i].math,&stu[i].english,&stu[i].ave,&stu[i].ksmc,&stu[i].huping,&stu[i].pinde,&stu[i].teacher,&stu[i].zhcp,&stu[i].zhmc);
i++;
tmp++;
}
if(count == 0)
{
count = tmp;
}
fclose(fp);
fp = fopen( "d:/学生数据.txt", "r");
for(i=0; i
{
fscanf(fp,"%d %s %c %s %f %f %f %f %d %f %f %f %f %d\n",&stu[i].num,stu[i].name,&stu[i].s
ex,stu[i].add,&stu[i].chinese,&stu[i].math,&stu[i].english,&stu[i].ave,&stu[i].ksmc,&stu[i].huping,&stu[i].pinde,&stu[i].teacher,&stu[i].zhcp,&stu[i].zhmc);
}
fclose(fp);
}
void shuzupaixu(struct student *stu) //数组排序
{
struct student p;
int i,j;
for(i=0;i
for(j=i+1;j
if(stu[i].num>stu[j].num)
{
p = stu[i];
stu[i] = stu[j];
stu[j] = p;
}
}
void shuzupaixu_score(struct student *stu)
{
struct student p;
int i,j;
for(i=0;i
for(j=i+1;j
if(stu[i].zhcp>stu[j].zhcp)
{
p = stu[i];
stu[i] = stu[j];
stu[j] = p;
}
for(i=0;i
stu[i].zhmc=i+1;
for(i=0;i
for(j=i+1;j
if(stu[i].ave>stu[j].ave)
{
p = stu[i];
stu[i] = stu[j];
stu[j] = p;
}
for(i=0;i
stu[i].ksmc=i+1;
}
void shuruxuesheng() //输入学生信息
{
int i;
struct student info[100];
FILE *fp;
for(i=0;;i++)
{
printf("\t请输入学号(输入0退出):");
scanf("%d",&info[i].num);
if(info[i].num==0)
break;
printf("\t请输入姓名:"); scanf("%s",info[i].name); printf("\t请输入性别:"); fflush(stdin); scanf("%c",&info[i].sex);
printf("\t请输入家庭住址:");
scanf("%s",info[i].add);
count++;
}
shuzupaixu(info);
daoruwenjian(info);
}
void xiugaixuesheng() //修改学生信息
{
int i,j,check_num;
struct student info[100];
duchuwenjian(info);
/* printf("读出的信息\n");
for(i=0; i
{
printf("%d %s\n",info[i].num,info[i].name);
}*/
printf("\n\t请输入要修改的学生的学号:");//查找要修改的学生
scanf("%d",&check_num);
printf("\n");
for(i=0; i
{
if(info[i].num==check_num)
{
break;
}
}
if(info[i].num==check_num)//当学号存在时进行修改
{
printf("修改的学生信息: 学号 姓名 性别
\n");
printf(" %d",info[i].num);
printf(" %s",info[i].name);
printf(" %c",info[i].sex);
printf(" %s",info[i].add);
printf("\n\t是否修改?1、是\t 2、否\t ");
while(1)
{
scanf("%d",&j);
switch(j)
{ case 1:
{
printf("\t学号为:%d\n",info[i].num);
printf("\t请输入姓名:");
scanf("%s",info[i].name);
printf("\t请输入性别:");
fflush(stdin);
scanf("%c",&info[i].sex);
printf("\t请输入家庭地址:");
scanf("%s",info[i].add);
shuzupaixu(info); 家庭地址
daoruwenjian(info);
break;
}
case 2:break;
default:printf("输入错误! 请重新输入!");break;
}
break;
}
printf("\n\n\t\t");
system("pause");
}
if(i == count )//学号不存在时进行插入操作
{
printf("\n\t学号不存在是否插入?1、是\t 2、否\t\n");
while(1)
{
scanf("%d",&j);
switch(j)
{ case 1:
{
info[count].num = check_num;
printf("\t插入学号学号为:%d\n",info[count].num); printf("\t请输入姓名:");
scanf("%s",info[count].name);
fflush(stdin);
printf("\t请输入性别:");
scanf("%c",&info[count].sex);
printf("\t请输入家庭地址:");
scanf("%s",info[count].add);
printf("要插入的息:%d %s %c %s\n",info[count].num,info[count].name,info[count].sex,info[count].add); count++;
shuzupaixu(info);
daoruwenjian(info);
break; 信
case 2:break;
default:printf("输入错误! 请重新输入!");break;
}
break;
}
printf("\n\n\t\t");
system("pause");
}
}
void shanchuxuesheng() //删除学生信息
{
int i,j,check_num;
struct student info[100];
duchuwenjian(info);
printf("\n\t请输入要删除的学生的学号:");
scanf("%d",&check_num);
for(i=0; i
{
if(info[i].num == check_num)
{
break;
}
}
if(info[i].num == check_num)
{
printf("\n");
printf("学号 姓名 性别
//显示需要删除的信息
printf(" %d",info[i].num);
printf(" %s",info[i].name);
printf(" %c",info[i].sex);
printf(" %s",info[i].add);
printf("\n\t是否要删除?\t 1. 是 \t 2.否\t ");
while(1)
{
scanf("%d",&j);
switch(j)
{
case 1:info[i].num = 0; printf("\n\t
shuzupaixu(info);daoruwenjian(info);count--; break; 家庭地址\n"); 删除成功!\n\n");
default:printf("输入错误! 请重新输入!");break;
}
break;
}
printf("\n\n\t\t");
system("pause");
}
else
{
printf("输入的信息不存在\n ");
system("pause");
}
}
void liulanxuesheng() //浏览学生信息
{
int i;
struct student info[100];
duchuwenjian(info);
for(i=0; i
{
printf("info%d:%d %s %c %s\n",i,info[i].num,info[i].name,info[i].sex,info[i].add); }
system("pause");
}
void shuruchengji() //学生成绩录入
{
int choice,i;
struct student info[100];
// struct student info1[40];
duchuwenjian(info);
printf("\n\t输入数字选择(0. 返回;其余数字继续)\n\n");
scanf("%d",&choice);
if(choice==0)
return;
for(i=0;i
{
printf("\t学号:%d\n",info[i].num);
printf("\n");
printf("\t姓名:%s\n",info[i].name); printf("\n"); printf("\t姓别:%c\n",info[i].sex); printf("\n"); printf("\t家庭地址:%s\n",info[i].add); printf("\n"); printf("\t请输入语文成绩:"); scanf("%f",&info[i].chinese); printf("\t请输入数学成绩:"); scanf("%f",&info[i].math);
printf("\t请输入外语成绩:");
scanf("%f",&info[i].english);
printf("\t请输入互评分成绩:");
scanf("%f",&info[i].huping);
printf("\t请输入品德成绩:");
scanf("%f",&info[i].pinde);
printf("\t请输入任课教师评分成绩:");
scanf("%f",&info[i].teacher);
info[i].ave=info[i].chinese + info[i].math+ info[i].english;
info[i].zhcp=info[i].ave*0.6+info[i].huping*0.1+info[i].pinde*0.1+info[i].teacher*0.2; }
shuzupaixu_score(info);
daoruwenjian_score(info);
/*
printf("读出检查_score\n");
duchuwenjian_score(info1);
for(i=0; i
{
printf("%d %s %f %f\n",info1[i].num,info1[i].name,info1[i].a,info1[i].b); }
system("pause");
*/
}
//数据修改
void xiugaichengji()
{
int check_num,i,j;
struct student info[100];
duchuwenjian_score(info);
printf("\n\t请输入要修改的学生的学号:");//查找要修改的学生
scanf("%d",&check_num);
printf("\n");
for(i=0; i
{
if(info[i].num == check_num)
{
break;
}
}
if(info[i].num == check_num)//当学号存在时进行修改
{
printf("修改的学生信息: 学号 姓名 性别
\n");
printf(" %d",info[i].num);
printf(" %s",info[i].name);
printf(" %c",info[i].sex);
printf(" %s",info[i].add);
printf("\n\t是否修改?1、是\t 2、否\t ");
while(1)
{
scanf("%d",&j);
switch(j)
{ case 1:
{
printf("\t学号为:%d\n",info[i].num);
printf("\t姓名为: %s\n",info[i].name);
printf("\t姓别为: %c\n",info[i].sex);
printf("\t家庭住址为: %s\n",info[i].name);
printf("\t请输入语文成绩:");
scanf("%f",&info[i].chinese);
printf("\t请输入数学成绩:");
scanf("%f",&info[i].math);
printf("\t请输入外语成绩:");
scanf("%f",&info[i].english);
家庭地址
printf("\t请输入互评分成绩:");
scanf("%f",&info[i].huping);
printf("\t请输入品德成绩:");
scanf("%f",&info[i].pinde);
printf("\t请输入任课教师评分成绩:");
scanf("%f",&info[i].teacher);
info[i].ave = info[i].chinese + info[i].math+ info[i].english;
info[i].zhcp=info[i].ave*0.6+info[i].huping*0.1+info[i].pinde*0.1+info[i].teacher*0.2;
shuzupaixu_score(info);
daoruwenjian_score(info);
break;
}
case 2:break;
default:printf("输入错误! 请重新输入!");break;
}
break;
}
printf("\n\n\t\t");
system("pause");
}
if(i == count)
{
}
printf("没有该学生的信息\n"); system("pause"); return ; }
void chaxunchengji() //数据查询
{
int check_num,i,choice;
char check_name[15];
struct student info[100];
duchuwenjian_score(info);
printf("\t请输入查询方式:\n\n");
printf("\t1.学号查询方式\n\n");
printf("\t2.姓名查询方式\n\n");
printf("\t请选择: ");
scanf("%d",&choice);
if(choice==1)
{
printf("\n\t请输入要查询学生的学号:");
fflush(stdin);
scanf("%d",&check_num);
for(i=0;i
{
if(info[i].num==check_num)
{
break;
}
}
printf("\n");
printf("\n\t学号:%d\n姓名:%s\n性别:%c\n家庭住址:%s\n语文成绩:%f\n数学成绩:%f\n外语成绩:%f\n平均成绩:%f\n考试名次:%d\n互评成绩:%f\n品德成绩:%f\n教师评分成绩:%f\n综合成绩:%f\n综合名次:%d\n\n\t ",info[i].num,info[i].name,info[i].sex,info[i].add,info[i].chinese,info[i].math,info[i].english,info[i].ave,info[i].ksmc,info[i].huping,info[i].pinde,info[i].teacher,info[i].zhcp,info[i].zhmc);
printf("\n\n\t\t");
system("pause");
return ;
}
if(choice==2)
{
printf("\n\t请输入要查询学生的姓名:");
// fflush(stdin);
scanf("%s",check_name);
printf("\n");
for(i=0; i
{
if(strcmp(info[i].name,check_name)==0)
{
printf("\n\t学号:%d\n姓名:%s\n性别:%c\n家庭住址:%s\n\t语文成绩:%f\n数学成绩:%f\n外语成绩:%f\n平均成绩:%f\n考试名次:%d\n互评成绩:%f\n品德成绩:%f\n教师评分成绩:%f\n综合成绩:%f\n综合名次:%d\n\n\t",info[i].num,info[i].name,info[i].sex,info[i].add,info[i].chinese,info[i].math,info[i].english,info[i].ave,info[i].ksmc,info[i].huping,info[i].pinde,info[i].teacher,info[i].zhcp,info[i].zhmc); printf("\n\n\t\t");
system("pause");
return;
}
if(i == count)
} { printf("\n\t没有找到该学生!\n"); system("pause"); return; } } } system("pause");
void xueshengmenu() //学生信息菜单
{
int choice;
while(1)
{
system("cls"); //清屏
printf("\n\n\n\n\t\t☆☆☆☆☆学生信息处理系统☆☆☆☆☆\n\n");
printf("\t\t\t● 1. 输入学生信息\n");
printf("\t\t\t● 2. 修改学生信息\n");
printf("\t\t\t● 3. 删除学生信息\n");
printf("\t\t\t● 4. 浏览学生信息\n");
printf("\t\t\t● 0. 返回主菜单\n\n");
printf("\t\t请输入序号选择操作:");
scanf("%d",&choice);
if(choice==0) break;
switch(choice)
{
case 1: system("cls");shuruxuesheng(); break;
case 2: system("cls");xiugaixuesheng(); break;
case 3: system("cls");shanchuxuesheng(); break;
case 4: system("cls");liulanxuesheng(); break;
default:system("cls"); printf("\n\t输入有误! 请重新输入!\n\n"); break; }
}
}
void chengjimenu() //学生成绩菜单 {
int choice;
printf("\n\t输入数字选择(0:返回;其它数字继续。)\n");
scanf("%d",&choice);
if(choice==0) return;
while(1){
system("cls"); //清屏
printf("\n\n\n\n\t\t☆☆☆☆☆学生数据处理系统☆☆☆☆☆\n\n");
printf("\t\t\t● 1. 录入成绩数据\n");
printf("\t\t\t● 2. 修改学生数据\n");
printf("\t\t\t● 3. 学生数据查询\n");
printf("\t\t\t● 0. 返回主菜单\n\n");
printf("\t\t请输入序号选择操作:");
scanf("%d",&choice);
if(choice==0) break;
switch(choice){
case 1: system("cls"); shuruchengji(); break;
case 2: system("cls"); xiugaichengji(); break;
case 3: system("cls");chaxunchengji(); break;
default: system("cls");printf("\n\t输入有误! 请重新输入!\n\n"); break; }
}
}
void shuchu() //学生综合信息输出
{
int i;
struct student info[100];
duchuwenjian_score(info);
printf("\n");
for(i=0;i
{
printf("\t学号:%d\n",info[i].num);
printf("\n");
printf("\t姓名:%s\n",info[i].name);
printf("\n");
printf("\t姓别:%c\n",info[i].sex);
printf("\n");
printf("\t家庭地址:%s\n",info[i].add);
printf("\n");
printf("\t语文成绩:%f\n",info[i].chinese); printf("\n"); printf("\t数学成绩:%f\n",info[i].math); printf("\n"); printf("\t外语成绩:%f\n",info[i].english); printf("\n"); printf("\t平均分:%f\n",info[i].ave); printf("\n"); printf("\t考试名次:%d\n",info[i].ksmc);
} printf("\n"); printf("\t互评分:%f\n",info[i].huping); printf("\n"); printf("\t品德成绩:%f\n",info[i].pinde); printf("\n"); printf("\t教师评分:%f\n",info[i].teacher); printf("\n"); printf("\t综合测评成绩:%f\n",info[i].zhcp); printf("\n"); printf("\t综合名次:%d\n",info[i].zhmc); printf("\n\n\n"); } printf("\n\n\t\t"); system("pause"); printf("\n");
void help() //帮助信息
{ system("cls"); //清屏
printf("\n");
printf("\t\t\t学生综合测评系统!\n\n");
printf(" 本系统可以存储学生的基本信息和各科成绩,并能计算考试成绩,综合测评成绩。\n\n");
printf(" 基本信息包括:学号、姓名、性别、家庭住址、联系电话;\n\n 各科成绩包括:语文、数学、英语成绩;\n\n");
printf(" 其它包括:考试名次、同学互评分、品德成绩、任课教师评分等。\n\n"); printf(" 说明:考试成绩排名是按照考试成绩计算的(考试成绩=(语+数+外)/3);\n\n"); printf(" 综合测评总分=((考试成绩)*0.6+(同学互评分)*0.1+(品德成绩)*0.1\n +(任课教师评分)*0.2)\n\n");
printf(" 其它请按照提示操作即可。\n\n");
printf("\n\n\t\t");
system("pause");
}
void menu()
{ int choice;
while(1)
{
system("cls");//清屏
printf("\n\n\n\t\t◆◆◆◆◆◆欢迎使用学生综合管理系统◆◆◆◆◆◆"); printf("\n\n\n\n\t\t\t---☆☆☆☆☆主菜单☆☆☆☆☆-----\n\n");
printf("\t\t\t● 1. 学生信息处理系统\n");
printf("\t\t\t● 2. 学生成绩处理系统\n");
printf("\t\t\t● 3. 学生综合信息输出\n");
printf("\t\t\t● 4. 帮助信息\n");
printf("\t\t\t● 0. 返回主菜单\n\n");
printf("\t\t请输入序号选择操作:");
scanf("%d",&choice);
if(choice==0) return;
switch(choice)
{ case 1: system("cls"); xueshengmenu(); break;
case 2: system("cls"); chengjimenu(); break;
case 3: system("cls"); shuchu(); break;
case 4: system("cls"); help(); break;
default:system("cls"); printf("\n\t输入有误! 请重新输入!\n\n"); break; }
}
}
int main()
{ system("color 1c");
printf("\n\n\t\t");
menu(); //主菜单入口函数
return 0 ;
}