在原版上进行改进,主要改进的功能有。

1.利用atof:将字符串转换为浮点型;

利用atoi:将字符串转换为整型;

原文地址:http://www.cnblogs.com/sddai/p/5774121.html

3.将结构体改变了,可能因为编码原因,只能char型输入,还好有ASCII码

4.将输出格式改变

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <windows.h>
  6.  
  7. #pragma warning(disable : 4996)
  8. #pragma warning(disable : 4477)
  9.  
  10. FILE *fp;
  11.  
  12. int count;
  13.  
  14. char biubiubiu = '\n';
  15.  
  16. struct add
  17. {
  18. char ch[];
  19. char a[];
  20. char SID[];
  21. char ch1[];
  22. char b[];
  23. char Name[];
  24. char ch2[];
  25. char c[];
  26. char Age[];
  27. char ch3[];
  28. char d[];
  29. char Gender[];
  30. char ch4[];
  31. char e[];
  32. char EntranxeScore[];
  33. char ch5[];
  34. }add1[], student, *pointer;
  35.  
  36. void color(const unsigned short color1)
  37. {
  38. if (color1 >= && color1 <= )
  39. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);
  40. else
  41. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), );
  42. }
  43.  
  44. void printinfor();//菜单函数
  45.  
  46. void wuyu_1();//按学号排序函数
  47. void wuyu_2();//按总成绩排序函数
  48.  
  49. void function_1();//添加学生信息函数
  50. void function_2();//删除学生信息函数
  51. void function_3();//更改学生信息函数
  52. void function_4();//查询学生信息函数
  53. void function_5();//显示所有学生信息函数
  54. void function_6();//附加功能选项函数
  55.  
  56. void findfunction_1();//通过学号查询函数
  57. void findfunction_2();//通过学生姓名查询函数
  58. void findfunction_3();//通过学生年龄查询函数
  59. void findfunction_4();//通过学生分数查询函数
  60.  
  61. void add_txt();
  62.  
  63. int main(void)
  64. {
  65. int num_1, k;
  66. fp = fopen("D:\\studyinfor.txt", "ab+");//打开文本/创建,进行操作
  67. fread(add1, sizeof(struct add), , fp);//读取文本储存信息
  68. add_txt();
  69. for (k = ; k<; k++)//判断文本中储存人数(Age==0表示此处无数据)
  70. {
  71. if (add1[k].Age[] == '\0')
  72. {
  73. break;
  74. }
  75. count++;
  76. }
  77. fclose(fp);//关闭指针
  78. printinfor();//显示菜单
  79. while ()//使用者操作
  80. {
  81. do
  82. {
  83. printf("请输入要进行操作的序列号:");
  84. scanf("%d", &num_1);
  85. } while (num_1< || num_1>);
  86. if (num_1 == )break;
  87.  
  88. switch (num_1)
  89. {
  90. case :function_1(); break;
  91. case :function_2(); break;
  92. case :function_3(); break;
  93. case :function_4(); break;
  94. case :function_5(); break;
  95. case :function_6(); break;
  96. }
  97. system("cls");
  98. printinfor();
  99. }
  100. return ;
  101. }
  102.  
  103. void checkSID(int j)//检查学号大小函数
  104. {
  105. int num_int;
  106. num_int = atoi(add1[j].SID);
  107. while (num_int <= || num_int>)
  108. {
  109. color();
  110. printf("warning:SID的取值范围在0~750,请重新输入.\n");
  111. color();
  112. printf("请输入学生的学号:");
  113. scanf("%s", &add1[j].SID);
  114. num_int = atoi(add1[j].SID);
  115. if (num_int> && num_int <= )
  116. {
  117. break;
  118. }
  119. }
  120. }
  121.  
  122. void checkSID_1(int m)//检查学号是否重复函数
  123. {
  124. int k, num_int, num1_int;
  125. num1_int = atoi(add1[m].SID);
  126. for (k = ; k < count; k++)
  127. {
  128. if (k == m)
  129. {
  130. continue;
  131. }
  132. num_int = atoi(add1[k].SID);
  133. while (num_int == num1_int)
  134. {
  135. color();
  136. printf("学号重复,请重新输入.\n");
  137. color();
  138. printf("请输入学号:");
  139. scanf("%s", &add1[m].SID);
  140. num1_int = atoi(add1[m].SID);
  141. k == ;
  142. }
  143. }
  144. }
  145. //因为选择输入的方式是ab+,从新从i=0开始输入进去,所以想要通过
  146.  
  147. void checkName(int m, char Name[])//检查姓名函数
  148. {
  149. while (strlen(Name)>)
  150. {
  151. color();
  152. printf("warning:Name的字数最多为5,请重新输入.\n");
  153. color();
  154. printf("请输入学生的姓名:");
  155. scanf("%s", &add1[m].Name);
  156. }
  157. }
  158.  
  159. void checkGender(int i, char a[])//检查性别函数
  160. {
  161. while (strcmp(a, "男") && strcmp(a, "女"))
  162. {
  163. color();
  164. printf("warning:Gender只能是男或女,请重新输入.\n");
  165. color();
  166. printf("请输入学生的性别:");
  167. scanf("%s", &add1[i].Gender);
  168. }
  169. }
  170.  
  171. void checkAge(int m)//检查年龄函数
  172. {
  173. int num_int;
  174. num_int = atoi(add1[m].Age);
  175. while (num_int< || num_int>)
  176. {
  177. color();
  178. printf("warning:Age的取值范围在0~122,请重新输入,严肃对待!\n");
  179. color();
  180. printf("请输入学生的年龄:");
  181. scanf("%s", &add1[m].Age);
  182. num_int = atoi(add1[m].Age);
  183. }
  184. }
  185.  
  186. void checkEntranxeScore(int k)
  187. {
  188. double num_double;
  189. num_double = atof(add1[k].EntranxeScore);
  190. while (num_double< || num_double>)
  191. {
  192. color();
  193. printf("warning:EntranxeScore的取值范围在0~750,请重新输入.\n");
  194. color();
  195. printf("请输入学生的分数:");
  196. scanf("%lf", &add1[k].EntranxeScore);
  197. }
  198. }
  199.  
  200. void getName(char name[]) {
  201. while () {
  202. printf("请输入学生的姓名:");
  203. fflush(stdin);
  204. scanf("%s", name);
  205. if (strlen(name)<) {
  206. break;
  207. }
  208. }
  209. }
  210.  
  211. void printinfor()
  212. {
  213. system("date /t");
  214. system("TIME /t\n");
  215. printf(" **********欢迎使用学生信息管理系统(当前有%d人)********\n", count);
  216. printf(" *\t\t(1)添加学生信息\t\t\t\t*\n");
  217. printf(" *\t\t(2)删除学生信息\t\t\t\t*\n");
  218. printf(" *\t\t(3)更改学生信息\t\t\t\t*\n");
  219. printf(" *\t\t(4)查询学生信息\t\t\t\t*\n");
  220. printf(" *\t\t(5)显示所有学生信息\t\t\t*\n");
  221. printf(" *\t\t(6)附加功能选项\t\t\t\t*\n");
  222. printf(" *\t\t(0)退出学生系统\t\t\t\t*\n");
  223. printf(" *\t\t\t\t\t 作者:liu\t*\n");
  224. printf(" *****************************************************\n");
  225. }
  226.  
  227. void findfunction()
  228. {
  229. system("cls");
  230. system("date /t");
  231. system("TIME /t\n");
  232. printf(" ***************查询学生信息(当前有%d人)*****************\n", count);
  233. printf(" *\t\t(1)通过学生学号查询 \t\t\t*\n");
  234. printf("\n");
  235. printf(" *\t\t(2)通过学生姓名查询 \t\t\t*\n");
  236. printf("\n");
  237. printf(" *\t\t(3)通过学生年龄查询 \t\t\t*\n");
  238. printf("\n");
  239. printf(" *\t\t(4)通过学生分数查询 \t\t\t*\n");
  240. printf(" *********************************************************\n");
  241. }
  242.  
  243. void Morefunction()
  244. {
  245. system("cls");
  246. printf(" *******************附加功能*****************\n");
  247. printf("\t\t\t*\t\t\t\t\t *\n");
  248. printf(" *\t\t(1)按学号进行整理 \t *\n");
  249. printf("\t\t\t*\t\t\t\t\t *\n");
  250. printf(" *\t\t(2)按总分进行整理 \t *\n");
  251. printf("\t\t\t*\t\t\t\t\t *\n");
  252. color();
  253. printf("\t\t\t*待开发... ... *\n");
  254. color();
  255. printf("\t\t\t********************************************\n");
  256. }
  257.  
  258. void inputmomo(int i)
  259. {
  260. printf("请输入学生的学号:");
  261. scanf("%s", &add1[i].SID);
  262. checkSID(i);
  263. checkSID_1(i);
  264. color();
  265. printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
  266. color();
  267. printf("请输入学生的名字:");
  268. scanf("%s", &add1[i].Name);
  269. checkName(i, add1[i].Name);
  270. color();
  271. printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
  272. color();
  273. printf("请输入学生的年龄:");
  274. scanf("%s", &add1[i].Age);
  275. checkAge(i);
  276. color();
  277. printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
  278. color();
  279. printf("请输入学生的性别:");
  280. scanf("%s", &add1[i].Gender);
  281. checkGender(i, add1[i].Gender);
  282. color();
  283. printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
  284. color();
  285. printf("请输入学生的总成绩:");
  286. scanf("%s", &add1[i].EntranxeScore);
  287. color();
  288. printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
  289. color();
  290. }
  291.  
  292. void function_1()//添加学生信息函数
  293. {
  294. int n, i, m = count;
  295. if ((fp = fopen("D:\\studyinfor.txt", "ab+")) == NULL)//检测文本是否正常打开
  296. {
  297. color();
  298. printf("Can't open the file!");
  299. color();
  300. system("pause");
  301. exit();
  302. }
  303. printf("请输入您要添加的学生信息人数:");
  304. scanf("%d", &n);
  305.  
  306. for (i = count; i<n + m; i++)
  307. {
  308. printf("请输入No.%d的信息.\n", i + );
  309. inputmomo(i - m);//录入学生信息
  310. count++;
  311. }
  312. fwrite(add1, sizeof(struct add), n, fp);
  313. rewind(fp);
  314. color();
  315. printf("添加中");
  316. Sleep();
  317. printf(".");
  318. Sleep();
  319. printf(".");
  320. Sleep();
  321. printf(". ");
  322. Sleep();
  323. printf(".");
  324. Sleep();
  325. printf(".");
  326. Sleep();
  327. printf(".\n");
  328. color();
  329. printf("添加成功!\n");
  330. printf("学生信息目录已更新.\n");
  331. fread(add1, sizeof(struct add), count, fp);//读取学生信息
  332. color();
  333. printf("___________________________________________________\n");
  334. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  335. for (i = ; i<count; i++)//打印更新的学生信息
  336. {
  337. if (add1[i].SID>)
  338. printf(" %-3s %-3s %-6s %-3s \t %-6s \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
  339. }
  340. printf("|-------------------------------------------------|\n");
  341. fclose(fp);
  342. printf("按任意键返回主菜单... ....\n");
  343. system("pause");
  344. }
  345.  
  346. void function_2()//删除学生信息
  347. {
  348. int m, k, i, j = , num_int;
  349. if ((fp = fopen("D:\\studyinfor.txt", "wb+")) == NULL)
  350. {
  351. printf("Can't open the file!\n");
  352. system("pause");
  353. exit();
  354. }
  355. if (count == )
  356. {
  357. color();
  358. printf("The file is NULL!!!\n");
  359. color();
  360. return;
  361. }
  362. printf("请输入你要删除的学生的学号:");
  363. scanf("%d", &m);
  364. fread(add1, sizeof(struct add), count, fp);
  365. for (k = ; k<count; k++)
  366. {
  367. num_int = atoi(add1[k].SID);
  368. if (num_int == m)
  369. {
  370. printf("_____________________________________________________\n");
  371. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  372. printf(" %.2d %-6s %-3d %-3s \t%5.2lf \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
  373. printf("|---------------------------------------------------|\n");
  374. for (i = k; i<count - ; i++)//将要删除的数后面的函数往前进一格,占去要删除的部分
  375. {
  376. strcpy(add1[i].SID, add1[i + ].SID);
  377. strcpy(add1[i].Name, add1[i + ].Name);
  378. strcpy(add1[i].Age, add1[i + ].Age);
  379. strcpy(add1[i].Gender, add1[i + ].Gender);
  380. strcpy(add1[i].EntranxeScore, add1[i + ].EntranxeScore);
  381. }
  382. count--;
  383. fwrite(add1, sizeof(struct add), count, fp);
  384. rewind(fp);//使指针回到开头
  385. fclose(fp);
  386. color();
  387. printf("删除中");
  388. Sleep();
  389. printf(".");
  390. Sleep();
  391. printf(".");
  392. Sleep();
  393. printf(". ");
  394. Sleep();
  395. printf(".");
  396. Sleep();
  397. printf(".");
  398. Sleep();
  399. printf(".\n");
  400. Sleep();
  401. color();
  402. printf("删除成功!按任意键继续... ...\n");
  403. color();
  404. j++;
  405. }
  406. }
  407. if (j == )
  408. {
  409. color();
  410. printf("查无此人!\n");
  411. color();
  412. }
  413. system("pause");
  414. }
  415.  
  416. void function_3()//更改学生信息
  417. {
  418. int m, k, j = , num_int;
  419. if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
  420. {
  421. printf("Can't open the file!\n");
  422. system("PAUSE");
  423. exit();
  424. }
  425. if (count == )
  426. {
  427. color();
  428. printf("The file is NULL!!!\n");
  429. color();
  430. return;
  431. }
  432. printf("请输入你要更改的学生的学号:");
  433. scanf("%d", &m);
  434. fread(add1, sizeof(struct add), count, fp);
  435. for (k = ; k<count; k++)
  436. {
  437. num_int = atoi(add1[k].SID);
  438. if (num_int == m)
  439. {
  440. printf("_____________________________________________________\n");
  441. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  442. printf(" %-6s %-6s %-3s %-3s \t %-6s \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
  443. printf("|---------------------------------------------------|\n");
  444. printf("请输入你要修改的内容:\n");
  445. inputmomo(k);
  446. rewind(fp);
  447. fwrite(add1, sizeof(struct add), count, fp);
  448. //rewind(fp);
  449. fclose(fp);
  450. color();
  451. printf("更改成功!按任意键继续... ...\n");
  452. color();
  453. j++;
  454. }
  455. }
  456. if (j == )
  457. {
  458. color();
  459. printf("查无此人!\n");
  460. color();
  461. }
  462. system("pause");
  463. }
  464.  
  465. void function_4()//查询学生信息
  466. {
  467. int m;
  468. findfunction();//进入查询菜单
  469. printf("请输入你查询的方式序列号:");
  470. scanf("%d", &m);
  471. do {
  472. switch (m)
  473. {
  474. case :findfunction_1(); break;
  475. case :findfunction_2(); break;
  476. case :findfunction_3(); break;
  477. case :findfunction_4(); break;
  478. }
  479. } while (m< || m>);
  480. }
  481.  
  482. void function_5()//显示所有学生信息
  483. {
  484. int i;
  485. if ((fp = fopen("D:\\studyinfor.txt", "rb")) == NULL)
  486. {
  487. printf("Can't open the file!\n");
  488. system("PAUSE");
  489. exit();
  490. }
  491. fread(add1, sizeof(struct add), count, fp);
  492. if (count == )
  493. {
  494. color();
  495. printf("The file is NULL!\n");
  496. color();
  497. system("pause");
  498. return;
  499. }
  500. else {
  501. printf("_____________________________________________________\n");
  502. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  503. for (i = ; i<count; i++)
  504. {
  505. if (add1[i].SID != '\0')
  506. printf(" %-3s %-6s %-3s %-3s \t %-6s \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
  507. }
  508. printf("|---------------------------------------------------|\n");
  509. }
  510. fclose(fp);
  511. printf("按任意键返回主菜单... ...\n");
  512. system("pause");
  513. }
  514.  
  515. void function_6()//附加功能选项
  516. {
  517. Morefunction();//附加功能
  518. int k;
  519. do {
  520. printf("请输入你要操作的序号:");
  521. scanf("%d", &k);
  522. switch (k)
  523. {
  524. case :wuyu_1(); break;
  525. case :wuyu_2(); break;
  526. default:
  527. {
  528. color();
  529. printf("输入有误,请重新输入!\n");
  530. color();
  531. }
  532. }
  533. } while (k < || k>);
  534. }
  535.  
  536. void findfunction_1()//学生学号查询
  537. {
  538. int m, n, i, j = , num_int;
  539. printf("请输入你要搜索的学生学号范围:\n");
  540. printf("最小值:");
  541. scanf("%d", &m);
  542. printf("最大值:");
  543. scanf("%d", &n);
  544. fp = fopen("D:\\studyinfor.txt", "rb+");
  545. fread(add1, sizeof(struct add), count, fp);
  546. printf("_____________________________________________________\n");
  547. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  548. for (i = ; i<count; i++)
  549. {
  550. num_int = atoi(add1[i].SID);
  551. if (num_int >= m && num_int <= n)
  552. {
  553. printf(" %-3s %-6s %-3s %-3s \t %-3s \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
  554. printf("|---------------------------------------------------|\n");
  555. j++;
  556. }
  557. }
  558. if (j == )
  559. {
  560. printf("无相关学生信息.\n");
  561. }
  562. printf("按任意键返回主菜单... ...\n");
  563. system("pause");
  564. }
  565.  
  566. void findfunction_2()//学生姓名查询
  567. {
  568. int i, n = ;
  569. char name[];
  570. getName(name);//输入学生姓名
  571. rewind(fp);
  572. fp = fopen("D:\\studyinfor.txt", "rb+");
  573. fread(add1, sizeof(struct add), count, fp);
  574. for (i = ; i<count; i++)
  575. {
  576. if (strcmp(add1[i].Name, name) == ) {
  577. printf("_____________________________________________________\n");
  578. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  579. printf(" %-3s %-6s %-3s %-3s \t %-6s \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
  580. printf("|---------------------------------------------------|\n");
  581. ++n;
  582. break;
  583. }
  584. }
  585. if (n == )
  586. {
  587. color();
  588. printf("无相关学生信息!\n");
  589. color();
  590. }
  591. printf("按任意键返回主菜单... ...\n");
  592. system("pause");
  593. }
  594.  
  595. void findfunction_3()//学生年龄查询
  596. {
  597. int m, n, i, j = , num_int;
  598. printf("请输入你要查询的学生年龄范围:\n");
  599. printf("最小值:");
  600. scanf("%d", &m);
  601. printf("最大值:");
  602. scanf("%d", &n);
  603. fp = fopen("D:\\studyinfor.txt", "rb+");
  604. fread(add1, sizeof(struct add), count, fp);
  605. printf("_____________________________________________________\n");
  606. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  607. for (i = ; i<count; i++)
  608. {
  609. num_int = atoi(add1[i].Age);
  610. if (num_int >= m && num_int <= n)
  611. {
  612. printf(" %-3s %-6s %-3s %-3s \t %-6s \n", add1[i - ].SID, add1[i - ].Name, add1[i - ].Age, add1[i - ].Gender, add1[i - ].EntranxeScore);
  613. printf("|---------------------------------------------------|\n");
  614. j++;
  615. }
  616. }
  617. if (j == )
  618. {
  619. printf("无相关学生信息!\n");
  620. }
  621. printf("按任意键返回主菜单... ...\n");
  622. system("pause");
  623. }
  624.  
  625. void findfunction_4()//学生分数查询
  626. {
  627. int m, n, i, j = ;
  628. double num_double;
  629. printf("请输入你要查询的学生总成绩范围:\n");
  630. printf("最小值:");
  631. scanf("%d", &m);
  632. printf("最大值:");
  633. scanf("%d", &n);
  634. fp = fopen("D:\\studyinfor.txt", "rb+");
  635. fread(add1, sizeof(struct add), count, fp);
  636. printf("_____________________________________________________\n");
  637. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  638. for (i = ; i<count; i++)
  639. {
  640. num_double = atof(add1[i].EntranxeScore);
  641. if (num_double >= m && num_double <= n)
  642. {
  643. printf(" %-3s %-6s %-3s %-3s \t %-6s \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
  644. printf("|---------------------------------------------------|\n");
  645. j++;
  646. }
  647. }
  648. if (j == )
  649. {
  650. printf("无相关学生信息!\n");
  651. }
  652. printf("按任意键返回主菜单... ...\n");
  653. system("pause");
  654. }
  655.  
  656. void ExchangeFunction(int m, int n)//交换数据结构中两个统一结构的不同下标的结构值
  657. {
  658. double max = ;
  659. int max_1 = ;
  660. strcpy(student.EntranxeScore, add1[m].EntranxeScore);
  661. strcpy(add1[m].EntranxeScore, add1[n].EntranxeScore);
  662. strcpy(add1[n].EntranxeScore, student.EntranxeScore);
  663. strcpy(student.Age, add1[m].Age);
  664. strcpy(add1[m].Age, add1[n].Age);
  665. strcpy(add1[n].Age, student.Age);
  666. strcpy(student.SID, add1[m].SID);
  667. strcpy(add1[m].SID, add1[n].SID);
  668. strcpy(add1[n].SID, student.SID);
  669. strcpy(student.Gender, add1[m].Gender);
  670. strcpy(add1[m].Gender, add1[n].Gender);
  671. strcpy(add1[n].Gender, student.Gender);
  672. strcpy(student.Name, add1[m].Name);
  673. strcpy(add1[m].Name, add1[n].Name);
  674. strcpy(add1[n].Name, student.Name);
  675. }
  676.  
  677. void wuyu_1()//按学号查询
  678. {
  679. if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
  680. {
  681. printf("Can't open the file!\n");
  682. system("PAUSE");
  683. exit();
  684. }
  685. int m, n, j, num_int, num1_int;
  686. for (m = ; m < count - ; m++)//比较学号大小
  687. {
  688. for (n = m + ; n < count; n++)
  689. {
  690. num_int = atoi(add1[n].SID);
  691. num1_int = atoi(add1[m].SID);
  692. if (num_int < num1_int)
  693. {
  694. ExchangeFunction(m, n);//交换一个结构体整体值
  695. }
  696. }
  697. }
  698. color();
  699. printf("排序中");
  700. Sleep();
  701. printf("(");
  702. Sleep();
  703. printf(";");
  704. Sleep();
  705. printf("—");
  706. Sleep();
  707. printf("_");
  708. Sleep();
  709. printf("—");
  710. Sleep();
  711. printf(")\n");
  712. Sleep();
  713. color();
  714. printf("排序成功!按任意键继续... ...\n");
  715. color();
  716. printf("_____________________________________________________\n");
  717. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  718. for (j = ; j<count; j++)
  719. {
  720. printf(" %-3s %-6s %-3s %-3s \t %-6s \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
  721. printf("|---------------------------------------------------|\n");
  722. }
  723. rewind(fp);
  724. fwrite(add1, sizeof(struct add), count, fp);
  725. fclose(fp);
  726. system("pause");
  727. }
  728.  
  729. void wuyu_2()//按总分排序
  730. {
  731. if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
  732. {
  733. printf("Can't open the file!\n");
  734. system("PAUSE");
  735. exit();
  736. }
  737. int m, n, j;
  738. double num_double, num1_double;
  739. for (m = ; m < count - ; m++)//比较总分大小
  740. {
  741. for (n = m + ; n < count; n++)
  742. {
  743. num_double = atof(add1[n].EntranxeScore);
  744. num1_double = atof(add1[m].EntranxeScore);
  745. if (num_double > num1_double)
  746. {
  747. ExchangeFunction(m, n);//交换两个结构体整体值
  748. }
  749. }
  750. }
  751. color();
  752. printf("排序中");
  753. Sleep();
  754. printf("(");
  755. Sleep();
  756. printf("*");
  757. Sleep();
  758. printf("— ");
  759. Sleep();
  760. printf("з");
  761. Sleep();
  762. printf("—");
  763. Sleep();
  764. printf(")\n");
  765. Sleep();
  766. color();
  767. printf("排序成功!按任意键继续... ...\n");
  768. color();
  769. printf("_____________________________________________________\n");
  770. printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
  771. for (j = ; j<count; j++)
  772. {
  773. printf(" %-3s %-6s %-3s %-3s \t %-6s \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
  774. printf("|---------------------------------------------------|\n");
  775. }
  776. rewind(fp);
  777. fwrite(add1, sizeof(struct add), count, fp);
  778. fclose(fp);
  779. system("pause");
  780. }
  781.  
  782. void add_txt()
  783. {
  784. int i;
  785. for (i = ; i<; i++)
  786. {
  787. strcpy(add1[i].ch, "\r\n");
  788. strcpy(add1[i].ch1, "\r\n");
  789. strcpy(add1[i].ch2, "\r\n");
  790. strcpy(add1[i].ch3, "\r\n");
  791. strcpy(add1[i].ch4, "\r\n");
  792. strcpy(add1[i].ch5, "\r\n");
  793. strcpy(add1[i].a, "SID:");
  794. strcpy(add1[i].b, "Name:");
  795. strcpy(add1[i].c, "Age:");
  796. strcpy(add1[i].d, "Gender:");
  797. strcpy(add1[i].e, "EntranxeScore:");
  798. }
  799. }

C语言学生管理系统(增进版)的更多相关文章

  1. C语言学生管理系统完善版

    #include<stdio.h>#include<string.h>#include <stdlib.h>#define M 100struct score    ...

  2. 模拟斗地主和学生管理系统 IO 版

    1.模拟斗地主 public class PlayCards { public static void main(String[] args) { String[] color = {"黑桃 ...

  3. C语言学生管理系统

    想练习一下链表,所以就有了这个用C写的学生管理系统 没有把它写入文件,才不是因为我懒哈哈哈,主要是为了练习链表的 #include<stdio.h> #include<stdlib. ...

  4. C语言学生管理系统(C语言课程设计/精简版)

    #include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>typed ...

  5. C语言学生管理系统(原版本)(自编)

    /*系统特色:(大牛勿笑) *颜色提示 *文字提示 *功能 */ #include <stdio.h> #include <stdlib.h> #include <mat ...

  6. C语言学生管理系统源码分享

    大家好 我就是如假包换的...陈玲 自从运营了C语言程序设计微信公众号 很多粉丝都给我备注 ...奇葩 实在是不敢当 也被人开始叫玲玲姐 我知道 很多人都想看我出境 我本人也有 年多的舞台演讲训练 实 ...

  7. Java小例子(学习整理)-----学生管理系统-控制台版

    1.功能介绍: 首先,这个小案例没有使用数据库,用集合的形式暂时保存数据,做测试! 功能: 增加学生信息 删除学生信息 修改学生信息 查询学生信息:  按照学号(精确查询)  按照姓名(模糊查询) 打 ...

  8. Java 简化版学生管理系统(IO版)

    Student management system   学生管理系统IO版 详细知识点可参考一下几篇文章 常用API Java 之ArrayList集合及应用 Java 之IO流及应用 Compreh ...

  9. python开发的学生管理系统

    python开发的学生管理系统(基础版) #定义一个函数,显示可以使用的功能列表给用户 def showInfo(): print("-"*30) print(" 学生管 ...

随机推荐

  1. 排列oj

    835:排列 总时间限制: 5000ms 内存限制: 65536kB 描述 题目描述: 大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n= ...

  2. 利用InfluxDB和Grafana搭建数据监测的仪表盘

    InfluxDB的介绍及安装 InfluxDB是支持持续写入的时序数据库,常用于监测系统所需要的数据的存储. 官网的详细安装步骤 https://docs.influxdata.com/influxd ...

  3. lnmp1.3 配置pathinfo---thinkphp3.2 亲测有效

    lnmp1.3环境下配置pathinfo模式试了很多方法,都以失败告终,博主被这个问题困扰了很久,终于解决了!现记录如下: 1.打开php.ini 通常该文件在 /usr/local/php/etc/ ...

  4. msf入门学习笔记

    msf-------------------------------------- service postgresql startservice metasploit startmsfconsole ...

  5. 有关.NET链接Oracle数据库,使用连接池pooling=true时问题

    .net链接oracle数据库时,当链接字符串中pooling=true时,视图结构变更时程序报错问题,还请高手指教 现象: 链接字符串: 注意:这里pooling=true: 测试视图: 执行的SQ ...

  6. MyBatis多租户隔离插件开发

    在SASS的大潮流下,相信依然存在很多使用一个数据库为多个租户提供服务的场景,这个情况下一般是多个租户共用同一套表通过sql语句级别来隔离不同租户的资源,比如设置一个租户标识字段,每次查询的时候在后面 ...

  7. 关于无法全然下载CyanogenMod代码的问题

    CyanogenMod真的是一个奇妙的东东,它让开发手机固件不再是手机生产商的专利,每一个有志于此的程序猿都可能为自己的手机定制一份专有的,独一无二的固件,这在曾经是想都不敢想的. 而且Cyanoge ...

  8. Linux性能及调优指南(翻译)之Linux进程管理

    本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...

  9. Highcharts使用CSV格式数据绘制图表

    Highcharts使用CSV格式数据绘制图表 CSV(Comma-Separated Values,逗号分隔值文本格式)是採用逗号切割的纯文本数据.通常情况下.每一个数据之间使用逗号切割,几个相关数 ...

  10. 自学Zabbix1.3-zabbix进程

    默认情况下zabbix包含5个程序:zabbix_agentd.zabbix_get.zabbix_proxy.zabbix_sender.zabbix_server,另外一个zabbix_java_ ...