基于C语言的学生信息管理系统

Change

发布日期: 2018-10-26 11:14:51 浏览量: 5463
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一 需求分析

利用c语言的链表或结构体数组实现学生信息的管理,编写有登录界面的学生信息管理系统,可以实现学生信息的录入,显示,删除,排序,统计,文件读写等功能。

二 概要设计

系统功能模块结构如下图所示:

  • 管理员登录模块:该模块有三个功能,登陆、修改密码、退出

  • 录入模块:录入学生信息,学生信息有学号,姓名,班级,性别,地址,电话。每输入完一项后,按回车键确认

  • 显示模块:将用户确认保存的学生信息全部打印在屏幕上,按任意键返回

  • 查找模块:用户选择要查找的方式如按姓名查找,按学号查找等,查找到结果后将数据打印在屏幕上,若没有则提示用户没有该信息,按任意键返回

  • 修改模块:提示用户输入要修改的学生姓名或学号,查找到结果后将查找到数据打印在屏幕上,若没有则提示用户没有该信息,按任意键返回

  • 删除模块:提示用户输入要删除的学生姓名或学号,将要删除的学生信息打印在屏幕上,提示用户是否要删除该信息,用户输入“删除”则删除该数据

  • 排序模块: 用户选择要排序的方式如按姓氏排序,按学号排序等,将排序之后的结果打印在屏幕上

  • 统计模块:将统计分析之后的数据如男生人数、女生人数、各班人数、各地人数等打印在屏幕上

  • 写入文件:将链表中的数据写入文件中

  • 文件提取:将文件中的数据读出并放入链表中

三 详细设计

3.1 功能函数调用关系

如下图所示:

3.2 各功能函数数据流程

登录:

主菜单:

信息输入:

信息输出:

删除:

查询:

排序:

四 程序实现

主菜单

  1. while(choice!=0)
  2. {
  3. p=1;
  4. system("cls");
  5. printf("\n\n\t\t--------------------------------------------------------\n");
  6. printf("\t\t| 主菜单 |\n");
  7. printf("\t\t--------------------------------------------------------\n");
  8. printf("\t\t| |\n");
  9. printf("\t\t| 1.录入 |\n");
  10. printf("\t\t| 2.显示 |\n");
  11. printf("\t\t| 3.查找 |\n");
  12. printf("\t\t| 4.修改 |\n");
  13. printf("\t\t| 5.删除 |\n");
  14. printf("\t\t| 6.排序 |\n");
  15. printf("\t\t| 7.统计 |\n");
  16. printf("\t\t| 8.保存信息 |\n");
  17. printf("\t\t| 9.文件提取 |\n");
  18. printf("\t\t| 0.退出 |\n");
  19. printf("\t\t--------------------------------------------------------\n");
  20. printf("\t\t| |\n");
  21. printf("\t\t--------------------------------------------------------\n");
  22. while(p!=13)
  23. {
  24. gotoxy(i,j);
  25. printf(">>");
  26. p=getch();
  27. if(p==72&&j>6)
  28. {
  29. gotoxy(i,j);
  30. printf(" ");
  31. j--;
  32. choice--;
  33. }
  34. if(p==80&&j<=14)
  35. {
  36. gotoxy(i,j);
  37. printf(" ");
  38. j++;
  39. choice++;
  40. }
  41. if(j==15&&p==13)
  42. choice=0;
  43. if(p==27)
  44. login();
  45. }
  46. switch(choice)
  47. {
  48. case 1:
  49. system("cls");
  50. input();
  51. break;
  52. case 2:
  53. system("cls");
  54. output();
  55. break;
  56. case 3:
  57. system("cls");
  58. search_menu();
  59. break;
  60. case 4:
  61. system("cls");
  62. edit();
  63. break;
  64. case 5:
  65. system("cls");
  66. Delete();
  67. break;
  68. case 6:
  69. system("cls");
  70. reorder_menu();
  71. break;
  72. case 7:
  73. system("cls");
  74. count();
  75. break;
  76. case 8:
  77. system("cls");
  78. write();
  79. break;
  80. case 9:
  81. system("cls");
  82. read();
  83. break;
  84. case 0:
  85. gotoxy(18,17);
  86. login();
  87. }
  88. }

统计

  1. while(p!=NULL)
  2. {
  3. if(strcmp(p->sex,"男")==0)
  4. {
  5. i++;
  6. }
  7. else
  8. j++;
  9. p=p->next;
  10. }
  11. gotoxy(18,5);
  12. printf("男生%d人 女生%d人",i,j);
  13. while(m<6)
  14. {
  15. p=head->next;
  16. n=0;
  17. while(p!=NULL)
  18. {
  19. if(strcmp(p->clas,temp[m])==0)
  20. {
  21. n++;
  22. }
  23. p=p->next;
  24. }
  25. if(n!=0)
  26. {
  27. gotoxy(x,y);
  28. printf("%s班%d人",temp[m],n);
  29. x+=10;
  30. }
  31. m++;
  32. }
  33. x=18,y=7;
  34. while(m<8)
  35. {
  36. p=head->next;
  37. n=0;
  38. while(p!=NULL)
  39. {
  40. if(strcmp(p->ad,temp[m])==0)
  41. {
  42. n++;
  43. }
  44. p=p->next;
  45. }
  46. if(n!=0)
  47. {
  48. gotoxy(x,y);
  49. if(m==6)
  50. printf("陕西%d人",n);
  51. if(m==7)
  52. printf("河北%d人",n);
  53. x+=10;
  54. }
  55. m++;
  56. }
  57. getch();
  58. }

