c语言-简易学生管理系统

这是一个使用C语言编写的简易学生管理系统,具备添加、显示、查询和修改学生记录功能,包括学号、姓名、性别和各科成绩等信息。即将转换为C++实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几周老师布置的作业,这是用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);
              }
       }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值