C语言链表实现简单的学生成绩录入系统

拼搏现实的明天。 2023-06-25 04:39 77阅读 0赞

代码如下

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5. #include <stdlib.h>
  6. #define format "%d\n%s\n%f\n%f\n%f\n"
  7. #define len sizeof(stu)
  8. typedef struct student{
  9. long num;
  10. float score;
  11. struct student *next;
  12. }stu;
  13. int n;
  14. int Tips()
  15. {
  16. int p;
  17. printf("<----------请选择需要的功能---------->\n");
  18. printf("<----------1.输入一个新的链表-------->\n");
  19. printf("<----------2.删除一个新的纪录-------->\n");
  20. printf("<----------3.插入一个新的记录-------->\n");
  21. printf("<----------4.显示全部学生成绩-------->\n");
  22. printf("<----------0.退出------------------->\n");
  23. scanf("%d",&p);
  24. return p;
  25. }
  26. //创建学生信息
  27. stu * creat()
  28. {
  29. stu *p1,*p2,*head;int i,t,k=1;
  30. n=0;
  31. printf("输入学生信息的个数\n");
  32. scanf("%d",&t);
  33. head=0;
  34. for(i=0;i<t;i++)
  35. {
  36. p1=(stu *)malloc(len);
  37. printf("输入第%d个学生的信息\n",k++);
  38. printf("学号:");
  39. scanf("%ld",&p1->num);
  40. printf("成绩:");
  41. scanf("%f",&p1->score);
  42. n=n+1;
  43. if(n==1)
  44. head=p1;
  45. else
  46. p2->next=p1;
  47. p2=p1;
  48. }
  49. p2->next=0;
  50. return head;
  51. }
  52. //删除学生信息
  53. stu * del(stu * head,long num)
  54. {
  55. stu *p1,*p2;
  56. if(head==0)
  57. printf("表空!\n");
  58. else
  59. {
  60. p1=head;
  61. while(p1->num!=num && p1->next!=0)
  62. {
  63. p2=p1;p1=p1->next;
  64. }
  65. if(p1->num==num)
  66. {
  67. if(p1==head)
  68. {
  69. head=p1->next;
  70. }
  71. else
  72. {
  73. p2->next=p1->next;
  74. }
  75. printf("删除学号:%ld成功\n",num);
  76. n=n-1;
  77. }
  78. else
  79. printf("没有%ld这个学号!\n",num);
  80. }
  81. return head;
  82. }
  83. //插入学生信息
  84. stu *insert(stu * head, stu * stud)
  85. {
  86. stu *p1,*p2,*p0;
  87. p0=stud;p1=head;
  88. if(head==0)
  89. {
  90. head=p0;stud->next=0;
  91. }
  92. else
  93. {
  94. while(p1->num<p0->num && p1->next!=0)
  95. {
  96. p2=p1;p1=p1->next;
  97. }
  98. if(p1->num>=p0->num)
  99. {
  100. if(p1==head)
  101. {
  102. head=p0;
  103. p0->next=p1;
  104. }
  105. else
  106. {
  107. p2->next=p0;
  108. p0->next=p1;
  109. }
  110. }
  111. else
  112. {
  113. p1->next=p0,p0->next=0;
  114. }
  115. }
  116. n=n+1;
  117. return head;
  118. }
  119. //打印学生信息
  120. void print(stu * head)
  121. {
  122. stu * p;
  123. printf("此时的%d个学生信息是:\n",n);
  124. p=head;
  125. if(head!=0)
  126. {
  127. while(p!=0)
  128. {
  129. printf("学号:%-10ld成绩:%f\n",p->num,p->score);
  130. p=p->next;
  131. }
  132. }
  133. }
  134. //主程序执行
  135. int main()
  136. {
  137. stu * head=0,*stud;
  138. int m;
  139. long del_num;
  140. int i=1;
  141. while(i>0)
  142. {
  143. system("cls");
  144. i=Tips();
  145. switch(i)
  146. {
  147. case 1:
  148. { system("cls");
  149. printf("开始输入学生信息:\n");
  150. head=creat();
  151. system("cls");
  152. print(head);
  153. printf("请输入0返回\n");
  154. scanf("%d",&m);
  155. while(m!=0)
  156. {
  157. printf("请输入0返回\n");
  158. scanf("%d",&m);
  159. }
  160. break;
  161. }
  162. case 2:
  163. {
  164. system("cls");
  165. printf("输入要删除的学号:");
  166. scanf("%ld",&del_num);
  167. head=del(head,del_num);
  168. print(head);
  169. printf("请输入0返回\n");
  170. scanf("%d",&m);
  171. while(m!=0)
  172. {
  173. printf("请输入0返回\n");
  174. scanf("%d",&m);
  175. }
  176. break;
  177. }
  178. case 3:
  179. {
  180. system("cls");
  181. stud=(stu *)malloc(len);
  182. printf("输入要增加的学生学号:");
  183. scanf("%ld",&stud->num);
  184. printf("输入要增加的学生成绩:");
  185. scanf("%f",&stud->score);
  186. head=insert(head,stud);
  187. print(head);
  188. printf("请输入0返回\n");
  189. scanf("%d",&m);
  190. while(m!=0)
  191. {
  192. printf("请输入0返回\n");
  193. scanf("%d",&m);
  194. }
  195. break;
  196. }
  197. case 4:
  198. {
  199. system("cls");
  200. print(head);
  201. printf("请输入0返回\n");
  202. scanf("%d",&m);
  203. while(m!=0)
  204. {
  205. printf("请输入0返回\n");
  206. scanf("%d",&m);
  207. }
  208. break;
  209. }
  210. }
  211. }
  212. }

我是呵呵哒!

一个喜欢计算机的程序猿

发表评论

表情:
评论列表 (有 0 条评论,77人围观)

还没有评论,来说两句吧...

相关阅读