排序

  1. for(p=head->next;p!=NULL;p=p->next)
  2. {
  3. for(q=p->next;q!=NULL;q=q->next)
  4. {
  5. if(i==1)
  6. if(strcmp(p->name,q->name)>0)
  7. {
  8. strcpy(id,q->id);
  9. strcpy(q->id,p->id);
  10. strcpy(p->id,id);
  11. strcpy(name,q->name);
  12. strcpy(q->name,p->name);
  13. strcpy(p->name,name);
  14. strcpy(ad,q->ad);
  15. strcpy(q->ad,p->ad);
  16. strcpy(p->ad,ad);
  17. strcpy(tel,q->tel);
  18. strcpy(q->tel,p->tel);
  19. strcpy(p->tel,tel);
  20. strcpy(clas,q->clas);
  21. strcpy(q->clas,p->clas);
  22. strcpy(p->clas,clas);
  23. strcpy(sex,q->sex);
  24. strcpy(q->sex,p->sex);
  25. strcpy(p->sex,sex);
  26. }
  27. if(i==2)
  28. if(strcmp(p->id,q->id)>0)
  29. {
  30. strcpy(id,q->id);
  31. strcpy(q->id,p->id);
  32. strcpy(p->id,id);
  33. strcpy(name,q->name);
  34. strcpy(q->name,p->name);
  35. strcpy(p->name,name);
  36. strcpy(ad,q->ad);
  37. strcpy(q->ad,p->ad);
  38. strcpy(p->ad,ad);
  39. strcpy(tel,q->tel);
  40. strcpy(q->tel,p->tel);
  41. strcpy(p->tel,tel);
  42. strcpy(clas,q->clas);
  43. strcpy(q->clas,p->clas);
  44. strcpy(p->clas,clas);
  45. strcpy(sex,q->sex);
  46. strcpy(q->sex,p->sex);
  47. strcpy(p->sex,sex);
  48. }
  49. if(i==3)
  50. if(strcmp(p->clas,q->clas)>0)
  51. {
  52. strcpy(id,q->id);
  53. strcpy(q->id,p->id);
  54. strcpy(p->id,id);
  55. strcpy(name,q->name);
  56. strcpy(q->name,p->name);
  57. strcpy(p->name,name);
  58. strcpy(ad,q->ad);
  59. strcpy(q->ad,p->ad);
  60. strcpy(p->ad,ad);
  61. strcpy(tel,q->tel);
  62. strcpy(q->tel,p->tel);
  63. strcpy(p->tel,tel);
  64. strcpy(clas,q->clas);
  65. strcpy(q->clas,p->clas);
  66. strcpy(p->clas,clas);
  67. strcpy(sex,q->sex);
  68. strcpy(q->sex,p->sex);
  69. strcpy(p->sex,sex);
  70. }
  71. }
  72. }

删除

  1. printf("输入要删除的姓名或学号:");
  2. scanf("%s",temp);
  3. while(p!=NULL)
  4. {
  5. q=p;
  6. p=p->next;
  7. if(strcmp(temp,p->name)==0||strcmp(temp,p->id)==0)
  8. {
  9. gotoxy(18,6);
  10. printf("学号\t姓名\t性别\t班级\t住址\t电话");
  11. gotoxy(18,7);
  12. printf("%s\t",p->id);
  13. printf("%s\t",p->name);
  14. printf("%s\t",p->sex);
  15. printf("%s\t",p->clas);
  16. printf("%s\t",p->ad);
  17. printf("%s\n",p->tel);
  18. count++;
  19. break;
  20. }
  21. }
  22. if(head->next==NULL||count==0)
  23. {
  24. gotoxy(18,17);
  25. printf("没有该信息!按任意键返回主菜单!");
  26. getch();
  27. return;
  28. }
  29. else
  30. {
  31. gotoxy(18,17);
  32. printf("请确认删除(输入“删除”确认):");
  33. scanf("%s",f);
  34. if(strcmp(f,"删除")==0)
  35. {
  36. _count--;
  37. q->next=p->next;
  38. free(p);
  39. }
  40. gotoxy(18,17);
  41. printf("删除成功!按任意键返回主菜单! ");
  42. getch();
  43. return;
  44. }

四 运行测试

主界面

登录界面

主菜单

信息录入

信息显示

查找

修改

排序

统计

文件写入

文件提取

上传的附件 cloud_download 基于C语言的学生信息管理系统.zip ( 75.84kb, 658次下载 )
error_outline 下载需要6点积分

keyboard_arrow_left上一篇 : 基于python实现的Bilibili弹幕检索系统 C语言大作业学生成绩管理系统 : 下一篇keyboard_arrow_right



Change
2018-10-26 11:15:48
学生信息管理;录入、查找、修改、删除、排序、统计;C语言课设
牛奶不热哦
2021-01-09 14:27:37
不错奥 下载来试试

发送私信

如果哪天我们真的久别重逢,我希望你别来无恙

13
文章数
14
评论数
最近文章
eject