开源以前做的一个DOS界面的学生系统

Code: 一个用DOS写的学生系统的界面,代码需要用TC系列的编译,VC编译不了,建议用WINTC。
  1. /**********************************************
  2. *学生管理系统代码提示
  3. *
  4. *注意:本程序文件存放在C:/目录下.
  5. *在你的机器上有这个目录吗?如果没有请创建!
  6. *
  7. *徐方鑫2010.1.20
  8. *
  9. ***********************************************/
  10. /*头文件定义*/
  11. #include<dos.h>
  12. #include<stdio.h>
  13. #include<stdlib.h>
  14. #include<math.h>
  15. #include<conio.h>
  16. #include<process.h>
  17. /*按键定义*/
  18. #defineKEY_UP72
  19. #defineKEY_DOWN80
  20. #defineKEY_ENTER28
  21. #defineKEY_H35
  22. #defineKEY_I23
  23. #defineKEY_M50
  24. #defineKEY_S31
  25. #defineKEY_E18
  26. /*框体坐标*/
  27. /*学生用户信息窗体坐标*/
  28. #defineX120
  29. #defineY12
  30. #defineX1_LENTH10
  31. #defineY1_LENTH1
  32. /*学生成绩搜索窗体坐标*/
  33. #defineX239
  34. #defineY22
  35. #defineX2_LENTH10
  36. #defineY2_LENTH1
  37. /*学生活动报名窗体坐标*/
  38. #defineX351
  39. #defineY32
  40. #defineX3_LENTH10
  41. #defineY3_LENTH2
  42. /*学生返回首页窗体*/
  43. #defineX48
  44. #defineY42
  45. #defineX4_LENTH10
  46. #defineY4_LENTH1
  47. /*教师用户信息窗体坐标*/
  48. #defineX520
  49. #defineY52
  50. #defineX5_LENTH10
  51. #defineY5_LENTH1
  52. /*教师成绩搜索窗体坐标*/
  53. #defineX639
  54. #defineY62
  55. #defineX6_LENTH10
  56. #defineY6_LENTH5
  57. /*教师活动报名窗体坐标*/
  58. #defineX751
  59. #defineY72
  60. #defineX7_LENTH10
  61. #defineY7_LENTH4
  62. /*教师返回首页窗体*/
  63. #defineX88
  64. #defineY82
  65. #defineX8_LENTH10
  66. #defineY8_LENTH1
  67. /*成绩结构体*/
  68. typedefstruct
  69. {
  70. intSid;
  71. charname[10];
  72. charclassName[20];
  73. intsex;
  74. intmathScores;
  75. intchineseScores;
  76. intenglishScores;
  77. }Student;
  78. /*选课结构体*/
  79. typedefstruct
  80. {
  81. intSid;
  82. charname[10];
  83. charclass[20];
  84. intsex;
  85. charcredit[20];
  86. intmax_room;
  87. charexam_mode[20];
  88. }Class;
  89. /*主函数声明*/
  90. intkey();/*键盘驱动*/
  91. intlogin(void);/*登陆*/
  92. voidnowbar(inty);/*登陆光标*/
  93. voidnowbardown(inty);
  94. voidnowbarup(inty);
  95. voidstudent(void);/*学生主函数*/
  96. voidteacher(void);/*教师主函数*/
  97. voidguest(void);/*访客主函数*/
  98. intinformation_file();/*学生用户信息函数*/
  99. voidnowbar_file(intx,inty,intz);/*用户信息光标*/
  100. voidnowbardown_file(intx,inty,intz);
  101. voidnowbarup_file(intx,inty,intz);
  102. intmark_file();/*学生成绩搜索函数*/
  103. intsign_up_file();/*学生活动报名函数*/
  104. inthead_file();/*学生返回首页函数*/
  105. intinformation_file_teacher();/*教师用户信息函数*/
  106. intmark_file_teacher();/*教师成绩搜索函数*/
  107. intsign_up_file_teacher();/*教师活动报名函数*/
  108. inthead_file_teacher();/*教师返回首页函数*/
  109. voidinputStudents();/*输入学生信息*/
  110. voidqueryStudents();/*显示文件中所有学生信息*/
  111. voidseekStudent();/*查找学生信息*/
  112. voiddispStudent_queryStudents(Students);/*显示文件所用学生信息显示函数*/
  113. voiddispStudent(Students);/*学生信息显示函数*/
  114. voidmodifyStudent();/*修改学生信息*/
  115. voiddeleteStudent();/*删除学生信息*/
  116. voidsummerizeStudent();/*统计学生信息*/
  117. voidinputclass();/*输入选课课程信息*/
  118. voidlistClass();/*显示文件中所有课程信息*/
  119. voidseekClass();/*课程搜索函数*/
  120. voiddispClass(Classt);/*选课信息显示函数*/
  121. voiddispClass_list(Classt);/*显示文件所用课程信息显示函数*/
  122. voiddeleteClass();/*删除课程信息*/
  123. /*主函数*/
  124. voidmain()
  125. {
  126. intLogin_Switch;
  127. textmode(C80);/*25*80彩色显示*/
  128. textbackground(BLUE);/*背景色*/
  129. clrscr();
  130. Login_Switch=login();
  131. switch(Login_Switch)/*登陆*/
  132. {
  133. case10:{
  134. system("CLS");
  135. student();/*进入学生类*/
  136. }
  137. case11:{
  138. system("CLS");
  139. teacher();/*进去教师类*/
  140. break;}
  141. case12:{
  142. system("CLS");
  143. guest();/*进入访客类*/
  144. break;}
  145. case13:{
  146. exit(0);}
  147. }
  148. }
  149. /*函数区*/
  150. /*按键读取函数*/
  151. intkey()
  152. {
  153. unionREGSrg;
  154. rg.h.ah=0;
  155. int86(0x16,&rg,&rg);
  156. returnrg.h.ah;
  157. }
  158. /*登陆函数*/
  159. voidnowbar(inty)
  160. {
  161. inti;
  162. typedefstructtextl_struct
  163. {
  164. unsignedcharch;
  165. unsignedcharattr;
  166. }texel;
  167. texelt;
  168. for(i=36;i<=46;i++)
  169. {
  170. gettext(i,y,i,y,&t);
  171. t.attr=(BLUE<<4)+WHITE;
  172. puttext(i,y,i,y,&t);
  173. };
  174. return;
  175. }
  176. voidnowbardown(inty)
  177. {
  178. inti;
  179. typedefstructtextl_struct
  180. {
  181. unsignedcharch;
  182. unsignedcharattr;
  183. }texel;
  184. texelt;
  185. y--;
  186. for(i=36;i<=46;i++)
  187. {
  188. gettext(i,y,i,y,&t);
  189. t.attr=(RED<<4)+WHITE;
  190. puttext(i,y,i,y,&t);
  191. };
  192. return;
  193. }
  194. voidnowbarup(inty)
  195. {
  196. inti;
  197. typedefstructtextl_struct
  198. {
  199. unsignedcharch;
  200. unsignedcharattr;
  201. }texel;
  202. texelt;
  203. y++;
  204. for(i=36;i<=46;i++)
  205. {
  206. gettext(i,y,i,y,&t);
  207. t.attr=(RED<<4)+WHITE;
  208. puttext(i,y,i,y,&t);
  209. };
  210. return;
  211. }
  212. intlogin()
  213. {
  214. intkey_BOARD,y;
  215. window(34,9,48,14);
  216. textbackground(WHITE);
  217. clrscr();
  218. window(36,10,46,13);
  219. textbackground(RED);
  220. clrscr();
  221. textcolor(WHITE);
  222. cprintf("1.Student/r/n");
  223. cprintf("2.Teacher/r/n");
  224. cprintf("3.Guest/r/n");
  225. cprintf("4.Exit");
  226. y=10;
  227. nowbar(y);
  228. gotoxy(1,1);
  229. for(;key_BOARD!=KEY_ENTER;)
  230. {
  231. key_BOARD=key();
  232. switch(key_BOARD){
  233. caseKEY_DOWN:{
  234. ++y;
  235. if(y==14)y=10;
  236. nowbar(y);
  237. if(y!=10)nowbardown(y);
  238. elsenowbardown(14);
  239. gotoxy(1,y-9);
  240. break;}
  241. caseKEY_UP:{
  242. --y;
  243. if(y==9)y=13;
  244. nowbar(y);
  245. if(y!=13)nowbarup(y);
  246. elsenowbarup(9);
  247. gotoxy(1,y-9);
  248. break;}
  249. }
  250. }
  251. returny;
  252. };
  253. /*学生类*/
  254. voidstudent()
  255. {
  256. inti,key_BOARD,x,y,l;
  257. inty_code;
  258. char*menu[]={"Head","Information","Mark","Sign_up","Exit"};
  259. /*主菜单各项*/
  260. char*red[]={"H","I","M","S","E"};
  261. window(1,1,80,25);
  262. textbackground(WHITE);
  263. clrscr();
  264. window(1,1,80,1);
  265. gotoxy(8,1);
  266. for(i=0,l=0;i<5;i++)
  267. {
  268. textcolor(BLACK);
  269. x=wherex();
  270. y=wherey();
  271. cprintf("%s",menu[i]);
  272. l=strlen(menu[i]);
  273. gotoxy(x,y);
  274. textcolor(RED);
  275. cprintf("%s",red[i]);
  276. x=x+l+8;
  277. gotoxy(x,y);
  278. }
  279. while(1)
  280. {
  281. key_BOARD=key();
  282. if(key_BOARD==KEY_H)
  283. {
  284. y_code=head_file();/*返回首页函数*/
  285. switch(y_code)
  286. {
  287. case2:{window(X4,Y4,(X4+X4_LENTH),(Y4+Y4_LENTH));/*重绘首页弹出框图*/
  288. textbackground(LIGHTGRAY);
  289. clrscr();
  290. window(22,7,65,25);/*公共信息窗口*/
  291. textbackground(WHITE);
  292. textcolor(BLACK);
  293. clrscr();
  294. cprintf("Notice/r/n");
  295. cprintf("1.Thisisnew,pleasewaitanything/r/n");/*公共信息*/
  296. cprintf("2.Thisisnew,pleasewaitanything/r/n");
  297. cprintf("3.Thisisnew,pleasewaitanything/r/n");
  298. cprintf("4.Thisisnew,pleasewaitanything/r/n");
  299. cprintf("5.Thisisnew,pleasewaitanything/r/n");
  300. cprintf("6.Thisisnew,pleasewaitanything/r/n");
  301. cprintf("7.Thisisnew,pleasewaitanything/r/n");
  302. cprintf("8.Thisisnew,pleasewaitanything/r/n");
  303. cprintf("9.Thisisnew,pleasewaitanything/r/n/r/n");
  304. cprintf("Youchoiceis");/*公共信息查询*/
  305. getchar();
  306. cprintf("/r/nPleasewaititcompete");
  307. getch();
  308. system("CLS");
  309. student();}
  310. case3:{system("CLS");
  311. student();}
  312. }
  313. };
  314. if(key_BOARD==KEY_I)
  315. {
  316. y_code=information_file();/*用户信息函数*/
  317. switch(y_code)
  318. {
  319. case2:{
  320. window(X1,Y1,(X1+X1_LENTH),(Y1+Y1_LENTH));/*重绘首页弹出框图*/
  321. textbackground(LIGHTGRAY);
  322. clrscr();
  323. window(12,5,65,25);/*公共信息窗口*/
  324. textbackground(WHITE);
  325. textcolor(BLACK);
  326. clrscr();
  327. cprintf("ThisiscreditbyEdward.Flammel/r/n/r/n/r/n");
  328. cprintf("chinesename:xufangxin/r/n");
  329. cprintf("class:informationtechnology1/r/n");
  330. cprintf("number:080103011003/r/n");
  331. cprintf("e-mail:280599580@qq.com/r/n");
  332. cprintf("/r/nthankyouforyouuseit/r/n");
  333. cprintf("20.1.2010");
  334. getch();
  335. system("CLS");
  336. student();
  337. }
  338. case3:{system("CLS");
  339. student();}
  340. }
  341. };
  342. if(key_BOARD==KEY_M)
  343. {
  344. y_code=mark_file();/*成绩搜索函数*/
  345. switch(y_code)
  346. {
  347. case2:{
  348. window(X2,Y2,(X2+X2_LENTH),(Y2+Y2_LENTH));/*重绘首页弹出框图*/
  349. textbackground(LIGHTGRAY);
  350. clrscr();
  351. window(12,5,65,25);/*公共信息窗口*/
  352. textbackground(WHITE);
  353. textcolor(BLACK);
  354. clrscr();
  355. cprintf("HellowSearch");
  356. seekStudent();
  357. student();
  358. }
  359. case3:{system("CLS");
  360. student();}
  361. }
  362. };
  363. if(key_BOARD==KEY_S)
  364. {
  365. y_code=sign_up_file();/*活动报名函数*/
  366. switch(y_code)
  367. {
  368. case2:{
  369. window(X3,Y3,(X3+X3_LENTH),(Y3+Y3_LENTH));/*重绘首页弹出框图*/
  370. textbackground(LIGHTGRAY);
  371. clrscr();
  372. window(12,5,65,25);/*公共信息窗口*/
  373. textbackground(WHITE);
  374. textcolor(BLACK);
  375. clrscr();
  376. listClass();
  377. system("CLS");
  378. student();
  379. }
  380. case3:{
  381. window(X3,Y3,(X3+X3_LENTH),(Y3+Y3_LENTH));/*重绘首页弹出框图*/
  382. textbackground(LIGHTGRAY);
  383. clrscr();
  384. window(12,5,65,25);/*公共信息窗口*/
  385. textbackground(WHITE);
  386. textcolor(BLACK);
  387. clrscr();
  388. seekClass();
  389. system("CLS");
  390. student();
  391. }
  392. case4:{system("CLS");
  393. student();}
  394. }
  395. };
  396. if(key_BOARD==KEY_E)
  397. {
  398. exit(0);/*离开*/
  399. };
  400. }
  401. }
  402. /*教师类*/
  403. voidteacher()
  404. {
  405. inti,key_BOARD,x,y,l;
  406. inty_code;
  407. char*menu[]={"Head","Information","Mark","Sign_up","Exit"};
  408. /*主菜单各项*/
  409. char*red[]={"H","I","M","S","E"};
  410. window(1,1,80,25);
  411. textbackground(WHITE);
  412. clrscr();
  413. window(1,1,80,1);
  414. gotoxy(8,1);
  415. for(i=0,l=0;i<5;i++)
  416. {
  417. textcolor(BLACK);
  418. x=wherex();
  419. y=wherey();
  420. cprintf("%s",menu[i]);
  421. l=strlen(menu[i]);
  422. gotoxy(x,y);
  423. textcolor(RED);
  424. cprintf("%s",red[i]);
  425. x=x+l+8;
  426. gotoxy(x,y);
  427. }
  428. while(1)
  429. {
  430. key_BOARD=key();
  431. if(key_BOARD==KEY_H)
  432. {
  433. y_code=head_file_teacher();/*返回首页函数*/
  434. switch(y_code)
  435. {
  436. case2:{window(X8,Y8,(X8+X8_LENTH),(Y8+Y8_LENTH));/*重绘首页弹出框图*/
  437. textbackground(LIGHTGRAY);
  438. clrscr();
  439. window(22,7,65,25);/*公共信息窗口*/
  440. textbackground(WHITE);
  441. textcolor(BLACK);
  442. clrscr();
  443. cprintf("Notice/r/n");
  444. cprintf("1.Thisisnew,pleasewaitanything/r/n");/*公共信息*/
  445. cprintf("2.Thisisnew,pleasewaitanything/r/n");
  446. cprintf("3.Thisisnew,pleasewaitanything/r/n");
  447. cprintf("4.Thisisnew,pleasewaitanything/r/n");
  448. cprintf("5.Thisisnew,pleasewaitanything/r/n");
  449. cprintf("6.Thisisnew,pleasewaitanything/r/n");
  450. cprintf("7.Thisisnew,pleasewaitanything/r/n");
  451. cprintf("8.Thisisnew,pleasewaitanything/r/n");
  452. cprintf("9.Thisisnew,pleasewaitanything/r/n/r/n");
  453. cprintf("Youchoiceis");/*公共信息查询*/
  454. getchar();
  455. cprintf("/r/nPleasewaititcompete");
  456. getch();
  457. system("CLS");
  458. teacher();}
  459. case3:{system("CLS");
  460. teacher();}
  461. }
  462. };
  463. if(key_BOARD==KEY_I)
  464. {
  465. y_code=information_file_teacher();/*用户信息函数*/
  466. switch(y_code)
  467. {
  468. case2:{
  469. window(X5,Y5,(X5+X5_LENTH),(Y5+Y5_LENTH));/*重绘首页弹出框图*/
  470. textbackground(LIGHTGRAY);
  471. clrscr();
  472. window(12,5,65,25);/*公共信息窗口*/
  473. textbackground(WHITE);
  474. textcolor(BLACK);
  475. clrscr();
  476. cprintf("ThisiscreditbyEdward.Flammel/r/n/r/n/r/n");
  477. cprintf("chinesename:xufangxin/r/n");
  478. cprintf("class:informationtechnology1/r/n");
  479. cprintf("number:080103011003/r/n");
  480. cprintf("e-mail:280599580@qq.com/r/n");
  481. cprintf("/r/nthankyouforyouuseit/r/n");
  482. cprintf("20.1.2010");
  483. getch();
  484. system("CLS");
  485. teacher();
  486. }
  487. case3:{system("CLS");
  488. teacher();}
  489. }};
  490. if(key_BOARD==KEY_M)
  491. {
  492. y_code=mark_file_teacher();/*成绩搜索函数*/
  493. switch(y_code)
  494. {
  495. case2:{
  496. window(X6,Y6,(X6+X6_LENTH),(Y6+Y6_LENTH));/*重绘首页弹出框图*/
  497. textbackground(LIGHTGRAY);
  498. clrscr();
  499. window(12,5,65,25);/*公共信息窗口*/
  500. textbackground(WHITE);
  501. textcolor(BLACK);
  502. clrscr();
  503. inputStudents();
  504. system("CLS");
  505. teacher();
  506. }
  507. case3:{
  508. window(X6,Y6,(X6+X6_LENTH),(Y6+Y6_LENTH));/*重绘首页弹出框图*/
  509. textbackground(LIGHTGRAY);
  510. clrscr();
  511. window(12,5,65,25);/*公共信息窗口*/
  512. textbackground(WHITE);
  513. textcolor(BLACK);
  514. clrscr();
  515. queryStudents();
  516. getch();
  517. system("CLS");
  518. teacher();
  519. }
  520. case4:{
  521. window(X6,Y6,(X6+X6_LENTH),(Y6+Y6_LENTH));/*重绘首页弹出框图*/
  522. textbackground(LIGHTGRAY);
  523. clrscr();
  524. window(12,5,65,25);/*公共信息窗口*/
  525. textbackground(WHITE);
  526. textcolor(BLACK);
  527. clrscr();
  528. modifyStudent();
  529. system("CLS");
  530. teacher();
  531. }
  532. case5:{
  533. window(X6,Y6,(X6+X6_LENTH),(Y6+Y6_LENTH));/*重绘首页弹出框图*/
  534. textbackground(LIGHTGRAY);
  535. clrscr();
  536. window(12,5,65,25);/*公共信息窗口*/
  537. textbackground(WHITE);
  538. textcolor(BLACK);
  539. clrscr();
  540. deleteStudent();
  541. system("CLS");
  542. teacher();
  543. }
  544. case6:{
  545. window(X6,Y6,(X6+X6_LENTH),(Y6+Y6_LENTH));/*重绘首页弹出框图*/
  546. textbackground(LIGHTGRAY);
  547. clrscr();
  548. window(12,5,65,25);/*公共信息窗口*/
  549. textbackground(WHITE);
  550. textcolor(BLACK);
  551. clrscr();
  552. summerizeStudent();
  553. system("CLS");
  554. teacher();
  555. }
  556. case7:{system("CLS");
  557. teacher();}
  558. }
  559. };
  560. if(key_BOARD==KEY_S)
  561. {
  562. y_code=sign_up_file_teacher();/*活动报名函数*/
  563. switch(y_code)
  564. {
  565. case2:{
  566. window(X7,Y7,(X7+X7_LENTH),(Y7+Y7_LENTH));/*重绘首页弹出框图*/
  567. textbackground(LIGHTGRAY);
  568. clrscr();
  569. window(12,5,65,25);/*公共信息窗口*/
  570. textbackground(WHITE);
  571. textcolor(BLACK);
  572. clrscr();
  573. inputclass();
  574. system("CLS");
  575. teacher();
  576. }
  577. case3:{
  578. window(X7,Y7,(X7+X7_LENTH),(Y7+Y7_LENTH));/*重绘首页弹出框图*/
  579. textbackground(LIGHTGRAY);
  580. clrscr();
  581. window(12,5,65,25);/*公共信息窗口*/
  582. textbackground(WHITE);
  583. textcolor(BLACK);
  584. clrscr();
  585. deleteClass();
  586. system("CLS");
  587. teacher();
  588. }
  589. case4:{
  590. window(X7,Y7,(X7+X7_LENTH),(Y7+Y7_LENTH));/*重绘首页弹出框图*/
  591. textbackground(LIGHTGRAY);
  592. clrscr();
  593. window(12,5,65,25);/*公共信息窗口*/
  594. textbackground(WHITE);
  595. textcolor(BLACK);
  596. clrscr();
  597. listClass();
  598. system("CLS");
  599. teacher();
  600. }
  601. case5:{
  602. window(X7,Y7,(X7+X7_LENTH),(Y7+Y7_LENTH));/*重绘首页弹出框图*/
  603. textbackground(LIGHTGRAY);
  604. clrscr();
  605. window(12,5,65,25);/*公共信息窗口*/
  606. textbackground(WHITE);
  607. textcolor(BLACK);
  608. clrscr();
  609. seekClass();
  610. system("CLS");
  611. teacher();
  612. }
  613. case6:{system("CLS");
  614. teacher();}
  615. }
  616. };
  617. if(key_BOARD==KEY_E)
  618. {
  619. exit(0);/*离开*/
  620. };
  621. }
  622. }
  623. /*访客类*/
  624. voidguest()
  625. {
  626. inti,key_BOARD,x,y,l;
  627. inty_code;
  628. char*menu[]={"Head","","","","Exit"};
  629. /*主菜单各项*/
  630. char*red[]={"H","","","","E"};
  631. window(1,1,80,25);
  632. textbackground(WHITE);
  633. clrscr();
  634. window(1,1,80,1);
  635. gotoxy(8,1);
  636. for(i=0,l=0;i<5;i++)
  637. {
  638. textcolor(BLACK);
  639. x=wherex();
  640. y=wherey();
  641. cprintf("%s",menu[i]);
  642. l=strlen(menu[i]);
  643. gotoxy(x,y);
  644. textcolor(RED);
  645. cprintf("%s",red[i]);
  646. x=x+l+8;
  647. gotoxy(x,y);
  648. }
  649. while(1)
  650. {
  651. key_BOARD=key();
  652. if(key_BOARD==KEY_H)
  653. {
  654. y_code=head_file();/*返回首页函数*/
  655. switch(y_code)
  656. {
  657. case2:{window(X4,Y4,(X4+X4_LENTH),(Y4+Y4_LENTH));/*重绘首页弹出框图*/
  658. textbackground(LIGHTGRAY);
  659. clrscr();
  660. window(22,7,65,25);/*公共信息窗口*/
  661. textbackground(WHITE);
  662. textcolor(BLACK);
  663. clrscr();
  664. cprintf("Notice/r/n");
  665. cprintf("1.Thisisnew,pleasewaitanything/r/n");/*公共信息*/
  666. cprintf("2.Thisisnew,pleasewaitanything/r/n");
  667. cprintf("3.Thisisnew,pleasewaitanything/r/n");
  668. cprintf("4.Thisisnew,pleasewaitanything/r/n");
  669. cprintf("5.Thisisnew,pleasewaitanything/r/n");
  670. cprintf("6.Thisisnew,pleasewaitanything/r/n");
  671. cprintf("7.Thisisnew,pleasewaitanything/r/n");
  672. cprintf("8.Thisisnew,pleasewaitanything/r/n");
  673. cprintf("9.Thisisnew,pleasewaitanything/r/n/r/n");
  674. cprintf("Youchoiceis");/*公共信息查询*/
  675. getchar();
  676. cprintf("/r/nPleasewaititcompete");
  677. getch();
  678. system("CLS");
  679. guest();}
  680. case3:{system("CLS");
  681. guest();}
  682. }
  683. };
  684. if(key_BOARD==KEY_E)
  685. {
  686. exit(0);/*离开*/
  687. };
  688. }
  689. }
  690. /*学生用户信息函数*/
  691. intinformation_file()
  692. {
  693. intkey_BOARD,y,x,x1_lenth;
  694. window(X1,Y1,(X1+X1_LENTH),(Y1+Y1_LENTH));
  695. textbackground(LIGHTGRAY);
  696. clrscr();
  697. textcolor(WHITE);
  698. cprintf("1.Editor/r/n");
  699. cprintf("2.Back");
  700. x=X1;
  701. y=Y1;
  702. x1_lenth=X1_LENTH;
  703. nowbar_file(x,y,x1_lenth);
  704. gotoxy(1,1);
  705. for(;key_BOARD!=KEY_ENTER;)
  706. {
  707. key_BOARD=key();
  708. switch(key_BOARD){
  709. caseKEY_DOWN:{
  710. ++y;
  711. if(y==(Y1+Y1_LENTH+1))y=Y1;
  712. nowbar_file(x,y,x1_lenth);
  713. if(y!=Y1)nowbardown_file(x,y,x1_lenth);
  714. elsenowbardown_file(x,Y1+Y1_LENTH+1,x1_lenth);
  715. gotoxy(1,(y-Y1+1));
  716. break;}
  717. caseKEY_UP:{
  718. --y;
  719. if(y==(Y1-1))y=Y1+Y1_LENTH;
  720. nowbar_file(x,y,x1_lenth);
  721. if(y!=(Y1+Y1_LENTH))nowbarup_file(x,y,x1_lenth);
  722. elsenowbarup_file(x,Y1-1,x1_lenth);
  723. gotoxy(1,(y-Y1+1));
  724. break;}
  725. }
  726. };
  727. returny;
  728. }
  729. voidnowbar_file(intx,inty,intz)
  730. {
  731. inti;
  732. typedefstructtextl_struct
  733. {
  734. unsignedcharch;
  735. unsignedcharattr;
  736. }texel;
  737. texelt;
  738. for(i=x;i<=x+z;i++)
  739. {
  740. gettext(i,y,i,y,&t);
  741. t.attr=(WHITE<<4)+BLACK;
  742. puttext(i,y,i,y,&t);
  743. };
  744. return;
  745. }
  746. voidnowbardown_file(intx,inty,intz)
  747. {
  748. inti;
  749. typedefstructtextl_struct
  750. {
  751. unsignedcharch;
  752. unsignedcharattr;
  753. }texel;
  754. texelt;
  755. y--;
  756. for(i=x;i<=x+z;i++)
  757. {
  758. gettext(i,y,i,y,&t);
  759. t.attr=(LIGHTGRAY<<4)+WHITE;
  760. puttext(i,y,i,y,&t);
  761. };
  762. return;
  763. }
  764. voidnowbarup_file(intx,inty,intz)
  765. {
  766. inti;
  767. typedefstructtextl_struct
  768. {
  769. unsignedcharch;
  770. unsignedcharattr;
  771. }texel;
  772. texelt;
  773. y++;
  774. for(i=x;i<=x+z;i++)
  775. {
  776. gettext(i,y,i,y,&t);
  777. t.attr=(LIGHTGRAY<<4)+WHITE;
  778. puttext(i,y,i,y,&t);
  779. };
  780. return;
  781. }
  782. /*学生成绩搜索函数*/
  783. intmark_file()
  784. {
  785. intkey_BOARD,y,x,x2_lenth;
  786. window(X2,Y2,(X2+X2_LENTH),(Y2+Y2_LENTH));
  787. textbackground(LIGHTGRAY);
  788. clrscr();
  789. textcolor(WHITE);
  790. cprintf("1.Search/r/n");
  791. cprintf("2.Back");
  792. x=X2;
  793. y=Y2;
  794. x2_lenth=X2_LENTH;
  795. nowbar_file(x,y,x2_lenth);
  796. gotoxy(1,1);
  797. for(;key_BOARD!=KEY_ENTER;)
  798. {
  799. key_BOARD=key();
  800. switch(key_BOARD){
  801. caseKEY_DOWN:{
  802. ++y;
  803. if(y==(Y2+Y2_LENTH+1))y=Y2;
  804. nowbar_file(x,y,x2_lenth);
  805. if(y!=Y2)nowbardown_file(x,y,x2_lenth);
  806. elsenowbardown_file(x,Y2+Y2_LENTH+1,x2_lenth);
  807. gotoxy(1,(y-Y2+1));
  808. break;}
  809. caseKEY_UP:{
  810. --y;
  811. if(y==(Y2-1))y=Y2+Y2_LENTH;
  812. nowbar_file(x,y,x2_lenth);
  813. if(y!=(Y2+Y2_LENTH))nowbarup_file(x,y,x2_lenth);
  814. elsenowbarup_file(x,Y2-1,x2_lenth);
  815. gotoxy(1,(y-Y2+1));
  816. break;}
  817. }
  818. };
  819. returny;
  820. }
  821. /*学生活动报名函数*/
  822. intsign_up_file()
  823. {
  824. intkey_BOARD,y,x,x3_lenth;
  825. window(X3,Y3,(X3+X3_LENTH),(Y3+Y3_LENTH));
  826. textbackground(LIGHTGRAY);
  827. clrscr();
  828. textcolor(WHITE);
  829. cprintf("1.List/r/n");
  830. cprintf("2.Seek/r/n");
  831. cprintf("3.Back");
  832. x=X3;
  833. y=Y3;
  834. x3_lenth=X3_LENTH;
  835. nowbar_file(x,y,x3_lenth);
  836. gotoxy(1,1);
  837. for(;key_BOARD!=KEY_ENTER;)
  838. {
  839. key_BOARD=key();
  840. switch(key_BOARD){
  841. caseKEY_DOWN:{
  842. ++y;
  843. if(y==(Y3+Y3_LENTH+1))y=Y3;
  844. nowbar_file(x,y,x3_lenth);
  845. if(y!=Y3)nowbardown_file(x,y,x3_lenth);
  846. elsenowbardown_file(x,Y3+Y3_LENTH+1,x3_lenth);
  847. gotoxy(1,(y-Y3+1));
  848. break;}
  849. caseKEY_UP:{
  850. --y;
  851. if(y==(Y3-1))y=Y3+Y3_LENTH;
  852. nowbar_file(x,y,x3_lenth);
  853. if(y!=(Y3+Y3_LENTH))nowbarup_file(x,y,x3_lenth);
  854. elsenowbarup_file(x,Y3-1,x3_lenth);
  855. gotoxy(1,(y-Y3+1));
  856. break;}
  857. }
  858. };
  859. returny;
  860. }
  861. /*学生返回首页函数*/
  862. inthead_file()
  863. {
  864. intkey_BOARD,y,x,x4_lenth;
  865. window(X4,Y4,(X4+X4_LENTH),(Y4+Y4_LENTH));
  866. textbackground(LIGHTGRAY);
  867. clrscr();
  868. textcolor(WHITE);
  869. cprintf("1.Main/r/n");
  870. cprintf("2.Back");
  871. x=X4;
  872. y=Y4;
  873. x4_lenth=X4_LENTH;
  874. nowbar_file(x,y,x4_lenth);
  875. gotoxy(1,1);
  876. for(;key_BOARD!=KEY_ENTER;)
  877. {
  878. key_BOARD=key();
  879. switch(key_BOARD){
  880. caseKEY_DOWN:{
  881. ++y;
  882. if(y==(Y4+Y4_LENTH+1))y=Y4;
  883. nowbar_file(x,y,x4_lenth);
  884. if(y!=Y4)nowbardown_file(x,y,x4_lenth);
  885. elsenowbardown_file(x,Y4+Y4_LENTH+1,x4_lenth);
  886. gotoxy(1,(y-Y4+1));
  887. break;}
  888. caseKEY_UP:{
  889. --y;
  890. if(y==(Y4-1))y=Y4+Y4_LENTH;
  891. nowbar_file(x,y,x4_lenth);
  892. if(y!=(Y4+Y4_LENTH))nowbarup_file(x,y,x4_lenth);
  893. elsenowbarup_file(x,Y4-1,x4_lenth);
  894. gotoxy(1,(y-Y4+1));
  895. break;}
  896. }
  897. };
  898. returny;
  899. }
  900. /*教师用户信息函数*/
  901. intinformation_file_teacher()
  902. {
  903. intkey_BOARD,y,x,x5_lenth;
  904. window(X5,Y5,(X5+X5_LENTH),(Y5+Y5_LENTH));
  905. textbackground(LIGHTGRAY);
  906. clrscr();
  907. textcolor(WHITE);
  908. cprintf("1.Editor/r/n");
  909. cprintf("2.Back");
  910. x=X5;
  911. y=Y5;
  912. x5_lenth=X5_LENTH;
  913. nowbar_file(x,y,x5_lenth);
  914. gotoxy(1,1);
  915. for(;key_BOARD!=KEY_ENTER;)
  916. {
  917. key_BOARD=key();
  918. switch(key_BOARD){
  919. caseKEY_DOWN:{
  920. ++y;
  921. if(y==(Y5+Y5_LENTH+1))y=Y5;
  922. nowbar_file(x,y,x5_lenth);
  923. if(y!=Y5)nowbardown_file(x,y,x5_lenth);
  924. elsenowbardown_file(x,Y5+Y5_LENTH+1,x5_lenth);
  925. gotoxy(1,(y-Y5+1));
  926. break;}
  927. caseKEY_UP:{
  928. --y;
  929. if(y==(Y5-1))y=Y5+Y5_LENTH;
  930. nowbar_file(x,y,x5_lenth);
  931. if(y!=(Y5+Y5_LENTH))nowbarup_file(x,y,x5_lenth);
  932. elsenowbarup_file(x,Y5-1,x5_lenth);
  933. gotoxy(1,(y-Y5+1));
  934. break;}
  935. }
  936. };
  937. returny;
  938. }
  939. /*教师成绩搜索函数*/
  940. intmark_file_teacher()
  941. {
  942. intkey_BOARD,y,x,x6_lenth;
  943. window(X6,Y6,(X6+X6_LENTH),(Y6+Y6_LENTH));
  944. textbackground(LIGHTGRAY);
  945. clrscr();
  946. textcolor(WHITE);
  947. cprintf("1.Input/r/n");
  948. cprintf("2.List/r/n");
  949. cprintf("3.Change/r/n");
  950. cprintf("4.Delete/r/n");
  951. cprintf("5.Sum/r/n");
  952. cprintf("6.Back");
  953. x=X6;
  954. y=Y6;
  955. x6_lenth=X6_LENTH;
  956. nowbar_file(x,y,x6_lenth);
  957. gotoxy(1,1);
  958. for(;key_BOARD!=KEY_ENTER;)
  959. {
  960. key_BOARD=key();
  961. switch(key_BOARD){
  962. caseKEY_DOWN:{
  963. ++y;
  964. if(y==(Y6+Y6_LENTH+1))y=Y6;
  965. nowbar_file(x,y,x6_lenth);
  966. if(y!=Y6)nowbardown_file(x,y,x6_lenth);
  967. elsenowbardown_file(x,Y6+Y6_LENTH+1,x6_lenth);
  968. gotoxy(1,(y-Y6+1));
  969. break;}
  970. caseKEY_UP:{
  971. --y;
  972. if(y==(Y6-1))y=Y6+Y6_LENTH;
  973. nowbar_file(x,y,x6_lenth);
  974. if(y!=(Y6+Y6_LENTH))nowbarup_file(x,y,x6_lenth);
  975. elsenowbarup_file(x,Y6-1,x6_lenth);
  976. gotoxy(1,(y-Y6+1));
  977. break;}
  978. }
  979. };
  980. returny;
  981. }
  982. /*教师活动报名函数*/
  983. intsign_up_file_teacher()
  984. {
  985. intkey_BOARD,y,x,x7_lenth;
  986. window(X7,Y7,(X7+X7_LENTH),(Y7+Y7_LENTH));
  987. textbackground(LIGHTGRAY);
  988. clrscr();
  989. textcolor(WHITE);
  990. cprintf("1.Input/r/n");
  991. cprintf("2.Delete/r/n");
  992. cprintf("3.List/r/n");
  993. cprintf("4.Seek/r/n");
  994. cprintf("5.Back");
  995. x=X7;
  996. y=Y7;
  997. x7_lenth=X7_LENTH;
  998. nowbar_file(x,y,x7_lenth);
  999. gotoxy(1,1);
  1000. for(;key_BOARD!=KEY_ENTER;)
  1001. {
  1002. key_BOARD=key();
  1003. switch(key_BOARD){
  1004. caseKEY_DOWN:{
  1005. ++y;
  1006. if(y==(Y7+Y7_LENTH+1))y=Y7;
  1007. nowbar_file(x,y,x7_lenth);
  1008. if(y!=Y7)nowbardown_file(x,y,x7_lenth);
  1009. elsenowbardown_file(x,Y7+Y7_LENTH+1,x7_lenth);
  1010. gotoxy(1,(y-Y7+1));
  1011. break;}
  1012. caseKEY_UP:{
  1013. --y;
  1014. if(y==(Y7-1))y=Y7+Y7_LENTH;
  1015. nowbar_file(x,y,x7_lenth);
  1016. if(y!=(Y7+Y7_LENTH))nowbarup_file(x,y,x7_lenth);
  1017. elsenowbarup_file(x,Y7-1,x7_lenth);
  1018. gotoxy(1,(y-Y7+1));
  1019. break;}
  1020. }
  1021. };
  1022. returny;
  1023. }
  1024. /*教师返回首页函数*/
  1025. inthead_file_teacher()
  1026. {
  1027. intkey_BOARD,y,x,x8_lenth;
  1028. window(X8,Y8,(X8+X8_LENTH),(Y8+Y8_LENTH));
  1029. textbackground(LIGHTGRAY);
  1030. clrscr();
  1031. textcolor(WHITE);
  1032. cprintf("1.Main/r/n");
  1033. cprintf("2.Back");
  1034. x=X8;
  1035. y=Y8;
  1036. x8_lenth=X8_LENTH;
  1037. nowbar_file(x,y,x8_lenth);
  1038. gotoxy(1,1);
  1039. for(;key_BOARD!=KEY_ENTER;)
  1040. {
  1041. key_BOARD=key();
  1042. switch(key_BOARD){
  1043. caseKEY_DOWN:{
  1044. ++y;
  1045. if(y==(Y8+Y8_LENTH+1))y=Y8;
  1046. nowbar_file(x,y,x8_lenth);
  1047. if(y!=Y8)nowbardown_file(x,y,x8_lenth);
  1048. elsenowbardown_file(x,Y8+Y8_LENTH+1,x8_lenth);
  1049. gotoxy(1,(y-Y8+1));
  1050. break;}
  1051. caseKEY_UP:{
  1052. --y;
  1053. if(y==(Y8-1))y=Y8+Y8_LENTH;
  1054. nowbar_file(x,y,x8_lenth);
  1055. if(y!=(Y8+Y8_LENTH))nowbarup_file(x,y,x8_lenth);
  1056. elsenowbarup_file(x,Y8-1,x8_lenth);
  1057. gotoxy(1,(y-Y8+1));
  1058. break;}
  1059. }
  1060. };
  1061. returny;
  1062. }
  1063. /*成绩类具体功能函数*/
  1064. /*删除学生信息*/
  1065. voiddeleteStudent()
  1066. {
  1067. intid,i;
  1068. inttotal=0;
  1069. Students,*studentList;
  1070. FILE*file;
  1071. if((file=fopen("c://data.dat","rb"))==NULL)
  1072. printf("error");
  1073. else
  1074. {
  1075. /*计算文件总共有多少记录*/
  1076. fread(&s,sizeof(Student),1,file);
  1077. while(!feof(file))
  1078. {
  1079. total++;
  1080. fread(&s,sizeof(Student),1,file);
  1081. }
  1082. rewind(file);
  1083. /*为学生数组动态分配存储空间*/
  1084. studentList=(Student*)calloc(total,sizeof(Student));
  1085. /*将学生信息读入数组*/
  1086. for(i=0;i<total;i++)
  1087. {
  1088. fread(studentList+i,sizeof(Student),1,file);
  1089. }
  1090. fclose(file);
  1091. /*在数组中反复查找和删除学生*/
  1092. for(;;)
  1093. {
  1094. clrscr();
  1095. gotoxy(1,1);
  1096. printf("number(0-exit):");
  1097. scanf("%d",&id);
  1098. if(id==0)break;
  1099. for(i=0;i<total;i++)
  1100. {
  1101. if((studentList+i)->Sid==id)
  1102. {
  1103. break;
  1104. }
  1105. }
  1106. if(i<total)/*如果找到了要删除的学生*/
  1107. {
  1108. for(;i<total-1;i++)
  1109. {
  1110. /*用后一个学生覆盖前一个学生*/
  1111. *(studentList+i)=*(studentList+i+1);
  1112. }
  1113. total--;/*学生总数减1*/
  1114. }
  1115. gotoxy(1,2);
  1116. printf("delete!!");
  1117. getch();
  1118. }
  1119. /*重新将数组里的学生写入文件,注意total为学生总数*/
  1120. file=fopen("c://data.dat","wb");
  1121. for(i=0;i<total;i++)
  1122. {
  1123. fwrite(studentList+i,sizeof(Student),1,file);
  1124. }
  1125. free(studentList);
  1126. fclose(file);
  1127. }
  1128. }
  1129. /*统计学生信息*/
  1130. voidsummerizeStudent()
  1131. {
  1132. inttotal=0;
  1133. intmathHigh=0,mathLow=100,mathSum=0;
  1134. intchineseHigh=0,chineseLow=100,chineseSum=0;
  1135. intenglishHigh=0,englishLow=100,englishSum=0;
  1136. Students;
  1137. FILE*file;
  1138. if((file=fopen("c://data.dat","rb"))==NULL)
  1139. printf("error");
  1140. else
  1141. {
  1142. fread(&s,sizeof(Student),1,file);
  1143. while(!feof(file))
  1144. {
  1145. total++;
  1146. if(s.mathScores>mathHigh)
  1147. mathHigh=s.mathScores;
  1148. if(s.mathScores<mathLow)
  1149. mathLow=s.mathScores;
  1150. mathSum+=s.mathScores;
  1151. if(s.chineseScores>chineseHigh)
  1152. chineseHigh=s.chineseScores;
  1153. if(s.chineseScores<chineseLow)
  1154. chineseLow=s.chineseScores;
  1155. chineseSum+=s.chineseScores;
  1156. if(s.englishScores>englishHigh)
  1157. englishHigh=s.englishScores;
  1158. if(s.englishScores<englishLow)
  1159. englishLow=s.englishScores;
  1160. englishSum+=s.englishScores;
  1161. fread(&s,sizeof(Student),1,file);
  1162. }
  1163. gotoxy(1,1);
  1164. printf("Thereare%dstudents",total);
  1165. gotoxy(1,2);
  1166. printf("HighLessAverage/n");
  1167. if(total>0)
  1168. {
  1169. gotoxy(1,3);
  1170. printf("Math/t/t%d/t/t%d/t/t%d/n",mathHigh,mathLow,mathSum/total);
  1171. gotoxy(1,4);
  1172. printf("Chinese/t/t%d/t/t%d/t/t%d/n",chineseHigh,chineseLow,chineseSum/total);
  1173. gotoxy(1,5);
  1174. printf("English/t/t%d/t/t%d/t/t%d/n",englishHigh,englishLow,englishSum/total);
  1175. }
  1176. getch();
  1177. fclose(file);
  1178. }
  1179. }
  1180. /*修改学生信息*/
  1181. voidmodifyStudent()
  1182. {
  1183. intid;
  1184. intcount;
  1185. Students;
  1186. FILE*file;
  1187. charmodiValue[30];
  1188. intok;
  1189. if((file=fopen("c://data.dat","rb+"))==NULL)
  1190. printf("error");
  1191. else
  1192. {
  1193. for(;;)
  1194. {
  1195. clrscr();
  1196. gotoxy(1,1);
  1197. printf("number(0-exit):");
  1198. scanf("%d",&id);
  1199. if(id==0)break;
  1200. rewind(file);
  1201. ok=0;
  1202. count=0;
  1203. while(!feof(file))
  1204. {
  1205. fread(&s,sizeof(Student),1,file);
  1206. if(s.Sid==id)
  1207. {
  1208. ok=1;
  1209. break;
  1210. }
  1211. count++;
  1212. }
  1213. if(ok)
  1214. {
  1215. gotoxy(1,1);
  1216. printf("Pleasechange<NouseinputtheENTER>");
  1217. gotoxy(1,2);
  1218. printf("num(%d):",s.Sid);
  1219. rewind(stdin);
  1220. gets(modiValue);
  1221. if(strlen(modiValue)>0)
  1222. s.Sid=atoi(modiValue);
  1223. gotoxy(1,3);
  1224. printf("name(%s):",s.name);
  1225. gets(modiValue);
  1226. if(strlen(modiValue)>0)
  1227. strcpy(s.name,modiValue);
  1228. gotoxy(1,4);
  1229. printf("sex(1-m,2-f)(%d):",s.sex);
  1230. gets(modiValue);
  1231. if(strlen(modiValue)>0)
  1232. s.sex=atoi(modiValue);
  1233. gotoxy(1,5);
  1234. printf("class(%s):",s.className);
  1235. gets(modiValue);
  1236. if(strlen(modiValue)>0)
  1237. strcpy(s.className,modiValue);
  1238. gotoxy(1,6);
  1239. printf("math(%d):",s.mathScores);
  1240. gets(modiValue);
  1241. if(strlen(modiValue)>0)
  1242. s.mathScores=atoi(modiValue);
  1243. gotoxy(1,7);
  1244. printf("chinese(%d):",s.chineseScores);
  1245. gets(modiValue);
  1246. if(strlen(modiValue)>0)
  1247. s.chineseScores=atoi(modiValue);
  1248. gotoxy(1,8);
  1249. printf("english(%d):",s.englishScores);
  1250. gets(modiValue);
  1251. if(strlen(modiValue)>0)
  1252. s.englishScores=atoi(modiValue);
  1253. fseek(file,count*sizeof(Student),SEEK_SET);
  1254. fwrite(&s,sizeof(Student),1,file);
  1255. }
  1256. }
  1257. fclose(file);
  1258. }
  1259. }
  1260. /*输入学生信息*/
  1261. voidinputStudents(){
  1262. FILE*file;
  1263. Students;
  1264. if((file=fopen("c://data.dat","rb+"))==NULL)
  1265. {
  1266. file=fopen("c://data.dat","wb+");
  1267. }
  1268. while(!feof(file))/*这里,将读写头移动到文件结尾,以免覆盖上次的输入*/
  1269. {
  1270. fread(&s,sizeof(Student),1,file);
  1271. }
  1272. while(1)
  1273. {
  1274. gotoxy(1,1);
  1275. printf("number(0-exit):");
  1276. scanf("%d",&s.Sid);
  1277. if(s.Sid==0)break;
  1278. gotoxy(1,2);
  1279. printf("name:");
  1280. scanf("%s",s.name);
  1281. gotoxy(1,3);
  1282. printf("class:");
  1283. scanf("%s",s.className);
  1284. gotoxy(1,4);
  1285. printf("math:");
  1286. scanf("%d",&s.mathScores);
  1287. gotoxy(1,5);
  1288. printf("chinese:");
  1289. scanf("%d",&s.chineseScores);
  1290. gotoxy(1,6);
  1291. printf("english:");
  1292. scanf("%d",&s.englishScores);
  1293. fwrite(&s,sizeof(Student),1,file);
  1294. clrscr();
  1295. }
  1296. fclose(file);
  1297. }
  1298. /*显示文件中所有学生信息*/
  1299. voidqueryStudents()
  1300. {
  1301. FILE*file;
  1302. Students;
  1303. if(NULL==(file=fopen("c://data.dat","rb")))
  1304. cprintf("error");
  1305. else
  1306. {
  1307. fread(&s,sizeof(Student),1,file);
  1308. while(!feof(file))
  1309. {
  1310. dispStudent_queryStudents(s);
  1311. fread(&s,sizeof(Student),1,file);
  1312. }
  1313. fclose(file);
  1314. }
  1315. }
  1316. /*显示文件所用学生信息显示函数*/
  1317. voiddispStudent_queryStudents(Students)
  1318. {
  1319. staticinti_num=0;
  1320. gotoxy(1,(++i_num));
  1321. printf("num:%-15dname:%-12sclass:%-8s",s.Sid,s.name,s.className);
  1322. gotoxy(1,(++i_num));
  1323. printf("math:%-6dchinese:%-6denglish:%-6d",s.mathScores,s.chineseScores,s.englishScores);
  1324. }
  1325. /*学生信息显示函数*/
  1326. voiddispStudent(Students)
  1327. {
  1328. gotoxy(1,1);
  1329. printf("num:%-15dname:%-12sclass:%-8s",s.Sid,s.name,s.className);
  1330. gotoxy(1,2);
  1331. printf("math:%-6dchinese:%-6denglish:%-6d",s.mathScores,s.chineseScores,s.englishScores);
  1332. }
  1333. /*查找学生信息*/
  1334. voidseekStudent()
  1335. {
  1336. intid;
  1337. Students;
  1338. FILE*file;
  1339. intok;
  1340. if((file=fopen("c://data.dat","rb"))==NULL)
  1341. printf("error");
  1342. else
  1343. {
  1344. for(;;)
  1345. {
  1346. printf("number(0-exit):");
  1347. scanf("%d",&id);
  1348. if(id==0)break;
  1349. rewind(file);
  1350. ok=0;
  1351. while(!feof(file))
  1352. {
  1353. fread(&s,sizeof(Student),1,file);
  1354. if(s.Sid==id)
  1355. {
  1356. ok=1;
  1357. break;
  1358. }
  1359. }
  1360. if(ok)
  1361. {
  1362. dispStudent(s);
  1363. getch();
  1364. }
  1365. clrscr();
  1366. }
  1367. fclose(file);
  1368. }
  1369. }
  1370. /*选课类基本函数*/
  1371. /*删除课程信息*/
  1372. voiddeleteClass()
  1373. {
  1374. intid,i;
  1375. inttotal=0;
  1376. Classt,*ClassList;
  1377. FILE*file;
  1378. if((file=fopen("c://data1.dat","rb"))==NULL)
  1379. printf("error");
  1380. else
  1381. {
  1382. /*计算文件总共有多少记录*/
  1383. fread(&t,sizeof(Class),1,file);
  1384. while(!feof(file))
  1385. {
  1386. total++;
  1387. fread(&t,sizeof(Class),1,file);
  1388. }
  1389. rewind(file);
  1390. /*为课程数组动态分配存储空间*/
  1391. ClassList=(Class*)calloc(total,sizeof(Class));
  1392. /*将课程信息读入数组*/
  1393. for(i=0;i<total;i++)
  1394. {
  1395. fread(ClassList+i,sizeof(Class),1,file);
  1396. }
  1397. fclose(file);
  1398. /*在数组中反复查找和删除课程*/
  1399. for(;;)
  1400. {
  1401. gotoxy(1,1);
  1402. printf("class_num(0-exit):");
  1403. scanf("%d",&id);
  1404. if(id==0)break;
  1405. for(i=0;i<total;i++)
  1406. {
  1407. if((ClassList+i)->Sid==id)
  1408. {
  1409. break;
  1410. }
  1411. }
  1412. if(i<total)/*如果找到了要删除的课程*/
  1413. {
  1414. for(;i<total-1;i++)
  1415. {
  1416. /*用后一个学生覆盖前一个课程*/
  1417. *(ClassList+i)=*(ClassList+i+1);
  1418. }
  1419. total--;/*课程总数减1*/
  1420. }
  1421. gotoxy(1,2);
  1422. printf("delete!!");
  1423. getch();
  1424. clrscr();
  1425. }
  1426. /*重新将数组里的课程写入文件,注意total为课程总数*/
  1427. file=fopen("c://data1.dat","wb");
  1428. for(i=0;i<total;i++)
  1429. {
  1430. fwrite(ClassList+i,sizeof(Class),1,file);
  1431. }
  1432. free(ClassList);
  1433. fclose(file);
  1434. }
  1435. }
  1436. /*输入选课课程信息*/
  1437. voidinputclass(){
  1438. FILE*file;
  1439. Classt;
  1440. if((file=fopen("c://data1.dat","rb+"))==NULL)
  1441. {
  1442. file=fopen("c://data1.dat","wb+");
  1443. }
  1444. while(!feof(file))/*这里,将读写头移动到文件结尾,以免覆盖上次的输入*/
  1445. {
  1446. fread(&t,sizeof(Class),1,file);
  1447. }
  1448. while(1)
  1449. {
  1450. gotoxy(1,1);
  1451. printf("class_num(0-exit):");
  1452. scanf("%d",&t.Sid);
  1453. if(t.Sid==0)break;
  1454. gotoxy(1,2);
  1455. printf("teacher:");
  1456. scanf("%s",t.name);
  1457. gotoxy(1,3);
  1458. printf("class:");;
  1459. scanf("%s",t.class);
  1460. gotoxy(1,4);
  1461. printf("credit:");
  1462. scanf("%s",t.credit);
  1463. gotoxy(1,5);
  1464. printf("max_room:");
  1465. scanf("%d",&t.max_room);
  1466. gotoxy(1,6);
  1467. printf("exam_mode:");
  1468. scanf("%s",t.exam_mode);
  1469. fwrite(&t,sizeof(Class),1,file);
  1470. clrscr();
  1471. }
  1472. fclose(file);
  1473. }
  1474. /*显示文件中所有课程信息*/
  1475. voidlistClass()
  1476. {
  1477. FILE*file;
  1478. Classt;
  1479. if(NULL==(file=fopen("c://data1.dat","rb")))
  1480. printf("不能打开文件!/n");
  1481. else
  1482. {
  1483. fread(&t,sizeof(Class),1,file);
  1484. while(!feof(file))
  1485. {
  1486. dispClass_list(t);
  1487. fread(&t,sizeof(Class),1,file);
  1488. }
  1489. getch();
  1490. fclose(file);
  1491. }
  1492. }
  1493. /*显示文件所用课程信息显示函数*/
  1494. voiddispClass_list(Classt)
  1495. {
  1496. staticinti_num1=0;
  1497. gotoxy(1,++i_num1);
  1498. printf("class_num:%-9dteacher:%-10sclass:%-8s",t.Sid,t.name,t.class);
  1499. gotoxy(1,++i_num1);
  1500. printf("credit:%-6smax_room:%-6dexam_mode:%-6s",t.credit,t.max_room,t.exam_mode);
  1501. }
  1502. /*选课信息显示函数*/
  1503. voiddispClass(Classt)
  1504. {
  1505. gotoxy(1,1);
  1506. printf("class_num:%-9dteacher:%-10sclass:%-8s",t.Sid,t.name,t.class);
  1507. gotoxy(1,2);
  1508. printf("credit:%-6smax_room:%-6dexam_mode:%-6s",t.credit,t.max_room,t.exam_mode);
  1509. }
  1510. /*课程搜索函数*/
  1511. voidseekClass()
  1512. {
  1513. intid;
  1514. Classt;
  1515. FILE*file;
  1516. intok;
  1517. if((file=fopen("c://data1.dat","rb"))==NULL)
  1518. printf("error");
  1519. else
  1520. {
  1521. for(;;)
  1522. {
  1523. gotoxy(1,1);
  1524. printf("class_num(0-exit):");
  1525. scanf("%d",&id);
  1526. if(id==0)break;
  1527. rewind(file);
  1528. ok=0;
  1529. while(!feof(file))
  1530. {
  1531. fread(&t,sizeof(Class),1,file);
  1532. if(t.Sid==id)
  1533. {
  1534. ok=1;
  1535. break;
  1536. }
  1537. }
  1538. if(ok)
  1539. {
  1540. dispClass(t);
  1541. getch();
  1542. }
  1543. clrscr();
  1544. }
  1545. fclose(file);
  1546. }
  1547. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值