当前位置:   article > 正文

宿舍管理系统_csdn宿舍管理系统

csdn宿舍管理系统

利用C语言,数据结构实现简单的宿舍管理系统,可以录入学生信息,对学生信息进行排序,查询。

最简单的宿舍管理系统,觉得还行就点个赞吧!

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define N 10
  5. //定义管理人员信息结构体
  6. typedef struct{
  7. int number;//定义学号
  8. char name[20];//定义姓名
  9. int room;//定义宿舍号
  10. }Student;
  11. //定义存储顺序表
  12. typedef struct {
  13. Student s[20];
  14. int length;//定义长度
  15. }SqList;
  16. void CreatStudent(SqList *L,int n)//输入学生信息
  17. {
  18. //长度初始值为零
  19. for(int i=1;i<=n;i++)//for 循环
  20. {
  21. printf("输入第%d个管理人员信息:",i);//输入
  22. printf ("\n学号:");
  23. scanf("%d",&L->s[i].number);
  24. printf ("姓名:");
  25. scanf("%s",&L->s[i].name);
  26. printf ("宿舍号:");
  27. scanf("%d",&L->s[i].room);
  28. }
  29. L->length=n;
  30. FILE *fp;//定义一个指向文件的指针变量fp
  31. fp=fopen("room.txt","w+");//将fopen函数的返回值赋给指针变量fp,w可读可写 (fp指向了room文件)
  32. for(int i=1;i<=L->length;i++)
  33. {
  34. fprintf(fp,"%d %s %d\n",L->s[i].number,L->s[i].name,L->s[i].room);//在文件中输入学号,姓名,房号
  35. }
  36. printf("\n添加成功!");
  37. fclose(fp);//关闭文件
  38. }
  39. void output(SqList *L) //输出结果
  40. {
  41. int i;
  42. printf("\n=========================\n学号\t姓名\t宿舍号\n");
  43. for(i = 1; i<=L->length; i++)
  44. printf("%d\t%s\t%d\n",L->s[i].number, L->s[i].name,L->s[i].room);
  45. printf("==========================\n");
  46. }
  47. void NumberSort(SqList *L)//按学号进行排序
  48. {
  49. int i;//定义整形变量并给予i赋值
  50. FILE *fp;//打开文件
  51. int m,flag; //学号冒泡排序
  52. m=L->length-1;
  53. flag=1;
  54. while((m>0)&&(flag==1))
  55. {
  56. flag=0;
  57. for(i=1;i<=m;i++)
  58. if(L->s[i].number>L->s[i+1].number)
  59. {
  60. flag=1;
  61. L->s[0]=L->s[i];
  62. L->s[i]=L->s[i+1];
  63. L->s[i+1]=L->s[0];
  64. }
  65. }
  66. printf("按学号排序后的结果为:\n");
  67. output(L);
  68. }
  69. void NameSort(SqList *L)//按姓名进行排序
  70. {
  71. int i=1,j;
  72. FILE *fp;
  73. int m,flag; //姓名冒泡排序 (从小到大排序)
  74. m=L->length-1;
  75. flag=1;
  76. while((m>0)&&(flag==1))
  77. {
  78. flag=0;
  79. for(i=j;j<=m;j++)
  80. if(strcmp(L->s[j-1].name,L->s[j].name)>=0)
  81. {
  82. flag=1;
  83. L->s[0]=L->s[j];
  84. L->s[j]=L->s[j+1];
  85. L->s[j+1]=L->s[0];
  86. }
  87. }
  88. printf("按姓名排序后的结果为:\n");
  89. output(L);
  90. }
  91. void RoomSort(SqList *L)//按宿舍号进行排序
  92. {
  93. int i=1;
  94. FILE *fp;
  95. int m,flag; //宿舍号冒泡排序
  96. m=L->length-1;
  97. flag=1;
  98. while((m>0)&&(flag==1))
  99. {
  100. flag=0;
  101. for(i=0;i<=m;i++)
  102. if(L->s[i].room>L->s[i+1].room)
  103. {
  104. flag=1;
  105. L->s[0]=L->s[i];L->s[i]=L->s[i+1];L->s[i+1]=L->s[0];
  106. }
  107. }
  108. printf("按宿舍号后的结果为:\n");
  109. output(L);
  110. }
  111. void NumberSearch(SqList *L)//按学号进行查询
  112. {
  113. int i=1,k;
  114. int num;
  115. FILE *fp;
  116. int flag=0;
  117. printf("输入要查询管理人员的学号:");
  118. scanf("%d",&num);
  119. if((fp=fopen("room.txt","w+"))!=NULL)
  120. {
  121. FILE *fp1;
  122. if((fp1=fopen("shi.txt","a"))!=NULL)//写文件,原内容上增加内容
  123. for(i=1;i<=L->length;i++)
  124. {
  125. if(L->s[i].number==num)
  126. {
  127. k=i;
  128. flag=1;
  129. }
  130. }
  131. if(flag==1)
  132. {
  133. printf("学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
  134. fprintf(fp1,"学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
  135. }
  136. fclose (fp1);
  137. }
  138. else
  139. printf("没有找到该学生,查询失败!");
  140. fclose (fp);
  141. }
  142. void NameSearch(SqList *L)//按姓名进行查询
  143. {
  144. int i=1,k,flag=0;
  145. char xingming[5];
  146. L->length=3;
  147. FILE *fp;
  148. printf("输入要查询学生的姓名:");
  149. scanf("%s",xingming);
  150. if((fp=fopen("room.txt","w+"))!=NULL)
  151. {
  152. FILE *fp1;
  153. if((fp1=fopen("shi.txt","a"))!=NULL)//写文件,原内容上增加内容
  154. for(i=1;i<=L->length;i++)
  155. {
  156. if(strcmp(L->s[i].name,xingming)==0)
  157. {
  158. k=i;
  159. //flag=1;
  160. }
  161. flag=1;
  162. }
  163. if(flag==0)
  164. printf("没有找到该学生,查询失败!");
  165. else
  166. printf("学号:%d\n姓名:%s\n房间号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
  167. fprintf(fp1,"学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
  168. fclose (fp1);
  169. }
  170. fclose(fp);
  171. }
  172. void RoomSearch(SqList *L)//按宿舍号进行查询
  173. {
  174. int i=1,k;int num;
  175. //L.length=3;
  176. FILE *fp;
  177. int flag=0;
  178. //m=L.length-1;
  179. //flag=1;
  180. printf("输入要查询学生的宿舍号:");
  181. scanf("%d",&num);
  182. if((fp=fopen("room.txt","w+"))!=NULL)
  183. {
  184. FILE *fp1;
  185. if((fp1=fopen("shi.txt","a"))!=NULL)//写文件,原内容上增加内容
  186. for(i=1;i<=L->length;i++)//
  187. {
  188. if(L->s[i].room==num)
  189. {
  190. k=i;
  191. flag=1;
  192. }
  193. }
  194. if(flag==1)//0
  195. printf("学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
  196. fprintf(fp1,"学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
  197. fclose (fp1);
  198. }
  199. else
  200. printf("没有找到该学生,查询失败!");
  201. fclose (fp);
  202. }
  203. int main()
  204. {
  205. SqList L;
  206. int n,option;
  207. while(1)
  208. {
  209. printf("****************************************\n");
  210. printf("1.创建 2.按学号排序\n ");
  211. printf("3.按姓名排序 4.按宿舍号排序\n");
  212. printf("5.按学号查询 6.按姓名查询\n");
  213. printf("7.按宿舍号查询 8.退出\n");
  214. printf("*****************************************\n");
  215. printf("请选择输入的数字:");
  216. scanf("%d",&option);
  217. switch(option)
  218. {
  219. case 1:
  220. printf("请输入学生个数:");
  221. scanf("%d",&n);
  222. CreatStudent(&L,n);
  223. output(&L);
  224. break;
  225. case 2:
  226. NumberSort(&L);
  227. break;
  228. case 3:
  229. NameSort(&L);
  230. break;
  231. case 4:
  232. RoomSort(&L);
  233. break;
  234. case 5:
  235. NumberSearch(&L);
  236. break;
  237. case 6:
  238. NameSearch(&L);
  239. break;
  240. case 7:
  241. RoomSearch(&L);
  242. break;
  243. case 8:
  244. exit(0);
  245. break;
  246. }
  247. }
  248. return 0;
  249. }

测试数据:

1、新建

2、排序

 

3、查询 

 

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

闽ICP备14008679号