魔力宝贝怀旧什么祈祷:C语言程序设计课程的基础上完成学生成绩管理系统???

来源:百度文库 编辑:高校问答 时间:2024/04/29 05:34:31
1、 专业基本数据的编辑:包括专业记录的添加、修改、删除和查询等功能。
2、 学生基本数据的编辑:包括学生记录的添加、修改、删除和查询等功能。
3、 课程数据的编辑:包括课程记录的添加、修改、删除和查询等功能。
4、 学生成绩数据的编辑:包括学生成绩记录的添加、修改、删除和查询等功能。
5、 学生成绩统计:包括按学号、按课程号求平均分;按学号、按课程号求不及格的门数和人数等功能。

#include "stdio.h"
#include "string.h"

#define FILENAME "E:\\student.dat"
struct STUDENT
{
char id[4];
char name[8];
int score_math;
int score_english;
int score_computer;
}student[20];
int STU_NUM;
void print_max_math();
void print_max_english();
void print_max_computer();
void print_math_notpass();
void print_english_notpass();
void print_computer_notpass();
void print_high_score();
void data_input();
void data_write();
void data_read();
void input_record();
void display_record();
void select_record();
void insert_record();
void delete_record();
void sort_record();

int main()
{
FILE *fp;
int operate_num;
char yes_no;

printf("\t\t 欢迎使用学生成绩管理系统!\n");
printf("\t\t**************************************************\n");
printf("\t\t** 1 : 显示所有记录! \t**\n");
printf("\t\t** 2 : 查询某条记录! \t**\n");
printf("\t\t** 3 : 插入一条记录! \t**\n");
printf("\t\t** 4 : 删除一条记录! \t**\n");
printf("\t\t** 5 : 按总分由高到低对记录排序! \t**\n");
printf("\t\t** 6 : 退出系统! \t**\n");
printf("\t\t**************************************************\n");

if ((fp=fopen(FILENAME,"r"))==NULL)
{
printf("存放学生成绩的文件不存在,现在新建吗?(Y/N)");

scanf("%c",&yes_no);
if (yes_no=='Y'||yes_no=='y')
{
data_input();
data_write();
}

}
else
{
data_read();
fclose(fp);
}

while(1)
{
printf(">>请选择您需要的操作号(1~6):");
scanf("%d",&operate_num);
switch(operate_num)
{
case 1:
display_record();
break;
case 2:
select_record();
break;
case 3:
insert_record();
break;
case 4:
delete_record();
break;
case 5:
sort_record();
break;
case 6:
return 0;
}
}
fclose(fp);
}
void input_record()
{
char yes_no;
FILE *fp;
if ((fp=fopen(FILENAME,"r"))==NULL)
{
data_input();
data_write();
}
else
{
printf("学生成绩记录文件已经存在,您要覆盖已有文件吗?(Y/N)");
getchar();
scanf("%c",&yes_no);
printf("\n");
if (yes_no=='Y'||yes_no=='y')
{
data_input();
data_write();
}
else
fclose(fp);
}
}

void display_record()
{
FILE *fp;
int i;
if ((fp=fopen(FILENAME,"r"))==0)
printf("学生成绩记录文件不存在,请先输入学生记录!\n");
else
{
printf("学号\t姓名\t数学\t英语\t计算机\n");
for (i=0;i<STU_NUM;i++)
printf("%s\t%s\t%d\t%d\t%d\n",student[i].id,student[i].name,
student[i].score_math,student[i].score_english,student[i].score_computer);
}
}

void select_record()
{
int key,i,flag,cond;
char id[4],name[8];
printf(">>请选择要查找纪录的关键字: 1:学号 2:姓名 3:成绩\t");
scanf("%d",&key);
switch(key)
{
case 1:
printf(">>请输入学生的学号:");
scanf("%s",id);
for (i=0;i<STU_NUM;i++)
{
if (strcmp(student[i].id,id)==0)
break;
}
if (i>=STU_NUM)
printf("学号为%s的学生纪录不存在!\n",id);
else
{
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[i].id,student[i].name,student[i].score_math,student[i].score_english,student[i].score_computer);
}
break;
case 2:
flag=0; //find->flag=1;
printf(">>请输入学生的姓名:");
scanf("%s",name);
for (i=0;i<STU_NUM;i++)
{
if (strcmp(student[i].name,name)==0)
{
if (flag==0)
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[i].id,student[i].name,student[i].score_math,student[i].score_english,student[i].score_computer);
flag=1;
};
}
if (flag==0)
printf("姓名为%s的学生纪录不存在!\n",name);
break;
case 3:
printf(">>请选择成绩查询条件:\n");
printf("1:数学最高\t2:英语最高\t3:计算机最高\t4: 数学不及格\n5:英语不及格\t6:计算机不及格\t7:总分最高\t");
scanf("%d",&cond);
switch(cond)
{
case 1:
print_max_math();
break;
case 2:
print_max_english();
break;
case 3:
print_max_computer();
break;
case 4:
print_math_notpass();
break;
case 5:
print_english_notpass();
break;
case 6:
print_computer_notpass();
break;
case 7:
print_high_score();
break;
default:
printf("输入的选择无效!\n");;
}
break;

default:
printf("输入的选择无效!\n");
}

}

