当前位置:   article > 正文

Easyx日程管理平台 C语言图形化开发_easyx图形库创建顺序表

easyx图形库创建顺序表

大家在大一刚接触C语言的时候一定和CMD控制台打了不少交道,而当我们想学习图形化的开发时Easyx的简单易学就很好的帮到了我们。

简易的可视化界面,日程的创建,离线存储,简单的密码加密校验。

Easyx非常 适合C语言初学者进行图形化开发。

兼具日常模式和黑夜模式两套UI。

疾锋开发组及Coolwanders (github.com)https://github.com/Coolwander

增删改查功能  

  1. /*参数传递时的内存分配与graphics.h不兼容,改用存储到文件进行二级传递*/
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<graphics.h>
  5. #include<easyx.h>
  6. #include<Windows.h>
  7. #include<conio.h>
  8. #include<math.h>
  9. #include<time.h>
  10. #include<io.h>
  11. #include <direct.h>
  12. #include<locale.h>
  13. //全局定义
  14. int Done = 0;//黑夜模式判断
  15. int Max = 0;//欢迎提示判断
  16. int Nt = 0;//新增事件计数
  17. int state[16];//记录完成状态
  18. int Q = 0;//均为绘图时的变量
  19. int W = 0;
  20. int E = 0;
  21. int R = 0;
  22. int T = 0;
  23. int Y = 0;
  24. int N = 0;
  25. int M = 0;
  26. int Info = 0;
  27. FILE* fp;//文件操作(Myaccount.txt) 用户密码
  28. FILE* fp1;//文件操作(Data.txt) 用户数据
  29. FILE* fp2;//文件操作(Name.txt) 用户姓名
  30. FILE* fp3;//文件操作(State.txt) 完成状态
  31. wchar_t s[128];//宽字符集下的用户输入数据
  32. wchar_t e[128]; /* 关于宽窄字符集参见 https://blog.csdn.net/jaj2003/article/details/109802900 */
  33. wchar_t g[128];
  34. // 创建顺序表
  35. typedef struct Node
  36. {
  37. wchar_t data1[16][128];
  38. wchar_t data2[16][128];
  39. wchar_t goal[16][128];
  40. wchar_t state[16][128];
  41. }Sqlist;
  42. //声明 /*函数声明的作用简而言之就是为了让编译器认识这些自定义函数,不声明的可能会出现编译不通过或者多个页面间无法跳转的问题*/
  43. void DataSave();
  44. void FileCreate(void);
  45. void CreateFolder(void);
  46. void Draw(void);
  47. void Stupage(void);
  48. void Teapage(void);
  49. void Stuname(void);
  50. void Title(void);
  51. void StateSave();
  52. void New();
  53. void Look(void);
  54. void Submit(void);
  55. void Help(void);
  56. void About(void);
  57. void Did(void);
  58. void UND(void);
  59. void InfoGet();
  60. void InfoOut();
  61. int main();
  62. void StateSave()
  63. {
  64. fp3 = fopen("D:\\TimePlan\\State.txt", "w");
  65. for (int i = 1; i < 16; i++)
  66. {
  67. fprintf(fp3, "%d\n", state[i]);
  68. }
  69. fclose(fp3);
  70. }
  71. void InfoGet() /*获取用户输入的内容*/
  72. {
  73. InputBox(s, 128, L"请输入起始时间");
  74. outtextxy(40, Info, s);
  75. InputBox(e, 128, L"请输入结束时间");
  76. outtextxy(107, Info, e);
  77. InputBox(g, 128, L"请输入内容");
  78. outtextxy(233, Info, g);
  79. }
  80. void DataSave() /*将用户输入的数据写入到Data.txt*/
  81. {
  82. fputws(s, fp1); fputws(L"\n", fp1);
  83. fputws(e, fp1); fputws(L"\n", fp1);
  84. fputws(g, fp1); fputws(L"\n", fp1);
  85. }
  86. //新建日程
  87. void New()
  88. {
  89. setlocale(LC_ALL, ""); /*对于宽字符来说,无论输出到哪里,都要设置unicode区域,否则会导致运行时编码转换失败,会发现输出乱码*/
  90. settextcolor(WHITE);
  91. settextstyle(30, 0, L"楷体");
  92. fp1 = fopen("D:\\TimePlan\\Data.txt", "w");
  93. fclose(fp1);
  94. fp1 = fopen("D:\\TimePlan\\Data.txt", "a+");
  95. if (Nt == 0)
  96. {
  97. Info = 110;InfoGet();DataSave();
  98. }
  99. if (Nt == 1)
  100. {
  101. Info = 160;InfoGet();DataSave();
  102. }
  103. if (Nt == 2)
  104. {
  105. Info = 210;InfoGet();DataSave();
  106. }
  107. if (Nt == 3)
  108. {
  109. Info = 260; InfoGet(); DataSave();
  110. }
  111. if (Nt == 4)
  112. {
  113. Info = 310; InfoGet(); DataSave();
  114. }
  115. if (Nt == 5)
  116. {
  117. Info = 360; InfoGet(); DataSave();
  118. }
  119. if (Nt == 6)
  120. {
  121. Info = 410; InfoGet(); DataSave();
  122. }
  123. if (Nt == 7)
  124. {
  125. Info = 460; InfoGet(); DataSave();
  126. }
  127. if (Nt == 8)
  128. {
  129. Info = 510; InfoGet(); DataSave();
  130. }
  131. if (Nt == 9)
  132. {
  133. Info = 560; InfoGet(); DataSave();
  134. }
  135. if (Nt == 10)
  136. {
  137. Info = 610; InfoGet(); DataSave();
  138. }
  139. if (Nt == 11)
  140. {
  141. Info = 660; InfoGet(); DataSave();
  142. }
  143. if (Nt == 12)
  144. {
  145. Info = 710; InfoGet(); DataSave();
  146. }
  147. if (Nt == 13)
  148. {
  149. Info = 760; InfoGet(); DataSave();
  150. }
  151. if (Nt == 14)
  152. {
  153. Info = 810; InfoGet(); DataSave();
  154. }
  155. if (Nt > 14)
  156. {
  157. HWND hwnd = GetHWnd();
  158. MessageBox(hwnd, L"15个日程都不够你写呀?那我也无能为力了。", L"提示", MB_OK);
  159. }
  160. }
  161. //查看日程
  162. void Look()
  163. {
  164. if (Nt == 0)
  165. {
  166. HWND hwnd = GetHWnd();
  167. MessageBox(hwnd, L"请先新建日程!", L"提示", MB_OK);
  168. }
  169. else
  170. {
  171. HWND hwnd = GetHWnd();
  172. MessageBox(hwnd, L"您的日程看起来一切正常。", L"提示", MB_OK);
  173. }
  174. }
  175. //提交日程
  176. void Submit()
  177. {
  178. if (Nt == 0)
  179. {
  180. HWND hwnd = GetHWnd();
  181. MessageBox(hwnd, L"请先新建日程!", L"提示", MB_OK);
  182. }
  183. else
  184. {
  185. StateSave();
  186. HWND hwnd = GetHWnd();
  187. MessageBox(hwnd, L"您的日程已经提交,请等待管理员审核。", L"提示", MB_OK);
  188. }
  189. }
  190. //帮助
  191. void Help()
  192. {
  193. ShellExecuteA(0, "open", "https://www.baidu.com/", 0, 0, 1);
  194. }
  195. //关于
  196. void About()
  197. {
  198. HWND hwnd = GetHWnd();
  199. MessageBox(hwnd, L"GaolNiu开发小组版权所有!最后编辑于2022年5月21日。", L"关于", MB_OK);
  200. }
  201. //用户类型的判断
  202. void userpage()
  203. {
  204. HWND hwnd = GetHWnd();
  205. int wet = MessageBox(hwnd, L"学生端登录请点击确定,教师端登录请点击取消。", L"提示", MB_OKCANCEL);
  206. if (wet == IDOK)
  207. {
  208. Stupage();
  209. }
  210. if(wet == IDCANCEL)
  211. {
  212. Teapage();
  213. }
  214. }
  215. //标题
  216. void Title()
  217. {
  218. wchar_t str[] = { L"今天的日程" };
  219. settextcolor(WHITE);
  220. settextstyle(30, 0, L"楷体");
  221. outtextxy(640, 10, str);
  222. }
  223. //绘制学生页面
  224. void Draw(void)
  225. {
  226. fillroundrect(10, 70, 150, 100, 10, 10);
  227. outtextxy(46, 78, L"时间(小时)");
  228. roundrect(10, 110, 150, 140, 10, 10);
  229. roundrect(10, 160, 150, 190, 10, 10);
  230. roundrect(10, 210, 150, 240, 10, 10);
  231. roundrect(10, 260, 150, 290, 10, 10);
  232. roundrect(10, 310, 150, 340, 10, 10);
  233. roundrect(10, 360, 150, 390, 10, 10);
  234. roundrect(10, 410, 150, 440, 10, 10);
  235. roundrect(10, 460, 150, 490, 10, 10);
  236. roundrect(10, 510, 150, 540, 10, 10);
  237. roundrect(10, 560, 150, 590, 10, 10);
  238. roundrect(10, 610, 150, 640, 10, 10);
  239. roundrect(10, 660, 150, 690, 10, 10);
  240. roundrect(10, 710, 150, 740, 10, 10);
  241. roundrect(10, 760, 150, 790, 10, 10);
  242. roundrect(10, 810, 150, 840, 10, 10);
  243. settextcolor(RGB(0,245,255));
  244. outtextxy(75, 120, L"到");
  245. outtextxy(75, 170, L"到");
  246. outtextxy(75, 220, L"到");
  247. outtextxy(75, 270, L"到");
  248. outtextxy(75, 320, L"到");
  249. outtextxy(75, 370, L"到");
  250. outtextxy(75, 420, L"到");
  251. outtextxy(75, 470, L"到");
  252. outtextxy(75, 520, L"到");
  253. outtextxy(75, 570, L"到");
  254. outtextxy(75, 620, L"到");
  255. outtextxy(75, 670, L"到");
  256. outtextxy(75, 720, L"到");
  257. outtextxy(75, 770, L"到");
  258. outtextxy(75, 820, L"到");
  259. fillroundrect(230, 70, 930, 100, 10, 10);
  260. settextcolor(BLACK);
  261. outtextxy(545, 78, L"目标");
  262. roundrect(230, 110, 930, 140, 10, 10);
  263. roundrect(230, 160, 930, 190, 10, 10);
  264. roundrect(230, 210, 930, 240, 10, 10);
  265. roundrect(230, 260, 930, 290, 10, 10);
  266. roundrect(230, 310, 930, 340, 10, 10);
  267. roundrect(230, 360, 930, 390, 10, 10);
  268. roundrect(230, 410, 930, 440, 10, 10);
  269. roundrect(230, 460, 930, 490, 10, 10);
  270. roundrect(230, 510, 930, 540, 10, 10);
  271. roundrect(230, 560, 930, 590, 10, 10);
  272. roundrect(230, 610, 930, 640, 10, 10);
  273. roundrect(230, 660, 930, 690, 10, 10);
  274. roundrect(230, 710, 930, 740, 10, 10);
  275. roundrect(230, 760, 930, 790, 10, 10);
  276. roundrect(230, 810, 930, 840, 10, 10);
  277. fillroundrect(1000, 70, 1200, 100, 10, 10);
  278. outtextxy(1065, 78, L"完成状态");
  279. roundrect(1000, 110, 1090, 140, 10, 10);
  280. roundrect(1110, 110, 1200, 140, 10, 10);
  281. roundrect(1000, 160, 1090, 190, 10, 10);
  282. roundrect(1110, 160, 1200, 190, 10, 10);
  283. roundrect(1000, 210, 1090, 240, 10, 10);
  284. roundrect(1110, 210, 1200, 240, 10, 10);
  285. roundrect(1000, 260, 1090, 290, 10, 10);
  286. roundrect(1110, 260, 1200, 290, 10, 10);
  287. roundrect(1000, 310, 1090, 340, 10, 10);
  288. roundrect(1110, 310, 1200, 340, 10, 10);
  289. roundrect(1000, 360, 1090, 390, 10, 10);
  290. roundrect(1110, 360, 1200, 390, 10, 10);
  291. roundrect(1000, 410, 1090, 440, 10, 10);
  292. roundrect(1110, 410, 1200, 440, 10, 10);
  293. roundrect(1000, 460, 1090, 490, 10, 10);
  294. roundrect(1110, 460, 1200, 490, 10, 10);
  295. roundrect(1000, 510, 1090, 540, 10, 10);
  296. roundrect(1110, 510, 1200, 540, 10, 10);
  297. roundrect(1000, 560, 1090, 590, 10, 10);
  298. roundrect(1110, 560, 1200, 590, 10, 10);
  299. roundrect(1000, 610, 1090, 640, 10, 10);
  300. roundrect(1110, 610, 1200, 640, 10, 10);
  301. roundrect(1000, 660, 1090, 690, 10, 10);
  302. roundrect(1110, 660, 1200, 690, 10, 10);
  303. roundrect(1000, 710, 1090, 740, 10, 10);
  304. roundrect(1110, 710, 1200, 740, 10, 10);
  305. roundrect(1000, 760, 1090, 790, 10, 10);
  306. roundrect(1110, 760, 1200, 790, 10, 10);
  307. roundrect(1000, 810, 1090, 840, 10, 10);
  308. roundrect(1110, 810, 1200, 840, 10, 10);
  309. outtextxy(1040, 118, L"是");
  310. outtextxy(1148, 118, L"否");
  311. outtextxy(1040, 168, L"是");
  312. outtextxy(1148, 168, L"否");
  313. outtextxy(1040, 218, L"是");
  314. outtextxy(1148, 218, L"否");
  315. outtextxy(1040, 268, L"是");
  316. outtextxy(1148, 268, L"否");
  317. outtextxy(1040, 318, L"是");
  318. outtextxy(1148, 318, L"否");
  319. outtextxy(1040, 368, L"是");
  320. outtextxy(1148, 368, L"否");
  321. outtextxy(1040, 418, L"是");
  322. outtextxy(1148, 418, L"否");
  323. outtextxy(1040, 468, L"是");
  324. outtextxy(1148, 468, L"否");
  325. outtextxy(1040, 518, L"是");
  326. outtextxy(1148, 518, L"否");
  327. outtextxy(1040, 568, L"是");
  328. outtextxy(1148, 568, L"否");
  329. outtextxy(1040, 618, L"是");
  330. outtextxy(1148, 618, L"否");
  331. outtextxy(1040, 668, L"是");
  332. outtextxy(1148, 668, L"否");
  333. outtextxy(1040, 718, L"是");
  334. outtextxy(1148, 718, L"否");
  335. outtextxy(1040, 768, L"是");
  336. outtextxy(1148, 768, L"否");
  337. outtextxy(1040, 818, L"是");
  338. outtextxy(1148, 818, L"否");
  339. }
  340. //完成封装
  341. void Did()
  342. {
  343. IMAGE done;//roundrect(1000, 110, 1090, 140, 10, 10);是
  344. loadimage(&done, L"C:\\Users\\LEGION\\Desktop\\Datas\\done.jpg", 88, 28, true);
  345. putimage(Q, W, &done);
  346. IMAGE err;
  347. loadimage(&err, L"C:\\Users\\LEGION\\Desktop\\Datas\\err.jpg", 88, 28, true);
  348. putimage(E+1, R+1, &err);
  349. roundrect(E, R, T, Y, 10, 10);
  350. settextstyle(18, 0, L"宋体");
  351. outtextxy(N, M, L"否");
  352. }
  353. //未完成封装
  354. void UND()
  355. {
  356. IMAGE done;//roundrect(1110, 110, 1200, 140, 10, 10);否
  357. loadimage(&done, L"C:\\Users\\LEGION\\Desktop\\Datas\\done.jpg", 88, 28, true);
  358. putimage(Q, W, &done);
  359. IMAGE err;
  360. loadimage(&err, L"C:\\Users\\LEGION\\Desktop\\Datas\\err.jpg", 88, 28, true);
  361. putimage(E+1, R+1, &err);
  362. roundrect(E, R, T, Y, 10, 10);
  363. settextstyle(18, 0, L"宋体");
  364. outtextxy(N, M, L"是");
  365. }
  366. //学生页面
  367. void Stupage(void)
  368. {
  369. initgraph(1280, 900);
  370. if (Done % 2 == 0)
  371. {
  372. setbkcolor(RGB(70, 130, 180));
  373. }
  374. else
  375. {
  376. setbkcolor(RGB(112, 128, 144));
  377. }
  378. setbkmode(TRANSPARENT);
  379. cleardevice();
  380. settextcolor(BLACK);
  381. Draw();
  382. Title();
  383. Stuname();
  384. fillroundrect(1200,10,1260,30,10,10);
  385. settextcolor(BLACK);
  386. settextstyle(20, 0, L"楷体");
  387. outtextxy(1208, 11, L"返回");
  388. fillroundrect(10, 10, 110, 30, 10, 10);
  389. outtextxy(18, 11, L"新建日程");
  390. fillroundrect(10, 40, 110, 60, 10, 10);
  391. outtextxy(18, 41, L"查看日程");
  392. fillroundrect(120, 10, 220, 30, 10, 10);
  393. outtextxy(128, 11, L"提交日程");
  394. fillroundrect(230, 10, 330, 30, 10, 10);
  395. outtextxy(260, 11, L"帮助");
  396. fillroundrect(340, 10, 440, 30, 10, 10);
  397. outtextxy(370, 11, L"关于");
  398. ExMessage msg;
  399. while (1)
  400. {
  401. if (peekmessage(&msg, EM_MOUSE))
  402. {
  403. if (msg.x >= 1200 && msg.x <= 1260 && msg.y >= 10 && msg.y <= 30)
  404. {
  405. setlinecolor(RED); roundrect(1200, 10, 1260, 30, 10, 10);
  406. }
  407. else setlinecolor(WHITE); roundrect(1200, 10, 1260, 30, 10, 10);
  408. if (msg.x >= 10 && msg.x <= 110 && msg.y >= 10 && msg.y <= 30)
  409. {
  410. setlinecolor(RED); roundrect(10, 10, 110, 30, 10, 10);
  411. }
  412. else setlinecolor(WHITE); roundrect(10, 10, 110, 30, 10, 10);
  413. if (msg.x >= 10 && msg.x <= 110 && msg.y >= 40 && msg.y <= 60)
  414. {
  415. setlinecolor(RED); roundrect(10, 40, 110, 60, 10, 10);
  416. }
  417. else setlinecolor(WHITE); roundrect(10, 40, 110, 60, 10, 10);
  418. if (msg.x >= 120 && msg.x <= 220 && msg.y >= 10 && msg.y <= 30)
  419. {
  420. setlinecolor(RED); roundrect(120, 10, 220, 30, 10, 10);
  421. }
  422. else setlinecolor(WHITE); roundrect(120, 10, 220, 30, 10, 10);
  423. if (msg.x >= 230 && msg.x <= 330 && msg.y >= 10 && msg.y <= 30)
  424. {
  425. setlinecolor(RED); roundrect(230, 10, 330, 30, 10, 10);
  426. }
  427. else setlinecolor(WHITE); roundrect(230, 10, 330, 30, 10, 10);
  428. if (msg.x >= 340 && msg.x <= 440 && msg.y >= 10 && msg.y <= 30)
  429. {
  430. setlinecolor(RED); roundrect(340, 10, 440, 30, 10, 10);
  431. }
  432. else setlinecolor(WHITE); roundrect(340, 10, 440, 30, 10, 10);
  433. switch (msg.message)
  434. {
  435. case WM_LBUTTONDOWN:
  436. if (msg.x >= 1200 && msg.x <= 1260 && msg.y >= 10 && msg.y <= 30)
  437. {
  438. main();
  439. }
  440. //roundrect(1000, 110, 1090, 140, 10, 10);是 /*从460到669负责完成状态的选定和保存*/
  441. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 110 && msg.y <= 140)
  442. {
  443. Q = 1001; W = 111; E = 1110; R = 110; T = 1200; Y = 140;
  444. N = 1148; M = 118;
  445. Did(); state[1] = 1; /*将完成状态存到state数组里,1代表完成,0代表未完成*/
  446. }
  447. //roundrect(1110, 110, 1200, 140, 10, 10);否
  448. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 110 && msg.y <= 140)
  449. {
  450. Q = 1111; W = 111; E = 1000; R = 110; T = 1090; Y = 140;
  451. N = 1040; M = 118;
  452. UND(); state[1] = 0;
  453. }
  454. //roundrect(1000, 160, 1090, 190, 10, 10);是
  455. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 160 && msg.y <= 190)
  456. {
  457. Q = 1001; W = 161; E = 1110; R = 160; T = 1200; Y = 190;
  458. N = 1148; M = 168;
  459. Did(); state[2] = 1;
  460. }
  461. //roundrect(1110, 160, 1200, 190, 10, 10);否
  462. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 160 && msg.y <= 190)
  463. {
  464. Q = 1111; W = 161; E = 1000; R = 160; T = 1090; Y = 190;
  465. N = 1040; M = 168;
  466. UND(); state[2] = 0;
  467. }
  468. //roundrect(1000, 210, 1090, 240, 10, 10);是
  469. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 210 && msg.y <= 240)
  470. {
  471. Q = 1001; W = 211; E = 1110; R = 210; T = 1200; Y = 240;
  472. N = 1148; M = 218;
  473. Did(); state[3] = 1;
  474. }
  475. //roundrect(1110, 210, 1200, 240, 10, 10);否
  476. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 210 && msg.y <= 240)
  477. {
  478. Q = 1111; W = 211; E = 1000; R = 210; T = 1090; Y = 240;
  479. N = 1040; M = 218;
  480. UND(); state[3] = 0;
  481. }
  482. //roundrect(1000, 260, 1090, 290, 10, 10);是
  483. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 260 && msg.y <= 290)
  484. {
  485. Q = 1001; W = 261; E = 1110; R = 260; T = 1200; Y = 290;
  486. N = 1148; M = 268;
  487. Did(); state[4] = 1;
  488. }
  489. //roundrect(1110, 260, 1200, 290, 10, 10);否
  490. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 260 && msg.y <= 290)
  491. {
  492. Q = 1111; W = 261; E = 1000; R = 260; T = 1090; Y = 290;
  493. N = 1040; M = 268;
  494. UND(); state[4] = 0;
  495. }
  496. //roundrect(1000, 310, 1090, 340, 10, 10);是
  497. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 310 && msg.y <= 340)
  498. {
  499. Q = 1001; W = 311; E = 1110; R = 310; T = 1200; Y = 340;
  500. N = 1148; M = 318;
  501. Did(); state[5] = 1;
  502. }
  503. //roundrect(1110, 310, 1200, 340, 10, 10);否
  504. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 310 && msg.y <= 340)
  505. {
  506. Q = 1111; W = 311; E = 1000; R = 310; T = 1090; Y = 340;
  507. N = 1040; M = 318;
  508. UND(); state[5] = 0;
  509. }
  510. //roundrect(1000, 360, 1090, 390, 10, 10);是
  511. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 360 && msg.y <= 390)
  512. {
  513. Q = 1001; W = 361; E = 1110; R = 360; T = 1200; Y = 390;
  514. N = 1148; M = 368;
  515. Did(); state[6] = 1;
  516. }
  517. //roundrect(1110, 360, 1200, 390, 10, 10);否
  518. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 360 && msg.y <= 390)
  519. {
  520. Q = 1111; W = 361; E = 1000; R = 360; T = 1090; Y = 390;
  521. N = 1040; M = 368;
  522. UND(); state[6] = 0;
  523. }
  524. //roundrect(1000, 410, 1090, 440, 10, 10);是
  525. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 410 && msg.y <= 440)
  526. {
  527. Q = 1001; W = 411; E = 1110; R = 410; T = 1200; Y = 440;
  528. N = 1148; M = 418;
  529. Did(); state[7] = 1;
  530. }
  531. //roundrect(1110, 410, 1200, 440, 10, 10);否
  532. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 410 && msg.y <= 440)
  533. {
  534. Q = 1111; W = 411; E = 1000; R = 410; T = 1090; Y = 440;
  535. N = 1040; M = 418;
  536. UND(); state[7] = 0;
  537. }
  538. //roundrect(1000, 460, 1090, 490, 10, 10);是
  539. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 460 && msg.y <= 490)
  540. {
  541. Q = 1001; W = 461; E = 1110; R = 460; T = 1200; Y = 490;
  542. N = 1148; M = 468;
  543. Did(); state[8] = 1;
  544. }
  545. //roundrect(1110, 460, 1200, 490, 10, 10);否
  546. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 460 && msg.y <= 490)
  547. {
  548. Q = 1111; W = 461; E = 1000; R = 460; T = 1090; Y = 490;
  549. N = 1040; M = 468;
  550. UND(); state[8] = 0;
  551. }
  552. //roundrect(1000, 510, 1090, 540, 10, 10);是
  553. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 510 && msg.y <= 540)
  554. {
  555. Q = 1001; W = 511; E = 1110; R = 510; T = 1200; Y = 540;
  556. N = 1148; M = 518;
  557. Did(); state[9] = 1;
  558. }
  559. //roundrect(1110, 510, 1200, 540, 10, 10);否
  560. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 510 && msg.y <= 540)
  561. {
  562. Q = 1111; W = 511; E = 1000; R = 510; T = 1090; Y = 540;
  563. N = 1040; M = 518;
  564. UND(); state[9] = 0;
  565. }
  566. //roundrect(1000, 560, 1090, 590, 10, 10);是
  567. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 560 && msg.y <= 590)
  568. {
  569. Q = 1001; W = 561; E = 1110; R = 560; T = 1200; Y = 590;
  570. N = 1148; M = 568;
  571. Did(); state[10] = 1;
  572. }
  573. //roundrect(1110, 560, 1200, 590, 10, 10);否
  574. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 560 && msg.y <= 590)
  575. {
  576. Q = 1111; W = 561; E = 1000; R = 560; T = 1090; Y = 590;
  577. N = 1040; M = 568;
  578. UND(); state[10] = 0;
  579. }
  580. //roundrect(1000, 610, 1090, 640, 10, 10);是
  581. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 610 && msg.y <= 640)
  582. {
  583. Q = 1001; W = 611; E = 1110; R = 610; T = 1200; Y = 640;
  584. N = 1148; M = 618;
  585. Did(); state[11] = 1;
  586. }
  587. //roundrect(1110, 610, 1200, 640, 10, 10);否
  588. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 610 && msg.y <= 640)
  589. {
  590. Q = 1111; W = 611; E = 1000; R = 610; T = 1090; Y = 640;
  591. N = 1040; M = 618;
  592. UND(); state[11] = 0;
  593. }
  594. //roundrect(1000, 660, 1090, 690, 10, 10);是
  595. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 660 && msg.y <= 690)
  596. {
  597. Q = 1001; W = 661; E = 1110; R = 660; T = 1200; Y = 690;
  598. N = 1148; M = 668;
  599. Did(); state[12] = 1;
  600. }
  601. //roundrect(1110, 660, 1200, 690, 10, 10);否
  602. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 660 && msg.y <= 690)
  603. {
  604. Q = 1111; W = 661; E = 1000; R = 660; T = 1090; Y = 690;
  605. N = 1040; M = 668;
  606. UND(); state[12] = 0;
  607. }
  608. //roundrect(1000, 710, 1090, 740, 10, 10);是
  609. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 710 && msg.y <= 740)
  610. {
  611. Q = 1001; W = 711; E = 1110; R = 710; T = 1200; Y = 740;
  612. N = 1148; M = 718;
  613. Did(); state[13] = 1;
  614. }
  615. //roundrect(1110, 710, 1200, 740, 10, 10);否
  616. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 710 && msg.y <= 740)
  617. {
  618. Q = 1111; W = 711; E = 1000; R = 710; T = 1090; Y = 740;
  619. N = 1040; M = 718;
  620. UND(); state[13] = 0;
  621. }
  622. //roundrect(1000, 760, 1090, 790, 10, 10);是
  623. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 760 && msg.y <= 790)
  624. {
  625. Q = 1001; W = 761; E = 1110; R = 760; T = 1200; Y = 790;
  626. N = 1148; M = 768;
  627. Did(); state[14] = 1;
  628. }
  629. //roundrect(1110, 760, 1200, 790, 10, 10);否
  630. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 760 && msg.y <= 790)
  631. {
  632. Q = 1111; W = 761; E = 1000; R = 760; T = 1090; Y = 790;
  633. N = 1040; M = 768;
  634. UND(); state[14] = 0;
  635. }
  636. //roundrect(1000, 810, 1090, 840, 10, 10);是
  637. if (msg.x >= 1000 && msg.x <= 1090 && msg.y >= 810 && msg.y <= 840)
  638. {
  639. Q = 1001; W = 811; E = 1110; R = 810; T = 1200; Y = 840;
  640. N = 1148; M = 818;
  641. Did(); state[15] = 1;
  642. }
  643. //roundrect(1110, 810, 1200, 840, 10, 10);否
  644. if (msg.x >= 1110 && msg.x <= 1200 && msg.y >= 810 && msg.y <= 840)
  645. {
  646. Q = 1111; W = 811; E = 1000; R = 810; T = 1090; Y = 840;
  647. N = 1040; M = 818;
  648. UND(); state[15] = 0;
  649. }
  650. //5个页面按钮的点击
  651. if (msg.x >= 10 && msg.x <= 110 && msg.y >= 10 && msg.y <= 30)
  652. {
  653. New(); Nt++;
  654. }
  655. if (msg.x >= 10 && msg.x <= 110 && msg.y >= 40 && msg.y <= 60)
  656. {
  657. Look();
  658. }
  659. if (msg.x >= 120 && msg.x <= 220 && msg.y >= 10 && msg.y <= 30)
  660. {
  661. Submit();
  662. }
  663. if (msg.x >= 230 && msg.x <= 330 && msg.y >= 10 && msg.y <= 30)
  664. {
  665. Help();
  666. }
  667. if (msg.x >= 340 && msg.x <= 440 && msg.y >= 10 && msg.y <= 30)
  668. {
  669. About();
  670. }
  671. break;
  672. }
  673. }
  674. }
  675. }
  676. //学生姓名输入
  677. void Stuname()
  678. {
  679. setlocale(LC_ALL, "");
  680. fp2 = fopen("D:\\TimePlan\\Name.txt", "w");
  681. fclose(fp2);
  682. fp2 = fopen("D:\\TimePlan\\Name.txt", "a+");
  683. wchar_t s[15]{};
  684. InputBox(s, 15, L"请输入你的姓名");
  685. settextcolor(WHITE);
  686. settextstyle(30, 0, L"楷体");
  687. outtextxy(550, 10, s);
  688. fputws(s, fp2);
  689. fclose(fp2);
  690. }
  691. //在D:创建TimePlan文件夹
  692. void CreateFolder(void)
  693. {
  694. int a=_wchdir(L"D:\\");
  695. int b=_wmkdir(L"TimePlan");
  696. int c=_wchdir(L"D:\\TimePlan");
  697. }
  698. //密码核验
  699. void Passwd()
  700. {
  701. wchar_t Pass[20];
  702. wchar_t Userpass[20];
  703. if ((fp = fopen("D:\\TimePlan\\Myaccount.txt", "r")) == NULL)//如果未发现用户文件
  704. {
  705. FileCreate();//新建密码文件
  706. fp = fopen("D:\\TimePlan\\Myaccount.txt", "w");
  707. HWND Eu = GetHWnd();
  708. MessageBox(Eu, L"首次使用,请先创建密码。", L"提示", MB_OK);
  709. InputBox(Pass, 20, L"创建密码");
  710. for (int i = 0; i <= 19; i++)//对密码进行简单加密
  711. {
  712. Pass[i] = Pass[i] + 1;
  713. }
  714. fputws(Pass,fp);//写入密码
  715. fclose(fp);
  716. main();
  717. }
  718. else
  719. {
  720. fp = fopen("D:\\TimePlan\\Myaccount.txt", "r");
  721. fgetws(Pass, 20, fp);
  722. for (int i = 0; i <= 19; i++)//解密
  723. {
  724. Pass[i] = Pass[i] - 1;
  725. }
  726. InputBox(Userpass, 20, L"输入密码");
  727. if (wcscmp(Userpass,Pass) == 0)//比对用户密码和输入值
  728. {
  729. HWND Et = GetHWnd();
  730. MessageBox(Et, L"登录成功", L"提示", MB_OK);
  731. }
  732. else
  733. {
  734. HWND Er = GetHWnd();
  735. MessageBox(Er, L"密码错误", L"提示", MB_OK);
  736. main();
  737. }
  738. }
  739. fclose(fp);
  740. }
  741. void InfoOut()
  742. {
  743. int Line=0;//行数计数
  744. wchar_t Info[100];//行数获取时的字符缓冲区
  745. setlocale(LC_ALL, "");
  746. Sqlist *L;
  747. L = (Sqlist *)malloc(sizeof(Sqlist));
  748. wchar_t str[128]{};
  749. if ((fp1 = fopen("D:\\TimePlan\\Data.txt", "r")) == NULL)
  750. {
  751. HWND Er = GetHWnd();
  752. MessageBox(Er, L"用户数据读取失败!", L"提示", MB_OK);
  753. }
  754. for (int i = 1; i < 16; i++) /*负责将通过文件进行二级传递的用户数据复制到结构体Node中*/
  755. {
  756. fgetws(str, 128, fp1); //读取Data.txt的第i行数据
  757. wcscpy(L->data1[i], str); //将该数据写入L->data1[i]
  758. fgetws(str, 128, fp1);
  759. wcscpy(L->data2[i], str);
  760. fgetws(str, 128, fp1);
  761. wcscpy(L->goal[i], str);
  762. }
  763. //获取fp1内容的行数
  764. while (fgetws(Info, 100, fp1) != NULL)
  765. {
  766. Line++;
  767. }
  768. printf("%d\n", Line);
  769. fclose(fp1);
  770. if ((fp3 = fopen("D:\\TimePlan\\State.txt", "r")) == NULL)
  771. {
  772. HWND Er = GetHWnd();
  773. MessageBox(Er, L"状态数据读取失败!", L"提示", MB_OK);
  774. }
  775. for (int i = 1; i < 16; i++)
  776. {
  777. fgetws(str, 128, fp3);
  778. wcscpy(L->state[i], str);
  779. }
  780. fclose(fp3);
  781. int j = 1; /*负责将结构体中的数据输出到Teapage(教师页面)*/
  782. for (int i = 190; i <= 780; i += 40)
  783. {
  784. outtextxy(110, i, L->data1[j]);
  785. outtextxy(230, i, L->data2[j]);
  786. outtextxy(310, i, L->goal[j]);
  787. outtextxy(1078, i, L->state[j]);
  788. j += 1;
  789. }
  790. }
  791. void Edit()
  792. {
  793. wchar_t str[128]{};
  794. wchar_t str1[128]{};
  795. setlocale(LC_ALL, "");
  796. Sqlist *L;
  797. L = (Sqlist*)malloc(sizeof(Sqlist));
  798. if ((fp1 = fopen("D:\\TimePlan\\Data.txt", "r")) == NULL)
  799. {
  800. HWND Er = GetHWnd();
  801. MessageBox(Er, L"用户数据读取失败!", L"提示", MB_OK);
  802. }
  803. for (int i = 1; i < 16; i++) /*负责将通过文件进行二级传递的用户数据复制到结构体Node中*/
  804. {
  805. fgetws(str, 128, fp1); //读取Data.txt的第i行数据
  806. wcscpy(L->data1[i], str); //将该数据写入L->data1[i]
  807. fgetws(str, 128, fp1);
  808. wcscpy(L->data2[i], str);
  809. fgetws(str, 128, fp1);
  810. wcscpy(L->goal[i], str);
  811. }
  812. fclose(fp1);
  813. //输入框“输入修改内容”
  814. InputBox(str1, 128, L"输入修改内容");
  815. //比对Sqlist中是否存在str,如果存在,输入框“修改为什么?”如果不存在,消息窗口“没有找到需要修改的内容。”
  816. for (int i = 1; i < 16; i++)
  817. {
  818. if (wcscmp(L->data1[i], str1) == 0)
  819. {
  820. InputBox(str1, 128, L"修改为什么?");
  821. wcscpy(L->data1[i], str1);
  822. break;
  823. }
  824. else if (wcscmp(L->data2[i], str1) == 0)
  825. {
  826. InputBox(str1, 128, L"修改为什么?");
  827. wcscpy(L->data2[i], str1);
  828. break;
  829. }
  830. else if (wcscmp(L->goal[i], str1) == 0)
  831. {
  832. InputBox(str1, 128, L"修改为什么?");
  833. wcscpy(L->goal[i], str1);
  834. break;
  835. }
  836. else if (wcscmp(L->state[i], str1) == 0)
  837. {
  838. InputBox(str1, 128, L"修改为什么?");
  839. wcscpy(L->state[i], str1);
  840. break;
  841. }
  842. else if (i == 15)
  843. {
  844. HWND Er = GetHWnd();
  845. MessageBox(Er, L"没有找到需要修改的内容。", L"提示", MB_OK);
  846. }
  847. }
  848. }
  849. void Search()
  850. {
  851. wchar_t str[128]{};
  852. wchar_t str1[128]{};
  853. setlocale(LC_ALL, "");
  854. Sqlist *L;
  855. L = (Sqlist*)malloc(sizeof(Sqlist));
  856. if ((fp1 = fopen("D:\\TimePlan\\Data.txt", "r")) == NULL)
  857. {
  858. HWND Er = GetHWnd();
  859. MessageBox(Er, L"用户数据读取失败!", L"提示", MB_OK);
  860. }
  861. for (int i = 1; i < 16; i++) /*负责将通过文件进行二级传递的用户数据复制到结构体Node中*/
  862. {
  863. fgetws(str, 128, fp1); //读取Data.txt的第i行数据
  864. wcscpy(L->data1[i], str); //将该数据写入L->data1[i]
  865. fgetws(str, 128, fp1);
  866. wcscpy(L->data2[i], str);
  867. fgetws(str, 128, fp1);
  868. wcscpy(L->goal[i], str);
  869. }
  870. fclose(fp1);
  871. //输入框“输入查找内容”
  872. InputBox(str1, 128, L"输入查找内容");
  873. //比对Sqlist中是否存在str,如果存在,输出框“找到了!”如果不存在,HWND“没有找到需要查找的内容。”
  874. for (int i = 1; i < 16; i++)
  875. {
  876. if (wcscmp(L->data1[i], str1) == 0)
  877. {
  878. HWND Er = GetHWnd();
  879. MessageBox(Er, L"找到了!", L"提示", MB_OK);
  880. break;
  881. }
  882. else if (wcscmp(L->data2[i], str1) == 0)
  883. {
  884. HWND Er = GetHWnd();
  885. MessageBox(Er, L"找到了!", L"提示", MB_OK);
  886. break;
  887. }
  888. else if (wcscmp(L->goal[i], str1) == 0)
  889. {
  890. HWND Er = GetHWnd();
  891. MessageBox(Er, L"找到了!", L"提示", MB_OK);
  892. break;
  893. }
  894. else if (wcscmp(L->state[i], str1) == 0)
  895. {
  896. HWND Er = GetHWnd();
  897. MessageBox(Er, L"找到了!", L"提示", MB_OK);
  898. break;
  899. }
  900. else if (i == 15)
  901. {
  902. HWND Er = GetHWnd();
  903. MessageBox(Er, L"没有找到需要查找的内容。", L"提示", MB_OK);
  904. }
  905. }
  906. }
  907. void Delete()
  908. {
  909. //删除顺序表中的某一项
  910. wchar_t str[128]{};
  911. wchar_t str1[128]{};
  912. setlocale(LC_ALL, "");
  913. Sqlist *L;
  914. L = (Sqlist*)malloc(sizeof(Sqlist));
  915. if ((fp1 = fopen("D:\\TimePlan\\Data.txt", "r")) == NULL)
  916. {
  917. HWND Er = GetHWnd();
  918. MessageBox(Er, L"用户数据读取失败!", L"提示", MB_OK);
  919. }
  920. for (int i = 1; i < 16; i++) /*负责将通过文件进行二级传递的用户数据复制到结构体Node中*/
  921. {
  922. fgetws(str, 128, fp1); //读取Data.txt的第i行数据
  923. wcscpy(L->data1[i], str); //将该数据写入L->data1[i]
  924. fgetws(str, 128, fp1);
  925. wcscpy(L->data2[i], str);
  926. fgetws(str, 128, fp1);
  927. wcscpy(L->goal[i], str);
  928. }
  929. fclose(fp1);
  930. //输入框“输入删除内容”
  931. InputBox(str1, 128, L"输入删除内容");
  932. //比对Sqlist中是否存在str,如果存在,输出框“已删除!”如果不存在,HWND“没有找到需要删除的内容。”
  933. for (int i = 1; i < 16; i++)
  934. {
  935. if (wcscmp(L->data1[i], str1) == 0)
  936. {
  937. HWND Er = GetHWnd();
  938. MessageBox(Er, L"已删除!", L"提示", MB_OK);
  939. break;
  940. }
  941. else if (wcscmp(L->data2[i], str1) == 0)
  942. {
  943. HWND Er = GetHWnd();
  944. MessageBox(Er, L"已删除!", L"提示", MB_OK);
  945. break;
  946. }
  947. else if (wcscmp(L->goal[i], str1) == 0)
  948. {
  949. HWND Er = GetHWnd();
  950. MessageBox(Er, L"已删除!", L"提示", MB_OK);
  951. break;
  952. }
  953. else if (wcscmp(L->state[i], str1) == 0)
  954. {
  955. HWND Er = GetHWnd();
  956. MessageBox(Er, L"已删除!", L"提示", MB_OK);
  957. break;
  958. }
  959. else if (i == 15)
  960. {
  961. HWND Er = GetHWnd();
  962. MessageBox(Er, L"没有找到需要删除的内容。", L"提示", MB_OK);
  963. }
  964. }
  965. }
  966. //教师页面
  967. void Teapage()
  968. {
  969. Passwd(); /*密码校验*/
  970. initgraph(1600, 900);
  971. cleardevice();
  972. wchar_t Name[20]{}; /*从843到846负责获取Name.txt的内容并复制到Name[20]*/
  973. fp2 = fopen("D:\\TimePlan\\Name.txt", "r");
  974. fgetws(Name, 20, fp2);
  975. fclose(fp2);
  976. IMAGE back;
  977. loadimage(&back, L"C:\\Users\\LEGION\\Desktop\\Datas\\Tb.jpg", 1600, 900, true);
  978. putimage(0, 0, &back);
  979. IMAGE Data;
  980. loadimage(&Data, L"C:\\Users\\LEGION\\Desktop\\Datas\\Data.png", 1100, 750, true);
  981. putimage(50, 50, &Data);
  982. setbkmode(TRANSPARENT);
  983. settextcolor(BLACK);
  984. settextstyle(30, 0, L"黑体");
  985. outtextxy(480, 85, Name);
  986. InfoOut();
  987. ExMessage msg;
  988. while (1)
  989. {
  990. if (peekmessage(&msg, EM_MOUSE))
  991. {
  992. if (msg.x >= 1483 && msg.x <= 1555 && msg.y >= 39 && msg.y <= 111) /*从822到846负责按钮交互性(鼠标移动到按钮区域按钮边缘颜色变化)*/
  993. {
  994. setlinecolor(WHITE); circle(1519, 75, 36);//返回
  995. }
  996. else setlinecolor(RED); circle(1519, 75, 36);
  997. if (msg.x >= 1378 && msg.x <= 1450 && msg.y >= 39 && msg.y <= 111)
  998. {
  999. setlinecolor(WHITE); circle(1414, 75, 36);//编辑
  1000. }
  1001. else setlinecolor(RED); circle(1414, 75, 36);
  1002. if (msg.x >= 1273 && msg.x <= 1345 && msg.y >= 39 && msg.y <= 111)
  1003. {
  1004. setlinecolor(WHITE); circle(1309, 75, 36);//删除
  1005. }
  1006. else setlinecolor(RED); circle(1309, 75, 36);
  1007. if (msg.x >= 1273 && msg.x <= 1345 && msg.y >= 143 && msg.y <= 215)
  1008. {
  1009. setlinecolor(WHITE); circle(1309, 179, 36);//搜索
  1010. }
  1011. else setlinecolor(RED); circle(1309, 179, 36);
  1012. if (msg.x >= 1378 && msg.x <= 1555 && msg.y >= 143 && msg.y <= 215)
  1013. {
  1014. setlinecolor(WHITE); roundrect(1378, 143, 1555, 215, 90, 90);//彩蛋
  1015. }
  1016. else setlinecolor(RED); roundrect(1378, 143, 1555, 215, 90, 90);
  1017. switch (msg.message)
  1018. {
  1019. case WM_LBUTTONDOWN:
  1020. if (msg.x >= 1483 && msg.x <= 1555 && msg.y >= 39 && msg.y <= 111)
  1021. {
  1022. main();//返回
  1023. }
  1024. if (msg.x >= 1378 && msg.x <= 1555 && msg.y >= 143 && msg.y <= 215)
  1025. {
  1026. Teapage();
  1027. }
  1028. if (msg.x >= 1378 && msg.x <= 1450 && msg.y >= 39 && msg.y <= 111)
  1029. {
  1030. //对顺序表的内容修改
  1031. Edit();
  1032. }
  1033. if (msg.x >= 1273 && msg.x <= 1345 && msg.y >= 39 && msg.y <= 111)
  1034. {
  1035. //删除
  1036. Delete();
  1037. }
  1038. if (msg.x >= 1273 && msg.x <= 1345 && msg.y >= 143 && msg.y <= 215)
  1039. {
  1040. //搜索
  1041. Search();
  1042. }
  1043. }
  1044. }
  1045. }
  1046. }
  1047. //黑夜模式
  1048. void settings(void)
  1049. {
  1050. if (Done % 2 == 0)
  1051. {
  1052. IMAGE bkdark;
  1053. loadimage(&bkdark, L"C:\\Users\\LEGION\\Desktop\\Datas\\bkdark.jpg", 1080, 640, true);
  1054. putimage(0, 0, &bkdark);
  1055. HWND hwnd = GetHWnd();
  1056. MessageBox(hwnd, L"黑夜模式打开啦!", L"提示", MB_OKCANCEL);
  1057. }
  1058. else
  1059. {
  1060. IMAGE bklight;
  1061. loadimage(&bklight, L"C:\\Users\\LEGION\\Desktop\\Datas\\back.jpg", 1080, 640, true);
  1062. putimage(0, 0, &bklight);
  1063. HWND hwnd = GetHWnd();
  1064. MessageBox(hwnd, L"黑夜模式关闭啦!", L"提示", MB_OKCANCEL);
  1065. }
  1066. }
  1067. void FileCreate(void)//文件创建(Myaccount.txt)
  1068. {
  1069. fp = fopen("D:\\TimePlan\\Myaccount.txt", "w"); /*以写入模式打开Myaccount.txt*/
  1070. /* 文件的读写模式
  1071. "r" 以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。
  1072. "w" 以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
  1073. "a" 以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
  1074. "r+" 以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。
  1075. "w+" 以“写入/更新”方式打开文件,相当于w和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
  1076. "a+" 以“追加/更新”方式打开文件,相当于a和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
  1077. */
  1078. fclose(fp);
  1079. }
  1080. int main( )
  1081. {
  1082. CreateFolder(); /*TimePlan文件夹的创建*/
  1083. if (_waccess(L"D:\\TimePlan", 0) != 0) //判断TimePlan文件夹是否成功生成
  1084. {
  1085. HWND hwnd = GetHWnd();
  1086. MessageBox(hwnd, L"Error!", L"Error", MB_OK);
  1087. }
  1088. initgraph(1080, 640); /*创建窗口*/
  1089. setbkcolor(BLACK); /*设置背景颜色*/
  1090. settextcolor(BLACK); /*设置字体颜色*/
  1091. cleardevice(); /*清屏*/
  1092. setbkmode(TRANSPARENT); /*设置背景透明*/
  1093. IMAGE back; /*背景图片的定义*/
  1094. loadimage(&back, L"C:\\Users\\LEGION\\Desktop\\Datas\\back.jpg", 1080, 640, true); /*背景图片的加载*/
  1095. putimage(0, 0, &back); /*背景图片的显示*/
  1096. GetHWnd(); /*获取窗口句柄*/
  1097. if (Max == 0) /*这个判断用来检测main()页面的打开次数,防止用户在返回主页面时重复收到"欢迎使用"的通知*/
  1098. {
  1099. HWND hwnd = GetHWnd(); /*获取窗口句柄*/
  1100. MessageBox(hwnd, L"欢迎使用!", L"提示", MB_OK); /*提示用户*/
  1101. Max++;
  1102. }
  1103. ExMessage msg; /*鼠标消息的定义*/
  1104. while (1)
  1105. {
  1106. if (peekmessage(&msg, EM_MOUSE))
  1107. {
  1108. //范围变色
  1109. if (msg.x >= 85 && msg.x <= 260 && msg.y >= 360 && msg.y <= 415)
  1110. {
  1111. setlinecolor(RED); roundrect(82, 370, 273, 424, 50, 50);
  1112. }
  1113. else setlinecolor(WHITE);roundrect(82, 370, 273, 424, 50, 50);
  1114. if (msg.x >= 85 && msg.x <= 260 && msg.y >= 510 && msg.y <= 565)
  1115. {
  1116. setlinecolor(RED); roundrect(82, 520, 273, 576, 50, 50);
  1117. }
  1118. else setlinecolor(WHITE); roundrect(82, 520, 273, 576, 50, 50);
  1119. //按钮点击
  1120. switch (msg.message)
  1121. {
  1122. case WM_LBUTTONDOWN: /*如果鼠标左键被按下*/
  1123. if (msg.x >= 85 && msg.x <= 260 && msg.y >= 360 && msg.y <= 415)
  1124. {
  1125. userpage(); /*用户类型判断*/
  1126. }
  1127. if (msg.x >= 85 && msg.x <= 260 && msg.y >= 510 && msg.y <= 565)
  1128. {
  1129. exit(5418); /*退出按钮*/
  1130. }
  1131. if (msg.x >= 963 && msg.x <= 1025 && msg.y >= 30 && msg.y <= 95)
  1132. {
  1133. settings(); Done++;
  1134. }
  1135. }
  1136. }
  1137. }
  1138. }

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

闽ICP备14008679号