1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct student
  6. {
  7. int id;
  8. char name[];
  9. int age;
  10. char sex;
  11. char birthday[];
  12. char address[];
  13. char phone[];
  14. char email[];
  15. struct student *next;
  16. }student;
  17.  
  18. student *head = NULL;
  19. int length;
  20. void create()
  21. {
  22. student *p1,*p2;
  23. length = ;
  24. p1 = (student *)malloc(sizeof(student));
  25. p1->id = -;
  26. if(head == NULL)
  27. {
  28. head = p1;
  29. }
  30. printf("请输入学生的学号、姓名、年龄、性别、出生年月、地址、电话、电子邮箱:\n");
  31. while()
  32. {
  33. p2 = (student *)malloc(sizeof(student));
  34. scanf("%d %s %d %c %s %s %s %s",&p2->id,p2->name,&p2->age,&p2->sex,&p2->birthday,&p2->address,p2->phone,p2->email);
  35. if(p2->id == )
  36. {
  37. printf("链表创建完成!\n");
  38. break;
  39. }
  40. length ++;
  41. p1->next = p2;
  42. p2->next = NULL;
  43. p1 = p1->next;
  44. }
  45. return ;
  46. }
  47.  
  48. void LoadStudentInFromFile()
  49. {
  50. student *p,*q;
  51. int c;
  52. FILE* f;
  53. f = fopen("input.txt","rb");
  54. if(f == NULL)
  55. {
  56. return ;
  57. }
  58. fseek(f,,SEEK_SET);
  59. p = (student *)malloc(sizeof(student));
  60. p->next = NULL;
  61. head = p;
  62. while(!feof(f))
  63. {
  64. c = fgetc(f);
  65. if(c != -)
  66. {
  67. fseek(f,-,SEEK_CUR);
  68. }
  69. else
  70. {
  71. return ;
  72. }
  73. q = (student *)malloc(sizeof(student));
  74. fscanf(f,"%d",&q->id);
  75. fscanf(f,"%s",q->name);
  76. fscanf(f,"%d",&q->age);
  77. fscanf(f,"%c",&q->sex);
  78. fscanf(f,"%s",q->birthday);
  79. fscanf(f,"%s",q->address);
  80. fscanf(f,"%s",q->phone);
  81. fscanf(f,"%s",q->email);
  82. q->next = NULL;
  83. p->next = q;
  84. p = p->next;
  85. length ++;//链表长度
  86. }
  87. }
  88.  
  89. void ModifyStudentInfo()
  90. {
  91. student *p = head->next;
  92. int num;
  93. printf("请输入要修改的学生的学号:");
  94. scanf("%d",&num);
  95. while(p != NULL)
  96. {
  97. if(p->id == num)
  98. {
  99. printf("修改前,学号为%d的学生信息如下:\n",num);
  100. printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
  101. printf("请输入学生的新电话:");
  102. getchar();
  103. gets(p->phone);
  104. printf("请输入学生的新地址:");
  105. gets(p->address);
  106. printf("修改后,学号为%d的学生信息如下:\n",num);
  107. printf("%d %s %d %c %s %s %s %s",&p->id,p->name,&p->age,p->sex,p->birthday,p->address,p->phone,p->email);
  108. return ;
  109. }
  110. p = p->next;
  111. }
  112. if(p == NULL)
  113. {
  114. printf("该学号不存在!\n");
  115. return ;
  116. }
  117. }
  118. void display()
  119. {
  120. student *p = head->next;
  121. printf("链表中所有的学生信息如下:\n");
  122. while(p != NULL)
  123. {
  124. printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
  125. printf("\n");
  126. p = p->next;
  127. }
  128. return ;
  129. }
  130.  
  131. void search()
  132. {
  133. int num,x;
  134. char name[];
  135. student *p = head->next;
  136. printf("请选择查询方式:\n");
  137. printf("1、按学号查询\t2、按姓名查询\n");
  138. scanf("%d",&x);
  139. if(x == )
  140. {
  141. printf("需要查找的学生学号为:");
  142. scanf("%d",num);
  143. while(p != NULL)
  144. {
  145. if(p->id == num)
  146. {
  147. printf("学号为%d的学生信息如下:\n",num);
  148. printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
  149. return ;
  150. }
  151. p = p->next;
  152. }
  153. if(p == NULL)
  154. {
  155. printf("无此记录!\n");
  156. }
  157. }
  158. else if(x == )
  159. {
  160. printf("需要查找的学生姓名为:");
  161. getchar();
  162. gets(name);
  163. p = head->next;
  164. while(p != NULL)
  165. {
  166. if(strcmp(p->name,name) == )
  167. {
  168. printf("学生姓名为%s的学生信息如下:\n",name);
  169. printf("%d %s %d %c %s %s %s %s",p->id,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->email);
  170. return ;
  171. }
  172. p = p->next;
  173. }
  174. if(p == NULL)
  175. {
  176. printf("无此记录!\n");
  177. }
  178. }
  179. return ;
  180. }
  181.  
  182. void insert()
  183. {
  184. int num,i;
  185. student *p,*q;
  186. p = head;
  187.  
  188. printf("请输入你要插入的位置:");
  189. scanf("%d",&num);
  190. if(num > length)
  191. {
  192. printf("找不到插入的位置\n");
  193. return ;
  194. }
  195. else
  196. {
  197. printf("请输入你要插入的学生的信息:\n");
  198. q = (student *)malloc(sizeof(student));
  199. scanf("%d %s %d %c %s %s %s %s",&q->id,q->name,&q->age,&q->sex,q->birthday,q->address,q->phone,q->email);
  200. while(p != NULL)
  201. {
  202. if(p->id == q->id)
  203. {
  204. printf("该学号已经存在,无法插入!\n");
  205. return ;
  206. }
  207. p = p->next;
  208. }
  209. p = head;
  210. for(i=; i<num; ++i)
  211. {
  212. p = p->next;
  213. }
  214. q->next = p->next;
  215. p->next = q;
  216. length ++;
  217. printf("插入成功!\n");
  218. return ;
  219. }
  220. }
  221.  
  222. void Delete()
  223. {
  224. int num;
  225. student *p,*q;
  226. q = head;
  227. p = head->next;
  228. printf("请输入要删除的学生的学号:\n");
  229. scanf("%d",&num);
  230.  
  231. while(p != NULL)
  232. {
  233. if(p->id == num)
  234. {
  235. q->next = p->next;
  236. free(p);
  237. length --;
  238. printf("删除成功!\n");
  239. return ;
  240. }
  241. p = p->next;
  242. q = q->next;
  243. }
  244. if(p == NULL)
  245. {
  246. printf("找不到要删除的编号!\n");
  247. return ;
  248. }
  249. }
  250.  
  251. void menu()
  252. {
  253. printf("___________________________________________________\n");
  254. printf("| 学生信息管理系统 |\n");
  255. printf("| 0、退出系统 |\n");
  256. printf("| 1、录入学生信息 |\n");
  257. printf("| 2、建立链表 |\n");
  258. printf("| 3、显示链表 |\n");
  259. printf("| 4、查找链表中的某个元素 |\n");
  260. printf("| 5、删除链表中指定学号的结点 |\n");
  261. printf("| 6、指定位置上插入一个新结点 |\n");
  262. printf("| 7、修改学生信息 |\n");
  263. printf("__________________________________________________\n");
  264. return ;
  265. }
  266.  
  267. int main(void)
  268. {
  269. int a;
  270. menu();
  271. while()
  272. {
  273. printf("请输入相应的功能:");
  274. scanf("%d",&a);
  275. switch(a)
  276. {
  277. case :
  278. return ;
  279. case :
  280. LoadStudentInFromFile();
  281. menu();
  282. break;
  283. case :
  284. create();
  285. menu();
  286. break;
  287. case :
  288. if(head)
  289. {
  290. display();
  291. menu();
  292. }
  293. else
  294. {
  295. printf("链表为空,请先建立链表!\n");
  296. menu();
  297. }
  298. break;
  299. case :
  300. if(head)
  301. {
  302. search();
  303. menu();
  304. }
  305. else
  306. {
  307. printf("链表为空,请先建立链表!\n");
  308. menu();
  309. }
  310. break;
  311. case :
  312. if(head)
  313. {
  314. Delete();
  315. menu();
  316. }
  317. else
  318. {
  319. printf("链表为空,请先建立链表!\n");
  320. menu();
  321. }
  322. break;
  323. case :
  324. if(head)
  325. {
  326. insert();
  327. menu();
  328. }
  329. else
  330. {
  331. printf("链表为空,请先建立链表!\n");
  332. menu();
  333. }
  334. break;
  335. case :
  336. if(head)
  337. {
  338. ModifyStudentInfo();
  339. menu();
  340. }
  341. else
  342. {
  343. printf("链表为空,请先建立链表!\n");
  344. menu();
  345. }
  346. break;
  347. default:
  348. break;
  349. }
  350. }
  351. system("pause");
  352. return ;
  353. }

