当前位置:   article > 正文

学生信息管理系统(C语言)_编写程序实现学生管理要求:学生信息包括:姓名院系学号10门成绩.系统功能(函数

编写程序实现学生管理要求:学生信息包括:姓名院系学号10门成绩.系统功能(函数

下面是以前的一个作业,c语言做一个学生信息管理系统

其实一个软件或者系统,都是各种功能组合在一起形成的,将对象的数据以及功能函数写好,就能形成一个简单的系统了。

主函数以及各个功能函数以及学生类:

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>//需要用到strcmp函数
  4. #define LEN 15//姓名和学号的最大字符数
  5. #define N 50//最大学生人数
  6. int n = 0, t = 1;//n代表当前学生人数,t用来控制整个程序的执行,以及程序的退出;
  7. //函数声明
  8. void menu();//主菜单函数
  9. void help();//使用帮助
  10. void increase();//增加学生信息
  11. void seek();//查找学生信息
  12. void de();//删除学生信息
  13. void save();//保存文件
  14. void present();//显示当前信息
  15. void modify();//修改学生信息
  16. void flush();//刷新学生成绩
  17. void tuichu();//退出函数
  18. struct student
  19. {
  20. char StuID[LEN];//学生学号
  21. char Stuname[LEN];
  22. int Stuage;
  23. char Stusex;
  24. float score[3]; //各科成绩
  25. }stu[N];
  26. int main()
  27. {
  28. int num;//num是菜单选项
  29. while (t)//t是全局变量,用tuichu函数来控制循环是否继续
  30. {
  31. menu();//输出主菜单界面
  32. printf("您好,请输入菜单编号:");
  33. scanf("%d", &num);
  34. switch (num)
  35. {
  36. case 1: help(); break;
  37. case 2: increase(); break;
  38. case 3: seek(); break;
  39. case 4: de(); break;
  40. case 5: save(); break;
  41. case 6: present(); break;
  42. case 7: modify(); break;
  43. case 8: flush(); break;
  44. case 9: tuichu(); break;
  45. default:printf("输入有误,请重新输入!");
  46. }
  47. system("cls");
  48. }
  49. system("pause");
  50. return 0;
  51. }

主菜单函数 :

  1. void menu()
  2. {
  3. printf("\n\n");
  4. printf("*****************************************************\n");
  5. printf("*----------------------duoduo------------------------\n");
  6. printf("* 学生信息管理系统 *\n");
  7. printf("*****************************************************\n");
  8. printf("********************系统功能菜单*********************\n");
  9. printf("---------------------- --------------------------\n");
  10. printf("*****************************************************\n");
  11. printf("** 1、使用帮助 * 2、增加学生信息 **\n");
  12. printf("*****************************************************\n");
  13. printf("** 3、查询学生信息 * 4、删除学生信息 **\n");
  14. printf("*****************************************************\n");
  15. printf("** 5、保存当前信息 * 6、显示当前信息 **\n");
  16. printf("*****************************************************\n");
  17. printf("** 7、修改学生信息 * 8、刷新学生信息 **\n");
  18. printf("*****************************************************\n");
  19. printf("** 9、退出系统 * **\n");
  20. printf("************************* \n");
  21. printf("---------------------- --------------------------\n");
  22. }

运行结果:

使用帮助:

  1. void help()
  2. {
  3. printf("\n这是一个学生信息管理系统,为了帮助您更快的了解使用它,请先仔细阅读以下注意事项:\n");
  4. printf("\n 注意事项: \n ");
  5. printf("\n 1、请根据提示进行操作!\n");
  6. printf("\n 2、初次使用请先选择增加学生信息!\n");
  7. printf("\n 3、修改或者增加学生信息后切记保存!\n");
  8. printf("\n 4、如果数据有错误,请先修改再保存!\n");
  9. printf("\n 5、若您之前使用过,下次进入系统请先刷新学生信息!\n");
  10. printf("\n 6、在添加学生时,用两个字符代表不同的性别,比如男用‘M’代替,女用‘W’代替!\n");
  11. printf("\n 7、保存或者刷新时,输入的文件名后缀请使用.txt,比如: stu.txt,系统会在源程序\n");
  12. printf("\n “学生管理系统.exe”的相同目录建立一个.txt文件来保存学生信息,您可以查看\n");
  13. printf("\n 该文件,但非专业人员不要轻易改动,否则会造成刷新数据异常或刷新失败!\n");
  14. printf("\n 8、学生信息包括:姓名、学号、性别、年龄、C语言成绩、高数成绩、英语成绩等!\n");
  15. printf("\n 9、使用遇到任何问题请与我们联系,邮箱:ouyang_na_na@163.com\n");
  16. printf("\n 10、最后感谢您的使用!\n");
  17. system("pause");
  18. }

增加学生信息函数:

  1. void increase()
  2. {
  3. int i = n, j, flag, m = 0;//i代表增加学生信息过程中任意时刻的学生人数
  4. printf("\n请输入待增加的学生人数:\n");
  5. scanf("%d", &m);
  6. if (m > 0) {
  7. do {
  8. flag = 1;
  9. while (flag)
  10. {
  11. flag = 0;
  12. printf("请输入第%d位学生的学号:\n", i + 1);//第几位学生从1开始计数,而stu[]从零开始,需要加1
  13. scanf("%s", stu[i].StuID);
  14. //判断学号是否重复
  15. for (j = 0; j < i; j++) {
  16. if (strcmp(stu[i].StuID, stu[j].StuID) == 0) {
  17. printf("该学号已经存在,请重新输入!\n");
  18. flag = 1;
  19. break;
  20. }
  21. }
  22. }
  23. printf("请输入第%d位学生姓名:\n", i + 1);
  24. scanf("%s", stu[i].Stuname);
  25. printf("请输入第%d位学生年龄:\n", i + 1);
  26. scanf("%d", &stu[i].Stuage);
  27. getchar();//处理上面输入的换行符,不然系统会把换行符当做一个字符赋值给性别
  28. printf("请输入第%d位学生性别:\n", i + 1);
  29. scanf("%c", &stu[i].Stusex);
  30. printf("请输入第%d位学生的C语言成绩:\n", i + 1);
  31. scanf("%f", &stu[i].score[0]);
  32. printf("请输入第%d位学生的高数成绩:\n", i + 1);
  33. scanf("%f", &stu[i].score[1]);
  34. printf("请输入第%d位学生的大学英语成绩:\n", i + 1);
  35. scanf("%f", &stu[i].score[2]);
  36. i++;
  37. } while (i < n + m);//只要当前学生人数还没到达添加后的总人数,就得继续添加
  38. }
  39. n += m;// 添加完成,系统人数n的值也要增加
  40. printf("添加完成!!!\n");
  41. system("pause");
  42. }

查找学生信息函数:

  1. void seek()
  2. {
  3. int i, num, flag;
  4. char s1[LEN + 1];
  5. printf("*****************************\n");
  6. printf("**-------1.按学号查询------**\n");
  7. printf("**-------2.按姓名查询------**\n");
  8. printf("**-------3.退出本菜单------**\n");
  9. printf("*****************************\n");
  10. while (1)
  11. {
  12. flag = 0;
  13. printf("请输入子菜单:");
  14. scanf("%d", &num);
  15. switch (num)
  16. {
  17. case 1:
  18. printf("请输入需要查找学生的学号:\n");
  19. scanf("%s", s1);
  20. for (i = 0; i < n; i++)
  21. {
  22. if (strcmp(stu[i].StuID, s1) == 0)
  23. {
  24. flag = 1;
  25. printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
  26. printf("%s\t\t%s\t\t%c\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].StuID, stu[i].Stuname, stu[i].Stusex, stu[i].Stuage, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
  27. }
  28. }break;
  29. case 2:
  30. printf("请输入需要查找学生的姓名:\n");
  31. scanf("%s", s1);
  32. for (i = 0; i < n; i++)
  33. {
  34. if (strcmp(stu[i].Stuname, s1) == 0)
  35. {
  36. flag = 1;
  37. printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
  38. printf("%s\t\t%s\t\t%c\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].StuID, stu[i].Stuname, stu[i].Stusex, stu[i].Stuage, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
  39. }
  40. }break;
  41. case 3: return;
  42. default: printf("请在1--3之间输入\n");
  43. }
  44. if (flag == 0)
  45. printf("找不到该学生!\n请重新输入!");
  46. }
  47. }

 删除学生信息函数:

  1. void de()
  2. {
  3. int i, j, flag;
  4. char s1[LEN];
  5. printf("请输入需要删除的学生学号:\n");
  6. scanf("%s", s1);
  7. flag = 0;
  8. for (i = 0; i < n; i++)
  9. {
  10. if (strcmp(s1, stu[i].StuID) == 0)
  11. {
  12. flag = 1;
  13. for (j = i; j < n - 1; j++)
  14. {
  15. stu[j] = stu[j + 1];//直接把后面的学生都往前移动一位
  16. }
  17. }
  18. if (flag == 1) break;//说明已经找到了需要删除的学生,结束循环
  19. }
  20. if (0 == flag)
  21. {
  22. printf("该学号不存在!!!\n");
  23. }
  24. if (1 == flag)
  25. {
  26. printf("删除成功\n");
  27. n--;
  28. }
  29. system("pause");
  30. }

保存文件函数:

  1. void save()//把学生信息保存到文件
  2. {
  3. int i;
  4. FILE* fp;
  5. char filename[LEN + 1];
  6. printf("请输入要保存的文件名:\n");
  7. scanf("%s", filename);
  8. if ((fp = fopen(filename, "w")) == NULL)
  9. {
  10. printf("打开文件失败!\n");
  11. exit(0);
  12. }
  13. for (i = 0; i < n; i++)
  14. if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
  15. printf("保存失败!!\n");
  16. printf("保存成功!!!\n");
  17. fclose(fp);
  18. system("pause");
  19. }

 显示当前信息函数:

  1. void present()
  2. {
  3. int i;
  4. if (n == 0)
  5. {
  6. printf("您好,现在没有学生信息,请先增加学生信息或者刷新再来试试!\n");
  7. }
  8. else
  9. {
  10. printf("现在共有%d名学生:\n", n);
  11. printf("学号\t\t姓名\t\t性别\t\t年龄\t\tC语言\t\t高数\t\t英语\n");
  12. for (i = 0; i < n; i++)
  13. {
  14. printf("%s\t\t%s\t\t%c\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\n", stu[i].StuID, stu[i].Stuname, stu[i].Stusex, stu[i].Stuage, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
  15. }
  16. }
  17. system("pause");
  18. }

修改学生信息函数:

  1. void modify()
  2. {
  3. int i, flag;
  4. char ID[LEN], name[LEN], sex;
  5. int age;
  6. float score;
  7. printf("请输入需要修改的学生姓名:\n");
  8. getchar();
  9. gets(name);
  10. while (1)
  11. {
  12. flag = 0;
  13. for (i = 0; i < n; i++)
  14. {
  15. if (strcmp(name, stu[i].Stuname) == 0)
  16. {
  17. flag = 1;
  18. int num;//用于switch函数的子菜单
  19. printf("***************************************************\n");
  20. printf("*----1.修改学号-------- - -----2.修改性别-------*\n");
  21. printf("*----3.修改年龄-------- - -----4.修改C语言成绩--*\n");
  22. printf("*----5.修改高数成绩---- - -----6.修改英语成绩---*\n");
  23. printf("*-------------------7.退出本菜单------------------*\n");
  24. printf("***************************************************\n\n");
  25. printf("请输入子菜单:");
  26. scanf("%d", &num);
  27. switch (num)
  28. {
  29. case 1:
  30. printf("请输入新的学号:\n");
  31. getchar();
  32. gets(ID);
  33. strcpy(stu[i].StuID, ID); break;
  34. case 2:
  35. getchar();
  36. printf("请输入新的性别:\n");
  37. scanf("%c", &sex);
  38. stu[i].Stusex = sex; break;
  39. case 3:
  40. printf("请输入新的年龄:\n");
  41. scanf("%d", &age);
  42. stu[i].Stuage = age; break;
  43. case 4:
  44. printf("请输入新的C语言成绩:\n");
  45. scanf("%f", &score);
  46. stu[i].score[0] = score; break;
  47. case 5:
  48. printf("请输入新的高数成绩:\n");
  49. scanf("%f", &score);
  50. stu[i].score[1] = score; break;
  51. case 6:
  52. printf("请输入新的英语成绩:\n");
  53. scanf("%f", &score);
  54. stu[i].score[2] = score; break;
  55. case 7:
  56. return; break;
  57. default:
  58. printf("请在1--7之间选择!\n");
  59. }
  60. if (num > 0 && num < 7)
  61. printf("修改成功,记得保存哟!!!\n");
  62. break;//找到学生,结束循环;
  63. }
  64. }
  65. if (flag == 0)
  66. {
  67. printf("没有找到该学生,请重新输入需要修改信息的学生姓名:\n");
  68. gets(name);
  69. }
  70. }
  71. system("pause");
  72. }

 刷新学生成绩函数:

  1. void flush()
  2. {
  3. int i, k = 0;//k代表刷新过程中学生人数
  4. FILE* fp;
  5. char filename[LEN + 1];
  6. printf("请输入需要刷新的文件名:\n");
  7. getchar();
  8. gets(filename);
  9. if ((fp = fopen(filename, "r")) == NULL)//打开文件
  10. {
  11. printf("打开文件失败!\n");
  12. exit(0);
  13. }
  14. for (i = 0; i < N; i++)//N是最大的学生人数,可在程序开头进行更改
  15. {
  16. if (fread(&stu[i], sizeof(struct student), 1, fp) == 1)
  17. k++;//记录学生人数
  18. }
  19. n = k;// 把k的值给n
  20. if (k == 0)
  21. printf("刷新失败!!!\n");
  22. else
  23. printf("刷新成功!!!\n");
  24. fclose(fp);
  25. system("pause");
  26. }

退出函数:

  1. void tuichu()
  2. {
  3. int h;//控制是否确认退出
  4. printf("即将退出,确认请按1,取消请按0\n");
  5. scanf("%d", &h);
  6. if (h == 1)
  7. {
  8. t = 0;//t是main函数中while函数是否继续执行的控制条件,是一个全局变量,程序开头已经定义并且赋值位 1
  9. printf("成功退出,感谢使用!\n");
  10. }
  11. if (h == 0)
  12. {
  13. printf("退出已取消!\n");
  14. system("pause");
  15. }
  16. }

做个记录吧,记录以前第一次写出这比较完整的代码,记录一下以前心情。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/607900
推荐阅读
相关标签
  

闽ICP备14008679号