C语言课程设计学生成绩管理系统二(含完整代码)

亲给个打赏吧

1.系统功能
(1)通过菜单的形式实现人机交互界面
(2)实现录入学生基本信息和成绩功能
(3)实现删除指定学生的基本信息和成绩功能
(4)实现修改指定学生的基本信息和成绩功能
(5)实现查询指定学生的基本信息和成绩功能

在这里插入图片描述

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#define LEN sizeof(struct Student)
struct Student{
 char number[20];  //学号 
 char name[10];  //姓名 
 char sex[4];   //性别 
 int Chinese;   //语文成绩 
 int Math;    //数学成绩 
 int English;   //英语成绩 
 struct Student* next; //指向下一个数据的指针 
};
struct Student* head = NULL;
struct Student* end = NULL;
 void Menu(){
  void Menu();
 void Add();
 void View();
 void Delete();
 void Repair();
 void ViewAll();
 system("cls");
 printf("1、学生信息录入\n");
 printf("2、学生单个成绩查询\n");
 printf("3、查询全部学生成绩\n");
 printf("4、修改学生信息\n");
 printf("5、删除学生信息\n");
 printf("6、退出系统\n");
 int choice;
 printf("请选择要使用的功能:\n");
 loop:
 scanf("%d",&choice);
 switch (choice) {
 case 1:
  Add();
  Menu();
 case 2:
  View();
  Menu();
 case 3:
  ViewAll();
  Menu();
 case 4:
  Repair();
  Menu();
 case 5:
  Delete();
  Menu();
 case 6:
  exit(0);
 default:
   printf("输入有误,请重新选择:");
   goto loop; 
 }
} 
 
void Add(){
 system("cls");
 int count;
 printf("请输入要录入信息的个数:");
 scanf("%d",&count);
 struct Student *s1,*s2,*temp;
 s1=s2=(struct Student*)malloc(LEN);
 if(head==NULL){
  head = s1;
 }else{
  end->next = s1 ;
 }
 int i = 1; 
 while(count>0){
  printf("请输入第%d位学生信息:\n",i++);
  printf("学号:\n");
  scanf("%s",&s1->number);
  printf("姓名:\n");
  scanf("%s",&s1->name);
  printf("性别:\n");
  scanf("%s",&s1->sex);
  printf("语文成绩:\n");
  scanf("%d",&s1->Chinese);
  printf("数学成绩:\n");
  scanf("%d",&s1->Math);
  printf("英语成绩:\n");
  scanf("%d",&s1->English);
  count--;
  s2->next=s1;
  s2=s1;
  s1=(struct Student*)malloc(LEN);
  printf("添加成功!\n");
  system("pause");
  system("cls");
 }
 s2->next= NULL;
 end = s2;
 printf("全部添加成功!\n");
 system("pause");
}
void View(){
 system("cls");
 struct Student *VS;
 printf("输入要查询信息的学生学号:\n");
 char num[10];
 int flag=1;
 scanf("%s",&num);
 for(VS=head;VS!=NULL;){
  if(strcmp(VS->number,num)==0){
   printf("成功找到!\n");
   printf("学号:%s\t姓名:%s\t性别:%s\n",VS->number,VS->name,VS->sex);
   printf("语文:%d\t数学:%d\t英语:%d",VS->Chinese,VS->Math,VS->English);
   flag=0;
   break;
  }
  VS=VS->next;
 }
 if(flag){
  printf("不好意思,未找到!\n");
 }
 system("pause");
}
void ViewAll(){
 system("cls");
 struct Student *VA;
 if(head!=NULL){
  printf("所有学生成绩如下:\n");
  for(VA=head;VA!=NULL;){
   printf("学号:%s\t姓名:%s\t性别:%s\n",VA->number,VA->name,VA->sex);
   printf("语文:%d\t数学:%d\t英语:%d\n",VA->Chinese,VA->Math,VA->English);
   VA=VA->next; 
  }
 }else{
  printf("该系统中还未录入信息");
 } 
 system("pause");
}
void Repair(){
 system("cls");
 struct Student *RS;
 char num[10];
 int flag = 1;
 printf("输入要修改成绩学生的学号:\n");
 scanf("%s",num);
 for(RS=head;RS!=NULL;){
  if(strcmp(RS->number,num)==0){
   printf("成功找到该学生");
   printf("学号:%s\t姓名:%s\t性别:%s\n",RS->number,RS->name,RS->sex);
   printf("语文:%d\t数学:%d\t英语:%d\n",RS->Chinese,RS->Math,RS->English);
   flag = 0;
   printf("学号:\n");
   scanf("%s",&RS->number);
   printf("姓名:\n");
   scanf("%s",&RS->name);
   printf("性别:\n");
   scanf("%s",&RS->sex);
   printf("语文成绩:\n");
   scanf("%d",&RS->Chinese);
   printf("数学成绩:\n");
   scanf("%d",&RS->Math);
   printf("英语成绩:\n");
   scanf("%d",&RS->English);
   printf("修改成功");
   system("pause");
  }
  RS=RS->next;
 }
 if(flag){
  printf("输入信息有误,未查询到");
  system("pause");
 }
}
void Delete(){
 system("cls");
 int flag =1;
 while(flag){
  printf("请输入要删除的学生学号:");
  char num[10];
  scanf("%s",&num);
  struct Student * DS,*temp;
  for(DS=head;DS!=NULL;){
   if(strcmp(DS->number,num)==0){
    if(DS==head){
     head = DS->next;
     flag = 0;
     printf("删除成功!\n");
     system("pause");
    }else{
     flag = 0;
     printf("删除成功!\n");
     temp->next= DS->next;
     free(DS);
     system("pause");
    }
    
   }
   temp = DS;
   DS=DS->next;
  }
  if(flag){
   printf("未找到该学生学号!\n");
   system("pause");
  }
 }
}
 
int main(){
 void Menu();
 void Add();
 void View();
 void Delete();
 void Repair();
 void ViewAll();
 Menu();
 
}
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值