学生信息管理系统(C语言)的更多相关文章

  1. 学生信息管理系统(c语言)

    ①注意: 程序中使用了sleep()函数.system()函数 关于 sleep() 函数 sleep() 函数的头文件和用法会因环境的不同而有所不同. 具体见-sleep()函数功能及用法 关于sy ...

  2. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  3. 【转载】C语言综合实验1—学生信息管理系统

    http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...

  4. C语言小练习之学生信息管理系统

    C语言小练习之学生信息管理系统 main.c文件   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  5. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  6. 基于数组或链表的学生信息管理系统(小学期C语言程序实训)

    1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...

  7. 【Python3.6+Django2.0+Xadmin2.0系列教程之二】学生信息管理系统(入门篇)

    上一篇我们已经创建好了一个Xadmin的基础项目,现在我们将在此基础上构建一个同样很基础的学生信息管理系统. 一.创建模型 模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段, ...

  8. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  9. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

随机推荐

  1. centos----------centos下安装谷歌浏览器

    1.首先你已经安装了带有可视化界面的centos系统. 2.打开里面自带的一个浏览器,输入网址 http://chrome.richardlloyd.org.uk/install_chrome.sh ...

  2. #WEB安全基础 : HTTP协议 | 0x7 学会使用wireshark分析数据包

    wireshark是开源,免费,跨平台的抓包分析工具 我们可以通过wireshark学习HTTP报文和进行抓包分析,在CTF中的流量分析需要用到抓包 1.下载和安装 这是wireshark的官网 ht ...

  3. Java的反射机制的详细应用

    package com.at221; import java.io.Serializable; import java.lang.reflect.*; import org.junit.Test; p ...

  4. tiny6410采用sd卡烧写的问题

    今天想用32G的SD卡来烧写tiny6410的uboot但是失败了,换了一张4G的卡就可以了, 还有sd卡启动的uboot使用tftp命令是有问题的

  5. 缓存淘汰算法---LRU转

    1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. ...

  6. 【js】深拷贝一文中的几个错误点

    原文:https://www.cnblogs.com/wuhairui/p/10370227.html 得到网友反馈,试过后也再查了下资料: 1.JSON.parse(JSON.stringify(o ...

  7. FractionallySizedBox

    import 'package:flutter/material.dart'; void main() { runApp(MaterialApp(home: new MyApp())); } clas ...

  8. Html Link 标签

    Html Link 标签 Link 是 HTML Head 内部标签 <html> <head> <!-- link标签:rel="shortcut icon& ...

  9. ORA-12805: parallel query server died unexpectedly ORA-04030 (sort subheap,sort key) 原因排查与解决方法

    今日,某服务器pga调整为30G,_pga_max_size调整为8G之后(原来是2G,但是one passes语句较多,性能太低),执行出现ORA-12805: parallel query ser ...

  10. 【Python66--checkbutton&】

    一.定义:Checkbutton组件用于实现是否选择的按钮 二.作用:使用Checkbutton,必须创建一个tkinter变量用于存放按钮的状态:v=IntVar() from tkinter im ...