前几周老师布置的作业,这是用c写的,过些天还要改成用c++的
【实验内容】
1.添加学生记录
2.显示所有学生记录
3.按学号或姓名查询记录
4.按学号或姓名修改记录
5.保存
0.退出。
学生基本信息:
学号、姓名、性别、语文、数学、英语成绩等
源程序:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct student{
charnum[12];
charname[8];
charsex[2];
doublechinese;
doublemath;
doubleenglish;
};
struct student stu[30];//定义结构体数组存放学生的信息
int n = 0;//当前学生的个数
void menu()//定义显示菜单项的函数
{
printf("*****************************\n");
printf("*****1.添加学生记录**********\n");
printf("*****2.显示所有学生记录******\n");
printf("*****3.按学号查找记录********\n");
printf("*****4.按学号修改记录********\n");
printf("*****5.保存******************\n");
printf("*****0.退出******************\n");
printf("请输入您的选择(0-5):\n");
}
void add()//增加一条记录
{
if(n< 30){
scanf("%s%s%s%lf%lf%lf",stu[n].num,stu[n].name,stu[n].sex,&stu[n].chinese,&stu[n].math,&stu[n].english);
++n;
}
else
printf("学生数已满无法增加\n");
}
void display()//显示所有记录
{
FILE*fp;
intm;
if((fp= fopen("data.dat","r")) == NULL){
printf("无法打开此文件\n");
}
for(m= 0; m < 30; ++m){
fread(&stu[m],sizeof(structstudent),1,fp);
printf("学号:%s 姓名:%s 性别:%s 语文:%lf 数学:%lf 英语:%lf\n",stu[m].num,stu[m].name,stu[m].sex,stu[m].chinese,stu[m].math,stu[m].english);
}
printf("\n");
}
int find()//按学号查找
{
FILE*fp;
intnow;
inta;
charch[12];
printf("请输入你要查找的学号:");
scanf("%s",ch);
printf("\n");
if((fp= fopen("data.dat","r")) == NULL){
printf("无法打开此文件\n");
return0;
}
for(now= 0; now < 30; ++now){
fread(&stu[now],sizeof(structstudent),1,fp);
if(strcmp(stu[now].num,ch)==0){
printf("学号:%s 姓名:%s 性别:%s 语文:%lf 数学:%lf 英语:%lf\n",stu[now].num,stu[now].name,stu[now].sex,stu[now].chinese,stu[now].math,stu[now].english);
a= now;
continue;
}
}
printf("\n");
returna;
}
void modify()//用学号查找学生数据并且修改
{
FILE*fp;
intm;
m= find();
if((fp= fopen("data.dat","w")) == NULL){
printf("无法打开此文件\n");
return;
}
printf("输入修改后的学生信息:");
scanf("%s%s%s%lf%lf%lf",stu[m].num,stu[m].name,stu[m].sex,&stu[m].chinese,&stu[m].math,&stu[m].english);
fwrite(&stu[m],sizeof(structstudent),1,fp);
printf("修改成功\n");
}
void save()//保存学生数据
{
FILE*fp;
inti;
if((fp= fopen("data.dat","a")) == NULL){
printf("无法打开此文件\n");
return;
}
for(i= 0; i < n; ++i){
if(fwrite(&stu[i],sizeof(structstudent),1,fp)!= 1)
printf("保存失败\n");
else
printf("保存成功\n");
}
fclose(fp);
}
int main()
{
intchoice;
while(1)
{
menu(); //调用显示菜单项的函数,
scanf("%d",&choice);
switch(choice){
case 1:add();break;
case2:display();break;
case3:find();break;
case4:modify();break;
case5:save();break;
case 0:exit(0);
}
}
}