软件训练
总体设计:
本次实验要求做成绩分析系统。该系统要求六个功能:
1 录入个人基本信息
2 查询信息
3 修改信息
4 班级成绩分析
5 各科成绩分析
6 对全班同学成绩排名
同时要求有简单的操作界面;
在主函数中打印操作界面;定义六个子函数实现相关的六个功能。其中要求信息录入查询修改,所以应该定义文件存储数据和相关的结构体承载各个变量。
详细设计:
首先在主函数中打印操作界面,在界面上显示以上要求的功能。用switch语句实现功能的选择。并将switch语句嵌套在while语句中使得函数在实现子功能时不会跳出。
录入功能:首先用添加方式打开文件,定义录入学生人数n。输入学生信息先存入结构体中。
在用fscanf存入到打开的文件中。关闭文件,返回主函数。
查询功能:只读方式打开文件,调出数据,关闭文件。输入要查询人的姓名或学号。打印该人的基本信息。返回到主函数。
修改功能:先用只读方式打开文件,调出数据,关闭文件。输入要修改人的信息,并替换。再以只写方式打开文件,将新的信息存入。返回的主函数。
班级成绩分析功能:要求各科平均分,优秀率,及格率。首先只读方式调任文件,调出数据,关闭文件。用for循环求出各科的总成绩,总人数,用if语句判断优秀人数和及格人数。最后求平均成绩,以及优秀率及格率打印出来。返回到主函数。
各科成绩分析功能:要求各科平均成绩,最大最小值。首先只读方式调入文件,调出数据,关闭文件。用for循环求出各科的总成绩,总人数。用if语句求出最值。打印平均成绩和最值。返回主函数。
对全班同学成绩排名:对总成绩排名并打印各科成绩。首先打开文件,调出数据,关闭文件。求出总成绩,并用冒泡法对其排序,同时将各科成绩和姓名同时排序。最后打印。返回主函数。
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
FILE *fp,*fw; 文件定义
char z,l;
struct chengji 定义结构体
{int yuwen;
int gaoshu;
int waiyu;
};
struct student 嵌套结构体
{
char num[20];
char name[10];
char xibie[20];
char banji[20];
struct chengji chengji;
} student[100];
先打开文本 输入学生信息 存入变量 打印到文本 关闭文本
返回到主函数
luru(struct student *student) 子函数1
{int i,n,j;
fp=fopen("student.txt","a"); 打开文本
printf("qing shuru ni yao luru xuesheng xinxi ge shu n \n");
scanf("%d",&n);
printf("qing shuru xuesheng jiben xinxi. \n");
printf("num name xiebie banji yuwen gaoshu waiyu \n");
for(i=0;i
{scanf("%s %s %s %s %d %d %d",student[i].num,student[i].name,student[i].xibie,\
student[i].banji,&student[i].chengji.yuwen,&student[i].chengji.gaoshu,\
&student[i].chengji.waiyu);
}
for(i=0;i
{fprintf(fp,"%s %s %s %s %d %d %d",student[i].num,student[i].name,student[i].xibie,\
student[i].banji,student[i].chengji.yuwen,student[i].chengji.gaoshu,\
student[i].chengji.waiyu);
fprintf(fp,"\n");}
fclose(fp);
}
打开文件 读取信息 关闭文件 输入查询人的姓名学号
打印学生信息 返回到主函数
chaxun(struct student *student)
{
int j;char a[20];
fp=fopen("student.txt","r");
if(!fp){printf("file cannot found.\