void insert_record()
{
struct STUDENT stu;
printf("请输入要插入的纪录:\n");
printf("学号\t姓名\t数学\t英语\t计算机\n");
scanf("%s%s%d%d%d",stu.id,stu.name,&stu.score_math,&stu.score_english,&stu.score_computer);
/*strcpy(student[STU_NUM].id,stu.id);
strcpy(student[STU_NUM].name,stu.name);
student[STU_NUM].score_math=stu.score_math;
student[STU_NUM].score_english=stu.score_english;
student[STU_NUM].score_computer=stu.score_computer;*/
student[STU_NUM]=stu;
STU_NUM++;
data_write();
}
void delete_record()
{
char id[4];
int i,j;
printf("请输入要删除学生纪录的学号:");
scanf("%s",id);
for (i=0;i<STU_NUM;i++)
if (strcmp(student[i].id,id)==0)
break;
if (i>=STU_NUM)
printf("要删除的学生记录不存在!");
else
{
for (j=i;j<STU_NUM;j++)
{
student[j]=student[j+1];
}
STU_NUM--;
data_write();
}
}
void sort_record()
{
int score[20],sort[20];
int i,j,t;
for (i=0;i<STU_NUM;i++)
{
score[i]=student[i].score_math+student[i].score_english+student[i].score_computer;
sort[i]=i;
}

for (i=0;i<STU_NUM-1;i++)
for(j=0;j<STU_NUM-i;j++)
if(score[j]<score[j+1])
{
t=score[j];score[j]=score[j+1];score[j+1]=t;
t=sort[j];sort[j]=sort[j+1];sort[j+1]=t;
}

//display records sorted
printf("学号\t姓名\t数学\t英语\t计算机\t总分\n");
for (i=0;i<STU_NUM;i++)
printf("%s\t%s\t%d\t%d\t%d\t%d\n",student[sort[i]].id,student[sort[i]].name,
student[sort[i]].score_math,student[sort[i]].score_english,student[sort[i]].score_computer,score[i]);
}

void data_input()
{
int i;
printf("请输入学生总数:");
scanf("%d",&STU_NUM);
printf("请输入%d个学生的信息\n学号\t姓名\t数学\t英语\t计算机 :\n",STU_NUM);
for (i=0;i<STU_NUM;i++)
scanf("%s%s%d%d%d",student[i].id,student[i].name,&student[i].score_math,&student[i].score_english,&student[i].score_computer);
}
void data_write()
{
int i;
FILE *fp;
fp=fopen(FILENAME,"w");
fwrite(&STU_NUM,sizeof(int),1,fp);
for (i=0;i<STU_NUM;i++)
fwrite(&student[i],sizeof(struct STUDENT),1,fp);
fclose(fp);
}

void data_read()
{
int i;
FILE *fp;
fp=fopen(FILENAME,"r");
fread(&STU_NUM,sizeof(int),1,fp);
for (i=0;i<STU_NUM;i++)
fread(&student[i],sizeof(struct STUDENT),1,fp);
fclose(fp);
}
//only can display one record.
void print_max_math()
{
int i,max=0 ;
for (i=1;i<STU_NUM;i++)
if (student[i].score_math>student[max].score_math)
max=i;
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[max].id,student[max].name,student[max].score_math,student[max].score_english,student[max].score_computer);
}
void print_max_english()
{
int i,max=0 ;
for (i=1;i<STU_NUM;i++)
if (student[i].score_english>student[max].score_english)
max=i;
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[max].id,student[max].name,student[max].score_math,student[max].score_english,student[max].score_computer);

}
void print_max_computer()
{
int i,max=0 ;
for (i=1;i<STU_NUM;i++)
if (student[i].score_computer>student[max].score_computer)
max=i;
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[max].id,student[max].name,student[max].score_math,student[max].score_english,student[max].score_computer);
}
void print_math_notpass()
{
int i,flag=0;
for (i=0;i<STU_NUM;i++)
if (student[i].score_math<60)
{
if (flag==0)
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[i].id,student[i].name,student[i].score_math,student[i].score_english,student[i].score_computer);
flag=1;
}
if (flag==0)
printf("所有学生的数学成绩全部及格!\n");
}
void print_english_notpass()
{
int i,flag=0;
for (i=0;i<STU_NUM;i++)
if (student[i].score_english<60)
{
if (flag==0)
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[i].id,student[i].name,student[i].score_math,student[i].score_english,student[i].score_computer);
flag=1;
}
if (flag==0)
printf("所有学生的英语成绩全部及格!\n");
}
void print_computer_notpass()
{
int i,flag=0;
for (i=0;i<STU_NUM;i++)
if (student[i].score_computer<60)
{
if (flag==0)
printf("学号\t姓名\t数学\t英语\t计算机\n");
printf("%s\t%s\t%d\t%d\t%d\n",student[i].id,student[i].name,student[i].score_math,student[i].score_english,student[i].score_computer);
flag=1;
}
if (flag==0)
printf("所有学生的计算机成绩全部及格!\n");
}
void print_high_score()
{
int i,max=0,temp;
for (i=1;i<STU_NUM;i++)
{
temp=student[i].score_math+student[i].score_english+student[i].score_computer;
if (temp>student[max].score_math+student[max].score_english+student[max].score_computer)
max=i;
}
temp=student[max].score_math+student[max].score_english+student[max].score_computer;
printf("学号\t姓名\t数学\t英语\t计算机\t总分\n");
printf("%s\t%s\t%d\t%d\t%d\t%d\n",student[max].id,student[max].name,student[max].score_math,student[max].score_english,student[max].score_computer,temp);
}

这套系统学生成绩保存在什么地方? 是数据库么?

1、 专业基本数据的编辑:包括专业记录的添加、修改、删除和查询等功能。
2、 学生基本数据的编辑:包括学生记录的添加、修改、删除和查询等功能。
3、 课程数据的编辑:包括课程记录的添加、修改、删除和查询等功能。
4、 学生成绩数据的编辑:包括学生成绩记录的添加、修改、删除和查询等功能。
5、 学生成绩统计:包括按学号、按课程号求平均分;按学号、按课程号求不及格的门数和人数等功能。