程序代码:
源码:
// main.c
// 学生信息管理系统
// Created by kys-23 on 15/12/24.
// Copyright ? 2015年 kys-23. All rights reserved.
#include
#include
#include
#define MAXN 35
#define MAX_NAME 255
//学生结构体
typedef struct Student{
int id;//学号
char name[MAX_NAME];//姓名
double Chinese;//语文
double Math;//数学
double English;//英语
double Biological;//生物
double Physical;//物理
double Chemical;//化学
double average;//平均分
double totalScore;//总分
}STUDENT;
//输入模块:输入学生相关信息,如学号,姓名,成绩
void inPut(STUDENT *data,int *len){
int id;
putchar('\n');
printf("请录入新的信息,退出请输入-1.\n");
printf("格式:\n学号:\n\n");
printf("姓名 语文 数学 英语 物理 化学 生物\n");
putchar('\n');
printf("如\n1\n小明 93 95 89 87 56 89\n");
scanf("%d",&id);
while (id!=-1) {
data[*len].id = id;
scanf("%s %lf %lf %lf %lf %lf %lf",data[*len].name,&data[*len].Chinese,&data[*len].Math,&data[*len].English,&data[*len].Biological,&data[*len].Chemical,&data[*len].Physical);
data[*len].average = (data[*len].Chinese+data[*len].Math+data[*len].English+data[*len].Chemical+data[*len].Biological+data[*len].Physical)/6.0;
data[*len].totalScore = data[*len].Chinese+data[*len].Math+data[*len].English+data[*len].Physical+data[*len].Biological+data[*len].Chemical;
(*len)++;
scanf("%d",&id);
}
}
//输出模块:输出学生相关信息
void outPut(STUDENT *data,int len){
int i;
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%10s","数学");
printf("%10s","英语");
printf("%10s","生物");
printf("%10s","物理");
printf("%10s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
for (i = 0; i
}
putchar('\n');
for (i = 0; i
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
}
for (i = 0; i
}
putchar('\n');
printf("按回车键继续");
getchar();
getchar();
}
//排序模块:按照平均成绩排序
//冒泡法排序两次循环把较小的放到最前面
void sort(STUDENT *data,int len){ int i,j,k;
STUDENT temp;
for (i = 0; i
for (k = i,j=i+1; j
if(data[k].average>data[j].averag
e) {k=j;
}
if (k!=i) {temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
}
}
//查找模块:查找对应的学生信息
void find(STUDENT *data,int len){
int function_id ;
int find_id , find_re , result;
char find_sub;
int i;
lab:result = 0;
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%s\n","1.按学号查找\n2.按成绩查找");
for (i=0; i
putchar('*');
}
putchar('\n');
//按学号查找
scanf("%d",&function_id);
if (function_id == 1) {
printf("%s\n","请输入需要查找的学生的学号,退出当前菜单请输入-1");
scanf("%d",&find_id);
if (find_id == -1) {
return;
}
while (data[result].id!=find_id&&result
result++;
if (result>=len) { printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1f",data[i].Chinese);
printf("%10.f",data[i].Math);
printf("%10.1f",data[i].English);
printf("%10.1f",data[i].Biological);
printf("%10.1f",data[i].Physical);
printf("%10.1f",data[i].Chemical);
printf("%12.1f",data[i].average);
printf("%10.1f",data[i].totalScore);
putchar('\n');
for (i=0; i
}
putchar('\n');
goto lab;
}
}
}else{
for (i=0; i
}
putchar('\n');
printf("%s\n","A.Chinese\nB.Math\nC.English\nD.Biological\nE.Physical\nF.Chemical\n");
for (i=0; i
}
putchar('\n');
printf("%s\n","请输入需要查找科目,退出当前菜单请输入-1");
scanf("%s",&find_sub);
if (find_sub == -1) {return;
}
switch (find_sub) {
case 'A':
printf("%s\n","请输入需要查找的成绩,退出当前菜单请输入-1");
scanf("%d",&find_re);
while (data[result].Chinese!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信
息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'B':
while (data[result].Math!=find_re&&result
result++;
if (result>=len) {printf("%s\n","未查到相关信息");
goto lab;
}else{printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'C':
while (data[result].English!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'D':
while (data[result].Biological!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'E':
while (data[result].Physical!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chem
ical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
default:
while (data[result].Chemical!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
}
putchar('\n');
goto lab;
}
}
break;
}
}
}
//插入模块:插入新的学生信息
void insert(STUDENT *data,int *len){
int id,pos;
double Chinese,math,English,Biological,Physical,Chemical,average,totalScore;
int i;
char name[MAX_NAME];
lab:printf("%s\n","输入新的学生信息,退出当前菜单请输入-1");
printf("%s\n","格式:学号");
printf("%s\n"," 姓名 语文 数学 英语 生物 物理 化学");
scanf("%d",&id);
if (id == -1) {return;
}
data[*len].id = id;
scanf("%s %lf %lf %lf %lf %lf %lf",name,&Chinese,&math,&English,&Biological,&Physical,&Chemical);
average = (Chinese+math+English+Biological+Physical+Che
mical)/6.0;
totalScore = Chinese+math+English+Biological+Physical+Chemical;
pos = 0;
while ((data[pos].average
}
for (i = *len-1; i>=pos; i--) { data[i+1]=data[i];
}
data[pos].id = id;
strcpy(data[pos].name, name);
data[pos].Chinese = Chinese;
data[pos].Math = math;
data[pos].English = English;
data[pos].Biological = Biological;
data[pos].Physical = Physical;
data[pos].Chemical = Chemical;
data[pos].average = average;
data[pos].totalScore = totalScore;
(*len)++;
goto lab;
}
//删除模块:按照学生的学号删除相应的信息
void delete_item(STUDENT *data,int *len){
int id,i ,pos ;
lab:pos = 0;
printf("%s\n","输入需要删除的学生的学号,退出当前菜单请输入-1");
scanf("%d",&id);
if (id == -1) {return;
}
while ((data[pos].id!=id)&&(pos
}
if (pos >=*len) {printf("%s\n","未找到需要删除的学生信息");
goto lab;
}else{
for (i = pos + 1; i
}
*len = *len-1;
if (*len==0) {printf("%s\n","没有任何信息,请按回车键返回");
getchar();
getchar();
return;
}
goto lab;
}
}
//统计模块:统计各分段的人数()
void Stat(STUDENT *data,int len)
{
int no_59=0,no_69=0,no_79=0,no_89=0,no_100=0;
int i;
for (i = 0; i
if (data[i].average
no_59++;
}else if (data[i].average
no_69++;
}else if (data[i].average
no_79++;
}else if (data[i].average
no_89++;
}else {
no_100++;
}
for (i = 0; i
}
putchar('\n');
printf("%10s","分数");
printf("%10s","0--59");
printf("%10s","60--69");
printf("%10s","70--79");
printf("%10s","80--89");
printf("%10s","90--100");
putchar('\n');
putchar('\n');
printf("%10s","学生");
printf("%10d",no_59);
printf("%10d",no_69);
printf("%10d",no_79);
printf("%10d",no_89);
printf("%10d",no_100);
putchar('\n');
for (i = 0; i
}
putchar('\n');
printf("按回车键返回");
getchar();
getchar();
}
}
//开始界面:显示该程序的功能和相关信息
void paint(){
int i;
printf("%55s\n","河北北方学院学生成绩管理系统\n");
for (i = 0; i
putchar('*');
}
putchar('\n');
printf(" 1输入信息\n");
printf(" 2输出信息\n");
printf(" 3按平均分排序\n");
printf(" 4按学号查找\n");
printf(" 5插入新
学生信息\n");
printf(" 6按学号删除\n");
printf(" 7按平均分输出统计信息\n");
printf(" 8保存\n");
printf(" 0退出程序\n");
for (i = 0; i
}
putchar('\n');
printf("%s\n","请输入功能序号:");
}
//保存模块:将输入的信息保存到text文件中
void save(STUDENT *data,int len)//将数据保存到文件
{ int i;
FILE *fp;
fp = fopen("成绩统计表.txt", "w");
fprintf(fp, "%8s","学号");
fprintf(fp, "%8s","姓名");
fprintf(fp, "%8s","语文");
fprintf(fp, "%8s","数学");
fprintf(fp, "%10s","英语");
fprintf(fp, "%8s","生物");
fprintf(fp, "%8s","物理");
fprintf(fp, "%8s","化学");
fprintf(fp, "%12s","平均分");
fprintf(fp, "%10s\n","总分");
fprintf(fp, "*************************************\n");
putchar('\n');
for (i = 0; i
fprintf(fp,"%8d", data[i].id);
fprintf(fp,"%8s", data[i].name);
fprintf(fp,"%8.1lf", data[i].Chinese);
fprintf(fp,"%8.1lf", data[i].Math);
fprintf(fp,"%10.1lf", data[i].English);
fprintf(fp,"%8.1lf",data[i].Biological);
fprintf(fp,"%8.1lf",data[i].Physical);
fprintf(fp,"%8.1lf",data[i].Chemical);
fprintf(fp,"%12.1lf", data[i].average);
fprintf(fp,"%10.1lf\n", data[i].totalScore);
}
fprintf(fp, "*************************************\n");
fclose(fp);
printf("文件已保存到\"成绩统计表.txt\"");
getchar();
getchar();
}
int main(int argc, const char * argv[]) {
STUDENT data[MAXN];//创建学生信息数组
int len = 0;
char ctrl_ch;
paint();
scanf("%c", &ctrl_ch);
while (ctrl_ch != '0') {//选择功能
switch(ctrl_ch) {
case '1': inPut(data, &len);
break;
case '2': outPut(data, len);
break;
case '3': sort(data, len);
break;
case '4': find(data, len);
break;
case '5': insert(data, &len);
break;
case '6': delete_item(data, &len);
break;
case '7': Stat(data, len);
break;
case '8': save(data, len);
break;
default:
if (ctrl_ch != '\n')
printf("%s\n", "输入错误!");
break;
}
if (ctrl_ch != '\n')
paint();
scanf("%c", &ctrl_ch);
}
}
程序代码:
源码:
// main.c
// 学生信息管理系统
// Created by kys-23 on 15/12/24.
// Copyright ? 2015年 kys-23. All rights reserved.
#include
#include
#include
#define MAXN 35
#define MAX_NAME 255
//学生结构体
typedef struct Student{
int id;//学号
char name[MAX_NAME];//姓名
double Chinese;//语文
double Math;//数学
double English;//英语
double Biological;//生物
double Physical;//物理
double Chemical;//化学
double average;//平均分
double totalScore;//总分
}STUDENT;
//输入模块:输入学生相关信息,如学号,姓名,成绩
void inPut(STUDENT *data,int *len){
int id;
putchar('\n');
printf("请录入新的信息,退出请输入-1.\n");
printf("格式:\n学号:\n\n");
printf("姓名 语文 数学 英语 物理 化学 生物\n");
putchar('\n');
printf("如\n1\n小明 93 95 89 87 56 89\n");
scanf("%d",&id);
while (id!=-1) {
data[*len].id = id;
scanf("%s %lf %lf %lf %lf %lf %lf",data[*len].name,&data[*len].Chinese,&data[*len].Math,&data[*len].English,&data[*len].Biological,&data[*len].Chemical,&data[*len].Physical);
data[*len].average = (data[*len].Chinese+data[*len].Math+data[*len].English+data[*len].Chemical+data[*len].Biological+data[*len].Physical)/6.0;
data[*len].totalScore = data[*len].Chinese+data[*len].Math+data[*len].English+data[*len].Physical+data[*len].Biological+data[*len].Chemical;
(*len)++;
scanf("%d",&id);
}
}
//输出模块:输出学生相关信息
void outPut(STUDENT *data,int len){
int i;
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%10s","数学");
printf("%10s","英语");
printf("%10s","生物");
printf("%10s","物理");
printf("%10s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
for (i = 0; i
}
putchar('\n');
for (i = 0; i
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
}
for (i = 0; i
}
putchar('\n');
printf("按回车键继续");
getchar();
getchar();
}
//排序模块:按照平均成绩排序
//冒泡法排序两次循环把较小的放到最前面
void sort(STUDENT *data,int len){ int i,j,k;
STUDENT temp;
for (i = 0; i
for (k = i,j=i+1; j
if(data[k].average>data[j].averag
e) {k=j;
}
if (k!=i) {temp = data[i];
data[i] = data[k];
data[k] = temp;
}
}
}
}
//查找模块:查找对应的学生信息
void find(STUDENT *data,int len){
int function_id ;
int find_id , find_re , result;
char find_sub;
int i;
lab:result = 0;
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%s\n","1.按学号查找\n2.按成绩查找");
for (i=0; i
putchar('*');
}
putchar('\n');
//按学号查找
scanf("%d",&function_id);
if (function_id == 1) {
printf("%s\n","请输入需要查找的学生的学号,退出当前菜单请输入-1");
scanf("%d",&find_id);
if (find_id == -1) {
return;
}
while (data[result].id!=find_id&&result
result++;
if (result>=len) { printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1f",data[i].Chinese);
printf("%10.f",data[i].Math);
printf("%10.1f",data[i].English);
printf("%10.1f",data[i].Biological);
printf("%10.1f",data[i].Physical);
printf("%10.1f",data[i].Chemical);
printf("%12.1f",data[i].average);
printf("%10.1f",data[i].totalScore);
putchar('\n');
for (i=0; i
}
putchar('\n');
goto lab;
}
}
}else{
for (i=0; i
}
putchar('\n');
printf("%s\n","A.Chinese\nB.Math\nC.English\nD.Biological\nE.Physical\nF.Chemical\n");
for (i=0; i
}
putchar('\n');
printf("%s\n","请输入需要查找科目,退出当前菜单请输入-1");
scanf("%s",&find_sub);
if (find_sub == -1) {return;
}
switch (find_sub) {
case 'A':
printf("%s\n","请输入需要查找的成绩,退出当前菜单请输入-1");
scanf("%d",&find_re);
while (data[result].Chinese!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信
息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'B':
while (data[result].Math!=find_re&&result
result++;
if (result>=len) {printf("%s\n","未查到相关信息");
goto lab;
}else{printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'C':
while (data[result].English!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'D':
while (data[result].Biological!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
case 'E':
while (data[result].Physical!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chem
ical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
putchar('*');
}
putchar('\n');
goto lab;
}
}
break;
default:
while (data[result].Chemical!=find_re&&result
result++;
if (result>=len) {
printf("%s\n","未查到相关信息");
goto lab;
}else{
printf("%s\n","查询信息如下:");
for (i=0; i
putchar('*');
}
putchar('\n');
printf("%8s","学号");
printf("%8s","姓名");
printf("%8s","语文");
printf("%8s","数学");
printf("%10s","英语");
printf("%8s","生物");
printf("%8s","物理");
printf("%8s","化学");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
printf("%8d",data[i].id);
printf("%8s",data[i].name);
printf("%8.1lf",data[i].Chinese);
printf("%10.1lf",data[i].Math);
printf("%10.1lf",data[i].English);
printf("%10.1lf",data[i].Biological);
printf("%10.1lf",data[i].Physical);
printf("%10.1lf",data[i].Chemical);
printf("%12.1lf",data[i].average);
printf("%10.1lf",data[i].totalScore);
putchar('\n');
for (i=0; i
}
putchar('\n');
goto lab;
}
}
break;
}
}
}
//插入模块:插入新的学生信息
void insert(STUDENT *data,int *len){
int id,pos;
double Chinese,math,English,Biological,Physical,Chemical,average,totalScore;
int i;
char name[MAX_NAME];
lab:printf("%s\n","输入新的学生信息,退出当前菜单请输入-1");
printf("%s\n","格式:学号");
printf("%s\n"," 姓名 语文 数学 英语 生物 物理 化学");
scanf("%d",&id);
if (id == -1) {return;
}
data[*len].id = id;
scanf("%s %lf %lf %lf %lf %lf %lf",name,&Chinese,&math,&English,&Biological,&Physical,&Chemical);
average = (Chinese+math+English+Biological+Physical+Che
mical)/6.0;
totalScore = Chinese+math+English+Biological+Physical+Chemical;
pos = 0;
while ((data[pos].average
}
for (i = *len-1; i>=pos; i--) { data[i+1]=data[i];
}
data[pos].id = id;
strcpy(data[pos].name, name);
data[pos].Chinese = Chinese;
data[pos].Math = math;
data[pos].English = English;
data[pos].Biological = Biological;
data[pos].Physical = Physical;
data[pos].Chemical = Chemical;
data[pos].average = average;
data[pos].totalScore = totalScore;
(*len)++;
goto lab;
}
//删除模块:按照学生的学号删除相应的信息
void delete_item(STUDENT *data,int *len){
int id,i ,pos ;
lab:pos = 0;
printf("%s\n","输入需要删除的学生的学号,退出当前菜单请输入-1");
scanf("%d",&id);
if (id == -1) {return;
}
while ((data[pos].id!=id)&&(pos
}
if (pos >=*len) {printf("%s\n","未找到需要删除的学生信息");
goto lab;
}else{
for (i = pos + 1; i
}
*len = *len-1;
if (*len==0) {printf("%s\n","没有任何信息,请按回车键返回");
getchar();
getchar();
return;
}
goto lab;
}
}
//统计模块:统计各分段的人数()
void Stat(STUDENT *data,int len)
{
int no_59=0,no_69=0,no_79=0,no_89=0,no_100=0;
int i;
for (i = 0; i
if (data[i].average
no_59++;
}else if (data[i].average
no_69++;
}else if (data[i].average
no_79++;
}else if (data[i].average
no_89++;
}else {
no_100++;
}
for (i = 0; i
}
putchar('\n');
printf("%10s","分数");
printf("%10s","0--59");
printf("%10s","60--69");
printf("%10s","70--79");
printf("%10s","80--89");
printf("%10s","90--100");
putchar('\n');
putchar('\n');
printf("%10s","学生");
printf("%10d",no_59);
printf("%10d",no_69);
printf("%10d",no_79);
printf("%10d",no_89);
printf("%10d",no_100);
putchar('\n');
for (i = 0; i
}
putchar('\n');
printf("按回车键返回");
getchar();
getchar();
}
}
//开始界面:显示该程序的功能和相关信息
void paint(){
int i;
printf("%55s\n","河北北方学院学生成绩管理系统\n");
for (i = 0; i
putchar('*');
}
putchar('\n');
printf(" 1输入信息\n");
printf(" 2输出信息\n");
printf(" 3按平均分排序\n");
printf(" 4按学号查找\n");
printf(" 5插入新
学生信息\n");
printf(" 6按学号删除\n");
printf(" 7按平均分输出统计信息\n");
printf(" 8保存\n");
printf(" 0退出程序\n");
for (i = 0; i
}
putchar('\n');
printf("%s\n","请输入功能序号:");
}
//保存模块:将输入的信息保存到text文件中
void save(STUDENT *data,int len)//将数据保存到文件
{ int i;
FILE *fp;
fp = fopen("成绩统计表.txt", "w");
fprintf(fp, "%8s","学号");
fprintf(fp, "%8s","姓名");
fprintf(fp, "%8s","语文");
fprintf(fp, "%8s","数学");
fprintf(fp, "%10s","英语");
fprintf(fp, "%8s","生物");
fprintf(fp, "%8s","物理");
fprintf(fp, "%8s","化学");
fprintf(fp, "%12s","平均分");
fprintf(fp, "%10s\n","总分");
fprintf(fp, "*************************************\n");
putchar('\n');
for (i = 0; i
fprintf(fp,"%8d", data[i].id);
fprintf(fp,"%8s", data[i].name);
fprintf(fp,"%8.1lf", data[i].Chinese);
fprintf(fp,"%8.1lf", data[i].Math);
fprintf(fp,"%10.1lf", data[i].English);
fprintf(fp,"%8.1lf",data[i].Biological);
fprintf(fp,"%8.1lf",data[i].Physical);
fprintf(fp,"%8.1lf",data[i].Chemical);
fprintf(fp,"%12.1lf", data[i].average);
fprintf(fp,"%10.1lf\n", data[i].totalScore);
}
fprintf(fp, "*************************************\n");
fclose(fp);
printf("文件已保存到\"成绩统计表.txt\"");
getchar();
getchar();
}
int main(int argc, const char * argv[]) {
STUDENT data[MAXN];//创建学生信息数组
int len = 0;
char ctrl_ch;
paint();
scanf("%c", &ctrl_ch);
while (ctrl_ch != '0') {//选择功能
switch(ctrl_ch) {
case '1': inPut(data, &len);
break;
case '2': outPut(data, len);
break;
case '3': sort(data, len);
break;
case '4': find(data, len);
break;
case '5': insert(data, &len);
break;
case '6': delete_item(data, &len);
break;
case '7': Stat(data, len);
break;
case '8': save(data, len);
break;
default:
if (ctrl_ch != '\n')
printf("%s\n", "输入错误!");
break;
}
if (ctrl_ch != '\n')
paint();
scanf("%c", &ctrl_ch);
}
}