C语言实现学生学籍管理系统课程设计

Dabria ·
更新时间:2024-09-20
· 650 次阅读

目录

设计要求

完整代码

运行结果

本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下

设计要求

设计学籍管理系统

1、添加学生信息
2、浏览学生信息
3、查询学生信息
4、修改学生信息
5、册J除学生信息
6、排序学生信息
7、读取文件学生
8、保存到文件

完整代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #include<windows.h> #define M 80//对结构体变量(学生数目)进行宏定义 const char* path = "D://C 语言课程设计//信息存储文件.txt"; FILE* fp;//定义指向文件的指针 struct student {  char name[20]; //姓名  char sex[10]; //性别  int age; //年龄  char num[20]; //学号  char major[30];//专业  char classes[30];//班级  int math;//数学成绩  int english;//英语成绩 };//定义结构体变量 int jiami(); void input(struct student stu[M]); void output(struct student stu[M]); void lookfor(struct student stu[M]); void order(struct student stu[M]); void delete_s(struct student stu[M]); void modify(struct student stu[M]); void xuehao(struct student stu[M]); void xingming(struct student stu[M]); void fileread(struct student stu[M]); void filewrite(struct student stu[M]); int count;//判断学生的数目 struct student t; int jiami() {  int s = 123, m;//s 为密码,m 为输入的密码  int i = 0;//用来判断输入的密码是否正确  printf("请输入密码(仅有三次机会):");  scanf("%d", &m);//第一次输入密码  if (m != s)  {  printf("密码错误,还有两次机会:");  scanf("%d", &m);//第二次输入密码  if (m != s)  {  printf("密码错误,最后一次机会:");  scanf("%d", &m);//第三次输入密码  if (m != s)  {  printf("密码错误\n");  }  else i = 1;  }  else i = 1;  }   else i = 1;  return i; } int main() {  int choice, sum, i;//choice 用来判断输入的命令;sum 用来记录输入错误的次数;i 用来判断输入的密码是否正确  struct student stu[M];  sum = 0;//初始化 sum   i = jiami();  if (i == 1)//判断输入的密码是否正确  do  {  printf("\t-------------------------------------------------\n");  printf("\t\t+ 学生学籍管理系统 +\n");  printf("\t-------------------------------------------------\n");  printf("\t\t ***************\n");  printf("\t\t 1、添加学生信息\n");  printf("\t\t 2、浏览学生信息\n");  printf("\t\t 3、查询学生信息\n");  printf("\t\t 4、修改学生信息\n");  printf("\t\t 5、删除学生信息\n");  printf("\t\t 6、排序学生信息\n");  printf("\t\t 7、读取文件学生\n");  printf("\t\t 8、保存到文件\n");  printf("\t\t 9、退出系统\n");  printf("\t\t ***************\n");  printf("请输入你的选择\n"); //输出菜单  scanf("%d", &choice); //输入选择  fflush(stdin); //清空缓冲区   if (choice > 9 || choice <= 0)  {  sum++;  if (sum >= 5)  {  printf("输入错误次数过多,程序将重新开始\n"); -7-  system("pause");  system("cls"); //清屏  }  }  switch (choice)  {  case 1:  input(stu);  break; //添加学生信息   case 2:  output(stu);  break;//浏览学生信息  case 3:  lookfor(stu);  break; //寻找学生信息  case 4:  modify(stu);  break; //修改学生信息  case 5:  delete_s(stu);  break; //删除学生信息  case 6:  order(stu);  break; //排序学生信息  case 7:  fileread(stu);  break; //从文件中读取学生信息  case 8:  filewrite(stu);  break; //将学生信息写入文件  case 9:  printf("感谢你使用学生学籍管理系统,请关掉程序!\n");  system("pause");  break;  default:  printf("无效的选择!请重新输入!\n");  break;  }  } while (choice != 9);  printf("密码输入错误,程序结束\n");  return 0; } void input(struct student stu[M])//自定义输入函数 {  system("cls");//清屏  printf("请添加要输入学生的信息\n");  printf("请输入学生的姓名\n");  scanf("%s", &stu[count].name );//输入学生姓名  printf("请输入学生的性别\n");  scanf("%s", &stu[count].sex);//输入学生性别  printf("请输入学生的年龄\n");  scanf("%d", &stu[count].age);//输入学生年龄  printf("请输入学生的学号\n");  scanf("%s", &stu[count].num);//输入学生学号  printf("请输入学生的专业\n");  scanf("%s", &stu[count].major);//输入学生专业  printf("请输入学生的班级\n");  scanf("%s", &stu[count].classes); //输入学生班级  printf("请输入学生的数学成绩\n");  scanf("%d", &stu[count].math); //输入学生数学成绩  printf("请输入学生的英语成绩\n");  scanf("%d", &stu[count].english);//输入学生英语成绩  count++;//计算学生人数 } void output(struct student stu[M])//自定义输出函数 {  int j;  system("cls");//清屏  if (count == 0)//判断目前是否有学生信息  {  printf("当前已存入学生的信息为 0 个\n");  return;  }  else  {  for (j = 0; j < count; j++)  {  printf("姓名:%s, ", stu[j].name);//输出姓名  printf("性别:%s, ", stu[j].sex);//输出性别  printf("年龄:%d, ", stu[j].age);//输出年龄  printf("学号:%s, ", stu[j].num);//输出学号  printf("专业:%s, ", stu[j].major);//输出专业  printf("班级:%s, ", stu[j].classes);//输出班级  printf("数学成绩:%d, ", stu[j].math);//输出数学成绩  printf("英语成绩:%d\n", stu[j].english);//输出英语成绩  }  } } void lookfor(struct student stu[M])//自定义查询函数 {  int choice;//定义选择  system("cls");//清屏  if (count == 0)//判断目前是否有学生信息  {  printf("当前已存学生的信息为 0 个,无法查询!!!\n");  return;  }  else  {  printf("请选择你所要查询的方式: 1、学号 2、姓名 3、取消\n");  scanf("%d", &choice);//输入选项  switch (choice)  {  case 3:return; break;  case 2:xingming(stu); break;//按姓名查询  case 1:xuehao(stu); break; //按学号查询  default:printf("无效的选择!请重新输入!\n"); break;  }  } }  void xuehao(struct student stu[M])//自定义学号查询函数 {  int j, flag = 0;  int k = 0;//判断是否找到该学生信息  char xh[25];  system("cls");  printf("请输入你想要查询的学生的学号");  scanf("%s", xh);//输入学号  fflush(stdin);//清空缓冲区  for (j = 0; j < count; j++)  {  if (strcmp(stu[j].num, xh) == 0)//找到该学号的学生信息  {  printf("姓名:%s\t\t", stu[j].name);//输出姓名  printf("性别:%s\t\t", stu[j].sex);//输出性别  printf("年龄:%d\t\t", stu[j].age);//输出年龄  printf("学号:%s\t\t", stu[j].num);//输出学号  printf("专业:%s\t\t", stu[j].major);//输出专业  printf("班级:%s\t\t", stu[j].classes);//输出班级  printf("数学成绩:%d\t\t", stu[j].math);//输出数学成绩  printf("英语成绩:%d\t\t", stu[j].english);//输出英语成绩 //出该学生的信息  k = 1;  }  }  if (k == 0)//没有找到该学号  {  printf("很抱歉,没有你所需要的学生信息\n");  } } void xingming(struct student stu[M])//自定义姓名查询函数 {  int n = 0;  int j, flag = 0;  char xm[25];  system("cls");  printf("请输入你想要查询的学生的姓名"); -11-  scanf("%s", xm);  fflush(stdin);  for (j = 0; j < count; j++)  {  if (strcmp(stu[j].name, xm) == 0)  {  printf("姓名:%s\t\t", stu[j].name);//输出姓名  printf("性别:%s\t\t", stu[j].sex);//输出性别  printf("年龄:%d\t\t", stu[j].age);//输出年龄  printf("学号:%s\t\t", stu[j].num);//输出学号  printf("专业:%s\t\t", stu[j].major);//输出专业  printf("班级:%s\t\t", stu[j].classes);//输出班级  printf("数学成绩:%d\t\t", stu[j].math);//输出数学成绩  printf("英语成绩:%d\t\t", stu[j].english);//输出英语成绩 //输出该学生的信息  n = 1;  }  }  if (n == 0)  {  printf("很抱歉,没有你所需要的学生信息\n");  } } void order(struct student stu[M])//自定义排序函数 {  int j, k, choice, max;  system("cls");  printf("请输入你想要进行排序的方式\n");  printf("1、数学 2、英语\n");  scanf("%d", &choice); //输入选项  switch (choice)  {  case 1:  for (j = 0; j < count; j++)  {  max = j;  for (k = j + 1; k < count; k++)  if (stu[k].math > stu[max].math)  {  t = stu[k];  stu[k] = stu[max];  stu[max] = t;  }  };  break; //按数学成绩排序  case 2:  for (j = 0; j < count; j++)  {  max = j;  for (k = j + 1; k < count; k++)  if (stu[k].english > stu[max].english)  {  t = stu[k];  stu[k] = stu[max];  stu[max] = t;  }  };  break; //按英语成绩排序  default:  printf("无效的选择!请重新输入!\n");  break;  }  if (choice >= 1 && choice <= 5)  printf("排序成功!!!"); } void delete_s(struct student stu[M])//自定义删除函数(按学号删除)  {  int j, index = 0, k = count;  char xh[25];  system("cls");  if (count == 0)//判断学生数量是否为 0   {  printf("当前已存学生信息为 0 个,无法删除!!!\n");  return;  }  else  {  printf("请输入你想要删除的同学学号\n");  scanf("%s", xh);//输入删除学生的学号  fflush(stdin); //清空缓冲区  for (j = 0; j < count; j++)  {  if (strcmp(stu[j].num, xh) == 0) //寻找该学生  {  for (j = index; j < count; j++)  stu[j] = stu[j + 1];  count--;  if (count < k) //判断是否删除成功  printf("你已经删除成功\n");  }  index++;  }  if (j == count) //判断是否有该学生的信息  printf("抱歉!!!没有你所需要删除的学生信息!*_*!\n");  } } void modify(struct student stu[M])//自定义修改函数 {  int j, flag = 0, course;  int i = 0;  char xh[25];  system("cls");  if (count == 0) //判断是否有学生信息  {  printf("当前已存学生信息为 0 个,无法修改!!!\n");  return;  }  else  {  printf("请输入你想要修改的同学学号\n"); -14-  scanf("%s", &xh); //输入要修改学生的学号  fflush(stdin);  for (j = 0; j < count; j++)  {  if (strcmp(stu[j].num, xh) == 0)  {  i = 1; printf("你确定要修改学生的信息吗?如果不确定的话,请关掉本程序吧!\n");  printf("选择课程: 1、数学 2、英语 3、跳过\n");  scanf("%d", &course); //选择要修改的一部分学生信息  switch (course)  {  case 1:printf("请输入你想要修改后的学生成绩\n");  scanf("%d", &stu[j].math); break; //修改数学成绩  case 2:printf("请输入你想要修改后的学生成绩\n");  scanf("%d", &stu[j].english); break;//修改英语成绩  case 3:break;  default:printf("无效的选择!请重新输入!\n"); break;  }  printf("选择信息: 1、学号 2、性别 3、年龄 4、专业 5、班级 6、跳过\n");  scanf("%d", &course); //选择要修改的一部分学生信息   switch (course)  {  case 1:scanf("%s", stu[j].num); break;//修改学号  case 2:printf("请输入修改后的信息:"); scanf("%s",  stu[j].name); break;//修改性别  case 3:printf("请输入修改后的信息:"); scanf("%d",  &stu[j].age); break;//修改年龄  case 4:printf("请输入修改后的信息:"); scanf("%s",  stu[j].major); break;//修改专业  case 5:printf("请输入修改后的信息:"); scanf("%s",  &stu[j].classes); break;//修改班级  case 6:break;  default:printf("无效的选择!请重新输入!\n"); break;  }  }   }  }  if (i == 0) printf("无该学生信息!!\n");  return; } void filewrite(struct student stu[M])//自定义写入文件函数 {  char f;  int j = 0;  system("cls");  printf("请选择是否要存入已输入的学生信息:'y'还是'n'???\n");  scanf("%c", &f); //判断是否写入文件  fflush(stdin); //清空缓冲区  while (f != 'y' && f != 'n')  {  if (f != 'y' && f != 'n')  printf("输入错误,请重新输入\n");  printf("以下操作将会覆盖已存储的数据,确定请输入'y'或'n'?\n");  scanf("%c", &f);  fflush(stdin);  }  if (f == 'y')  {  if ((fp = fopen(path, "wb")) == NULL)  {  printf("无法打开文件\n");  exit(0);  }  for (j = 0; j < count; j++)  {  fwrite(&stu[j], sizeof(struct student), 1, fp); //将学生信息写入文件  }  fclose(fp);  if (count == 0)//判断学生数目是否为 0   printf("没有文件,无法保存\n");  else  printf("数据存储完毕\n");  system("pause");  }  else  return; } void fileread(struct student stu[M])//自定义读取文件信息函数 {  char f;  int j = 0;  system("cls");//?????????  printf("请选择是否要读取已输入的学生信息:'y'还是'n'?\n");  scanf("%c", &f); //判断是否从文件中读取学生信息  fflush(stdin); //清空缓冲区  if (f == 'y')  {  if ((fp = fopen(path, "rb")) == NULL)  {  printf("cannot open this file\n");  exit(0);  }  fread(&stu[j], sizeof(struct student), 1, fp); //从文件中读取学生信息  count = 0;  count++;  j++;  while (fread(&stu[j], sizeof(struct student), 1, fp))  {  j++;  count++;  }  fclose(fp);  printf("数据读取完毕!\n");  system("pause");  }   else  return; } 运行结果

本次登录设置的密码是123,当然你也可以自己修改密码
后面的需要执行哪项功能,就输入对应数字就可以!



课程设计 系统 课程 C语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号