4.课程设计成果
一、程序源代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Student
{
int num;
char name[20];
int clas;
char course[10];
float score;
}stu[45]; //定义结构体数组,用来存放每一个学生的信息
int N=20; //定义一个全局变量N,用来控制需要输入的学生个数,此处为以后输入节省时间,设为20
int main()
{
void manage(struct Student stu[]); //声明管理信息函数
void count(struct Student stu[]); //声明统计信息函数
void search(struct Student stu[]); //声明查找信息函数
void save(); //声明保存信息函数
void read(); //声明读入信息函数
read(); //调用读入信息函数(此处需特别注意read函数的位置:只有先读入信息,才能进行后续操作)
printf("*****************************学生成绩管理系统***********************************");
printf("* *");
printf("* 管理学生信息(请输入1) 统计学生信息(请输入2) *");
printf("* 查询学生信息(请输入3) 保存学生信息(请输入4) *");
printf("* *");
printf("********************************************************************************");
printf("请输入功能选项(1-manage/2-count/3-search/4-save):\n");
int order;
scanf("%d",&order);
switch(order) //用switch选择结构来调用四个不同的函数
{
case 1:
manage(stu);break;
case 2:
count(stu);break;
case 3:
search(stu);break;
case 4:
save();break;
}
return 0;
}
//以下为读取保存函数
void read() //定义读入函数(注意read函数在主函数中调用的位置)
{
FILE *fp;
int i;
if((fp=fopen("student.txt","r"))==NULL) //r表示为了输入数据打开一个文本文件
{
printf("cannot open the file!\n");
exit(0);
}
for(i=0;i<N;i++)
{
fscanf(fp,"%d %s %d %s %f",&stu[i].num,stu[i].name,&stu[i].clas,stu[i].course,&stu[i].score);
} //用格式化的方式读取磁盘文件中的信息
fclose(fp);
}
void save() //定义保存函数
{
FILE *fp; //定义文件指针表变量fp
int i;
if((fp=fopen("student.txt","w"))==NULL) //w表示为了输出数据,打开了一个文本文件
{
printf("cannot open the file!\n");
exit(0);
}
for(i=0;i<N;i++)