找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3194|回复: 1
收起左侧

通信录程序设计(图形界面)

[复制链接]
ID:85681 发表于 2015-7-15 02:22 | 显示全部楼层 |阅读模式
本帖最后由 benbens 于 2015-7-15 02:23 编辑










  1. #include <stdio.h>
  2. #include <graphics.h>
  3. #include <conio.h>
  4. int BackColor ;
  5. int Color ;
  6. struct _Linkman
  7. {
  8. char name [20]; //姓名
  9. char age  [5]; //年龄
  10. char sex  [5]; //性别
  11. char phone[12]; //电话
  12. char QQ   [13]; //QQ
  13. };
  14. struct _Mu
  15. {
  16. int _1;
  17. int _2;
  18. int _3;
  19. }Menu;
  20. void (*Key_up_down)(int num) ;
  21. void (*Key_exit)(void) ;
  22. struct _Linkman Pernum[100]; //人数限额
  23. int pernum=0;                   //当前实际人数
  24. int PerNo=0;                    //当前第几个人
  25. int TermNo=0;                   //第几个服务选项
  26. FILE *fp;                       //文件指针
  27. void DisAllLineMan(void);
  28. /***********************************************************************
  29.                 文件初始化
  30. ***********************************************************************/
  31. void FileInit(void)
  32. {
  33. int i=0;
  34. if ((fp=fopen("LinkemanDate.dat","rd"))==NULL)
  35. {
  36.   printf("文件路径错误!\n");
  37.   pernum=0;
  38.   exit(0);
  39. }
  40. else
  41. {
  42.   while (!feof(fp))
  43.   {
  44.    if (fread(&Pernum[i],sizeof(struct _Linkman),1,fp)==1)
  45.    {
  46.     i++;
  47.    }
  48.   }
  49.   pernum=i;
  50. }
  51. fclose(fp);
  52. }
  53. /***********************************************************************
  54.                 文件保存
  55. ***********************************************************************/
  56. void SaveFile(void)
  57. {
  58. int i=0;
  59. int Cn=0;
  60. if ((fp=fopen("LinkemanDate.dat","wb"))==NULL)
  61. {
  62.   printf("文件路径错误!\n");
  63.   exit(0);
  64. }
  65. while (i<pernum)
  66. {
  67.   fwrite(&Pernum[i],sizeof(struct _Linkman),1,fp);
  68.   i++;  
  69. }
  70. fclose(fp);
  71. }
  72. /***********************************************************************
  73.                 防止按键误操作
  74. ***********************************************************************/
  75. void Null(int num)
  76. {
  77. int Num=0;
  78. Num+=num;
  79. while(!Key_exit);
  80. Num=0;
  81. }
  82. /***********************************************************************
  83.                 主 界 面
  84. ***********************************************************************/
  85. void Menu_Init(void)
  86. {
  87. Menu._1=0;Menu._2=0;Menu._3=0;PerNo=0;TermNo=0;
  88. setbkcolor(BackColor);
  89.     setcolor(Color);
  90. setfillstyle(BackColor);
  91. bar3d(10 , 10 , 310 , 310 , 3 , 1);        
  92.     setcolor(WHITE);
  93. loadimage(NULL, "16.jpg");           //插入图片
  94. setbkcolor(BLACK);
  95.     outtextxy(15 , 12+16*0 , "=============通信录设计=============");
  96.     outtextxy(15 , 12+16*1 , "************************************************");
  97.     outtextxy(90 , 12+16*5 , "◆制作人:刘鸿波");
  98.     outtextxy(80 , 12+16*8 , "◆制作时间:2012-5-9");
  99. setcolor(YELLOW);
  100. outtextxy(50 , 15+16*25 ,"←确认");
  101. outtextxy(220, 15+16*25 ,"退出→");
  102. outtextxy(150, 15+16*22 ,"↑");
  103. outtextxy(140, 15+16*23 ,"上翻");
  104. outtextxy(140, 15+16*27 ,"下翻");
  105. outtextxy(150, 15+16*28 ,"↓");
  106. outtextxy(150, 15+16*25,"★");
  107. setcolor(CYAN);
  108. ellipse(50,15+16*22,268,480);           //绘制椭圆
  109. ellipse(98,18+16*24,218,13+16*27);
  110. setcolor(Color);
  111. Key_up_down=Null;
  112. }
  113. /***********************************************************************
  114.         个人信息显示、修改个人信息
  115. ***********************************************************************/
  116. void PersonalMessage(int num)
  117. {
  118. loadimage(NULL, "15.jpg");
  119. setbkcolor(LIGHTGRAY);
  120.     setcolor(YELLOW);
  121. setfillstyle(LIGHTGRAY);
  122. bar3d(310-16*4,430,310,470,1,1);
  123. bar3d(10,430,310,470,1,1);
  124. setcolor(BLACK);
  125. line(160,430,160,470);
  126. setcolor(Color);
  127. setbkcolor(LIGHTGRAY);
  128. outtextxy(22 , 442 ,"修 改");
  129. outtextxy(258 ,442 ,"确 定");
  130.     setcolor(YELLOW);
  131. setbkcolor(BLACK);
  132. outtextxy(35 , 12+16*0 ,"============个 人 信 息============");
  133. outtextxy(15 , 12+16*2 ,"姓名:");
  134. outtextxy(15+16*4 , 12+16*2,Pernum[num].name);
  135. outtextxy(15 , 12+16*4 ,"年龄:");
  136. outtextxy(15+16*4 , 12+16*4,Pernum[num].age);
  137. outtextxy(15 , 12+16*6 ,"性别:");
  138. outtextxy(15+16*4 , 12+16*6,Pernum[num].sex);

  139. outtextxy(15 , 12+16*8 ,"电话:");
  140. outtextxy(15+16*4 , 12+16*8,Pernum[num].phone);
  141. outtextxy(15 , 12+16*10 ," Q Q:");
  142. outtextxy(15+16*4 , 12+16*10,Pernum[num].QQ);
  143. }
  144. /***********************************************************************
  145.                 选择修改项(↑↓选择)
  146. ***********************************************************************/
  147. void ChooseTerm(int num)          //选择修改项
  148. {
  149. TermNo+=num;
  150. if (TermNo==6)
  151. {
  152.   TermNo=1;
  153. }
  154. if (TermNo<1)
  155. {
  156.   TermNo=5;
  157. }
  158. PersonalMessage(PerNo);
  159. setbkcolor(BROWN);
  160.     setcolor(Color);
  161. setfillstyle(BROWN);
  162. bar3d(15+16*3,12+16*(2*TermNo),310,12+16*(2*TermNo+1),1,1);
  163. setcolor(WHITE);
  164. setbkcolor(BROWN);
  165. switch(TermNo)
  166. {
  167. case 1:outtextxy(15+16*4 , 12+16*2,Pernum[PerNo].name);
  168.   break;
  169. case 2:outtextxy(15+16*4 , 12+16*4,Pernum[PerNo].age);
  170.   break;
  171. case 3:outtextxy(15+16*4 , 12+16*6,Pernum[PerNo].sex);
  172.   break;
  173. case 4:outtextxy(15+16*4 , 12+16*8,Pernum[PerNo].phone);
  174.   break;
  175. case 5:outtextxy(15+16*4 , 12+16*10,Pernum[PerNo].QQ);
  176.   break;
  177. default: break;
  178. }
  179. }
  180. void OpenLineman(int num)               //选择联系人
  181. {
  182. Menu._3=1;
  183. PersonalMessage(num);
  184. Key_up_down=ChooseTerm;
  185. Key_exit=DisAllLineMan;
  186. }
  187. void Modification(void)                //输入选择修改内容
  188. {
  189. switch(TermNo)
  190. {
  191. case 1:
  192.   {
  193.    InputBox(Pernum[PerNo].name,20,"请输入姓名:");
  194.    outtextxy(15+16*4 , 12+16*2,Pernum[PerNo].name);
  195.    
  196.   }break;
  197. case 2:
  198.   {
  199.    InputBox(Pernum[PerNo].age,5,"请输入年龄:");
  200.    outtextxy(15+16*4 , 12+16*4,Pernum[PerNo].age);
  201.   }break;
  202. case 3:
  203.   {
  204.    InputBox(Pernum[PerNo].sex,4,"请输入性别:");
  205.    outtextxy(15+16*4 , 12+16*6,Pernum[PerNo].sex);
  206.   }break;
  207. case 4:
  208.   {
  209.    InputBox(Pernum[PerNo].phone,12,"请输入电话:");
  210.    outtextxy(15+16*4 , 12+16*8,Pernum[PerNo].phone);
  211.   }break;
  212. case 5:
  213.   {
  214.    InputBox(Pernum[PerNo].QQ,12,"请输入QQ:");
  215.    outtextxy(15+16*4 , 12+16*10,Pernum[PerNo].QQ);
  216.   }break;
  217.   
  218. default:break;
  219. }
  220. SaveFile();
  221. }
  222. void OpenLinemanOption(void)              
  223. {
  224. switch(Menu._3)
  225. {
  226. case 0:OpenLineman(PerNo);
  227.   break;
  228. case 1:Modification();
  229.   break;
  230. default: break;
  231. }
  232. }
  233. /***********************************************************************
  234.                 添加联系人
  235. ***********************************************************************/
  236. void ChooseYesOrNoInit(void)       //姓名重合选择窗口
  237. {
  238. setbkcolor(CYAN);
  239.     setcolor(Color);
  240. setfillstyle(CYAN);
  241. bar3d(0,12+16*14,320,480,1,1);
  242. setcolor(WHITE);
  243. outtextxy(50, 12+16*17,"该联系人已存在,是否覆盖?");
  244. setbkcolor(LIGHTGRAY);
  245.     setcolor(LIGHTGRAY);
  246. setfillstyle(LIGHTGRAY);
  247. bar3d(10,430,10+16*4,470,3,1);
  248. bar3d(310-16*4,430,310,470,3,1);
  249. setcolor(WHITE);
  250. outtextxy(35 , 442 ,"是");
  251. outtextxy(270 ,442 ,"否");
  252. }
  253. void InputLinkemanMes(int num)        //输入新增联系人信息
  254. {
  255. loadimage(NULL, "15.jpg");
  256. setbkcolor(CYAN);
  257.     setcolor(Color);
  258. setfillstyle(CYAN);
  259. bar3d(310-16*4,430,310,470,3,1);
  260. outtextxy(258 ,442 ,"退 出");
  261. setcolor(CYAN);
  262. setbkcolor(BLACK);
  263. outtextxy(10 , 12+16*0 ,"=============添加联系人=============");
  264. outtextxy(15 , 12+16*2 ,"姓名:");
  265. InputBox(Pernum[num].name,20,"请输入姓名:");
  266. outtextxy(15+16*4 , 12+16*2,Pernum[num].name);

  267. outtextxy(15 , 12+16*4 ,"年龄:");
  268. InputBox(Pernum[num].age,5,"请输入年龄:");
  269. outtextxy(15+16*4 , 12+16*4,Pernum[num].age);

  270. outtextxy(15 , 12+16*6 ,"性别:");
  271. InputBox(Pernum[num].sex,4,"请输入性别:");
  272. outtextxy(15+16*4 , 12+16*6,Pernum[num].sex);

  273. outtextxy(15 , 12+16*8 ,"电话:");
  274. InputBox(Pernum[num].phone,12,"请输入电话:");
  275. outtextxy(15+16*4 , 12+16*8,Pernum[num].phone);

  276. outtextxy(15 , 12+16*10 ," Q Q:");
  277. InputBox(Pernum[num].QQ,12,"请输入QQ:");
  278. outtextxy(15+16*4 , 12+16*10,Pernum[num].QQ);
  279. }
  280. void DisChoose(int num)                     //显示选择
  281. {
  282. loadimage(NULL, "15.jpg");
  283. setbkcolor(CYAN);
  284.     setcolor(Color);
  285. setfillstyle(CYAN);
  286. bar3d(310-16*4,430,310,470,3,1);
  287. outtextxy(258 ,442 ,"退 出");
  288. setcolor(CYAN);
  289. setbkcolor(BLACK);
  290. outtextxy(10 , 12+16*0 ,"=============添加联系人=============");
  291. outtextxy(15 , 12+16*2 ,"姓名:");
  292. outtextxy(15+16*4 , 12+16*2,Pernum[num].name);
  293. outtextxy(15 , 12+16*4 ,"年龄:");
  294. outtextxy(15+16*4 , 12+16*4,Pernum[num].age);
  295. outtextxy(15 , 12+16*6 ,"性别:");
  296. outtextxy(15+16*4 , 12+16*6,Pernum[num].sex);
  297. outtextxy(15 , 12+16*8 ,"电话:");
  298. outtextxy(15+16*4 , 12+16*8,Pernum[num].phone);
  299. outtextxy(15 , 12+16*10 ," Q Q:");
  300. outtextxy(15+16*4 , 12+16*10,Pernum[num].QQ);
  301. }
  302. void ChooseYes(int num1,int num2 )
  303. {
  304. strcpy(Pernum[num1].name, Pernum[num2].name);
  305. strcpy(Pernum[num1].age,  Pernum[num2].age);
  306. strcpy(Pernum[num1].sex,  Pernum[num2].sex);
  307. strcpy(Pernum[num1].phone,Pernum[num2].phone);
  308. strcpy(Pernum[num1].QQ,   Pernum[num2].QQ);
  309. DisChoose(num2);
  310. outtextxy(15, 12+16*13,"添加成功!");
  311. }
  312. void AddLinkeman(void)
  313. {
  314. int ch=0;int i=0;
  315. int flag=0;
  316. Menu._3=2;
  317. InputLinkemanMes(pernum);
  318. for (i=0;i<pernum;i++)
  319. {
  320.   if (!strcmp(Pernum[i].name,Pernum[pernum].name))
  321.   {
  322.    flag++;
  323.    ChooseYesOrNoInit();
  324.    ch=getch();
  325.    if (ch==224)
  326.    {
  327.     ch=getch();
  328.     {
  329.      switch(ch)
  330.      {
  331.      case 75:ChooseYes(i,pernum);
  332.       break;
  333.      case 77:{
  334.         DisChoose(pernum);
  335.         pernum++;
  336.         outtextxy(15, 12+16*13,"添加成功!");
  337.        }
  338.       break;
  339.      default: break;
  340.      }
  341.     }
  342.    }
  343.   }
  344. }
  345. if (!flag)
  346. {
  347.   outtextxy(15, 12+16*13,"添加成功!");
  348.   pernum++;
  349. }

  350. SaveFile();
  351. Key_up_down=Null;
  352. Key_exit=DisAllLineMan;
  353. }
  354. /***********************************************************************
  355.                 删除当前联系人
  356. ***********************************************************************/
  357. void DeleteLinkeman(int num)
  358. {
  359. Menu._3=3;
  360. loadimage(NULL, "14.jpg");
  361. setbkcolor(BROWN);
  362.     setcolor(Color);
  363. setfillstyle(BROWN);
  364. bar3d(10 , 390 , 310 , 430 , 3 , 1);
  365. setcolor(YELLOW);
  366. outtextxy(15,402,"是否删除");
  367. outtextxy(15+16*4 ,402,Pernum[num].name);
  368. setbkcolor(YELLOW);
  369. setcolor(BROWN);
  370. line(160,430,160,470);
  371. outtextxy(22 , 442 ,"确 定");
  372. outtextxy(258 ,442 ,"退 出");

  373. Key_exit=DisAllLineMan;
  374. }
  375. void Delete(void)
  376. {
  377. int j;
  378. setbkcolor(YELLOW);
  379.     setcolor(Color);
  380. setfillstyle(YELLOW);
  381. bar3d(10 , 10 , 310 , 470 , 3 , 1);
  382. loadimage(NULL, "14.jpg");
  383. setbkcolor(BROWN);
  384.     setcolor(Color);
  385. setfillstyle(BROWN);
  386. bar3d(10 , 390 , 310 , 430 , 3 , 1);
  387. bar3d(310-16*4,430,310,470,1,1);
  388. for (j=PerNo;j<pernum;j++)
  389. {
  390.   strcpy(Pernum[j].name, Pernum[j+1].name);
  391.   strcpy(Pernum[j].age,  Pernum[j+1].age);
  392.   strcpy(Pernum[j].sex,  Pernum[j+1].sex);
  393.   strcpy(Pernum[j].phone,Pernum[j+1].phone);
  394.   strcpy(Pernum[j].QQ,   Pernum[j+1].QQ);
  395. }
  396. pernum--;
  397. SaveFile();
  398. setbkcolor(BROWN);
  399.     setcolor(YELLOW);
  400. outtextxy(128,402,"删除成功");
  401. outtextxy(258 ,442 ,"退 出");

  402. Key_up_down=Null;
  403. Key_exit=DisAllLineMan;
  404. }
  405. void DeleteOption(void)
  406. {
  407. switch(Menu._3)
  408. {
  409. case 0:DeleteLinkeman(PerNo);
  410.   break;
  411. case 3:Delete();
  412.   break;
  413. }
  414. }
  415. /***********************************************************************
  416.          选择初始界面的联系人(↑↓键选择)
  417. ***********************************************************************/
  418. void ChooseLineMan(int num)
  419. {
  420. int i=0,j=0;
  421. int CurrentPer=0;
  422. PerNo+=num;
  423. if (PerNo>pernum)
  424. {
  425.   PerNo=pernum;
  426. }
  427. if (PerNo<0)
  428. {
  429.   PerNo=0;
  430. }
  431. loadimage(NULL, "15.jpg");
  432. setbkcolor(LIGHTGRAY);
  433.     setcolor(LIGHTGRAY);
  434. setfillstyle(LIGHTGRAY);
  435. bar3d(10,430,10+16*4,470,3,1);
  436. bar3d(310-16*4,430,310,470,3,1);
  437. setcolor(YELLOW);
  438. setbkcolor(RED);
  439. outtextxy(22 , 442 ,"选 项");
  440. setbkcolor(GREEN);
  441. outtextxy(258 ,442 ,"退 出");
  442.     setcolor(YELLOW);
  443. setbkcolor(BLACK);
  444. outtextxy(15+16*5 , 12+16*1 ,"AddressBook");
  445. outtextxy(15+16*2 , 12+16*2 ,"姓名");
  446. outtextxy(15+16*11 , 12+16*2 ,"电话");

  447. if (PerNo>9)
  448.   CurrentPer=PerNo-9;
  449. else
  450.   CurrentPer=0;
  451.   
  452. for (i=0,j=CurrentPer;j<pernum && i<10;j++,i++)
  453. {
  454.   outtextxy(15+16*1 , 12+16*(4+i),Pernum[j].name);
  455.   outtextxy(15+16*9 , 12+16*(4+i),Pernum[j].phone);  
  456. }
  457. setbkcolor(BROWN);
  458.     setcolor(Color);
  459. setfillstyle(BROWN);
  460. if (PerNo<10)
  461. {
  462.   bar3d(10,12+16*(4+PerNo),310,12+16*(5+PerNo),1,1);
  463.   setcolor(LIGHTGRAY);
  464.   outtextxy(15+16*1 , 12+16*(4+PerNo),Pernum[PerNo].name);
  465.   outtextxy(15+16*9 , 12+16*(4+PerNo),Pernum[PerNo].phone);
  466. }
  467. else
  468. {
  469.   bar3d(10,12+16*(4+9),310,12+16*(5+9),1,1);
  470.   setcolor(LIGHTGRAY);
  471.   outtextxy(15+16*1 , 12+16*(4+9),Pernum[PerNo].name);
  472.   outtextxy(15+16*9 , 12+16*(4+9),Pernum[PerNo].phone);
  473. }
  474. }
  475. /***********************************************************************
  476.            初始界面(显示全部联系人)
  477. ***********************************************************************/
  478. void DisAllLineMan(void)
  479. {
  480. int i,j;
  481. Menu._1=1;Menu._2=0;Menu._3=0;TermNo=0;
  482. loadimage(NULL, "15.jpg");
  483. setbkcolor(LIGHTGRAY);
  484.     setcolor(LIGHTGRAY);
  485. setfillstyle(LIGHTGRAY);
  486. bar3d(10,430,10+16*4,470,3,1);
  487. bar3d(310-16*4,430,310,470,3,1);
  488. setcolor(YELLOW);
  489. setbkcolor(RED);
  490. outtextxy(22 , 442 ,"选 项");
  491. setbkcolor(GREEN);
  492. outtextxy(258 ,442 ,"退 出");
  493.     setcolor(YELLOW);
  494. setbkcolor(BLACK);
  495.     setcolor(YELLOW);
  496. setbkcolor(BLACK);
  497. outtextxy(15+16*5 , 12+16*1 ,"AddressBook");
  498. outtextxy(15+16*2 , 12+16*2 ,"姓名");
  499. outtextxy(15+16*11 , 12+16*2 ,"电话");
  500. for (i=0,j=0;j<pernum && i<10;j++,i++)
  501. {
  502.   outtextxy(15+16*1 , 12+16*(4+i),Pernum[j].name);
  503.   outtextxy(15+16*9 , 12+16*(4+i),Pernum[j].phone);  
  504. }
  505. setbkcolor(BROWN);
  506.     setcolor(Color);
  507. setfillstyle(BROWN);
  508. if (PerNo>10)
  509. {
  510.   bar3d(10,12+16*(4+9),310,12+16*(5+9),1,1);
  511.   setcolor(LIGHTGRAY);
  512.   outtextxy(15+16*1 , 12+16*(4+9),Pernum[PerNo].name);
  513.   outtextxy(15+16*9 , 12+16*(4+9),Pernum[PerNo].phone);
  514. }
  515. else
  516. {
  517.   bar3d(10,12+16*(4+PerNo),310,12+16*(5+PerNo),1,1);
  518.   setcolor(LIGHTGRAY);
  519.   outtextxy(15+16*1 , 12+16*(4+PerNo),Pernum[PerNo].name);
  520.   outtextxy(15+16*9 , 12+16*(4+PerNo),Pernum[PerNo].phone);
  521. }

  522. Key_up_down=ChooseLineMan;
  523. Key_exit=Menu_Init;
  524. }
  525. /***********************************************************************
  526.                条件查找(可混音输入)
  527. ***********************************************************************/
  528. void TermRefer(void)
  529. {
  530. char Temp[20]={' '};
  531. int temp=0;
  532. int i,j,n=0,k;
  533. int InputCharLen=0;
  534. int LineNo=0;
  535. setbkcolor(YELLOW);
  536.     setcolor(Color);
  537. setfillstyle(YELLOW);
  538. bar3d(10 , 10 , 310 , 470 , 3 , 1);
  539. loadimage(NULL, "15.jpg");
  540. setbkcolor(BROWN);
  541.     setcolor(YELLOW);
  542. setfillstyle(BROWN);
  543. bar3d(10 , 10 , 310 , 50 , 1 , 1);
  544. bar3d(310-16*4,430,310,470,1,1);
  545. outtextxy(15,30,"请输入您需要查找的姓名:");
  546. outtextxy(258 ,442 ,"退 出");
  547. InputBox(Temp,20,"请输入姓名:");
  548. outtextxy(15+16*12,30,Temp);
  549. setcolor(YELLOW);
  550. setbkcolor(BLACK);
  551. while (Temp[n]!='\0')
  552. {
  553.   InputCharLen++;
  554.   n++;
  555. }
  556. for (i=0; i<pernum; i++)
  557. {
  558.   temp=0;
  559.   for (k=0;k<InputCharLen;k++)
  560.   {
  561.    for (j=0;j<20;j++)
  562.    {
  563.     if(Pernum[i].name[j]==Temp[k])
  564.     {
  565.      temp++;
  566.     }
  567.    }
  568.   }  
  569.   if (temp==InputCharLen)
  570.   {
  571.    outtextxy(15+16*1 , 12+16*(6+LineNo),Pernum[i].name);
  572.    outtextxy(15+16*9 , 12+16*(6+LineNo),Pernum[i].phone);
  573.    LineNo++;
  574.   }
  575. }
  576. if (LineNo==0)
  577. {
  578.   outtextxy(15+16*3,12+16*7,"没找到符合您要求的人");
  579. }
  580. setbkcolor(BLACK);
  581. outtextxy(15+16*0 , 12+16*3,"查找结果如下:");
  582. setcolor(GREEN);
  583. outtextxy(15+16*1 , 12+16*5,"姓名");
  584. outtextxy(15+16*9 , 12+16*5,"电话号码");
  585. Key_up_down=Null;
  586. Key_exit=DisAllLineMan;
  587. }
  588. /***********************************************************************
  589.                 选择服务项
  590. ***********************************************************************/
  591. void ChooseOption(int num)
  592. {
  593. Menu._2+=num;
  594. if (Menu._2==5)
  595. {
  596.   Menu._2=1;
  597. }
  598. if (Menu._2<1)
  599. {
  600.   Menu._2=4;
  601. }
  602. setbkcolor(YELLOW);
  603.     setcolor(Color);
  604. setfillstyle(YELLOW);
  605. bar3d(10 , 240 , 160 , 470 , 3 , 1);
  606. setcolor(BLACK);
  607. outtextxy(15,240+16*1,"◆打开");
  608. outtextxy(15,240+16*2,"◆添加联系人");
  609. outtextxy(15,240+16*3,"◆删除联系人");
  610. outtextxy(15,240+16*4,"◆查找联系人");

  611. setbkcolor(BROWN);
  612.     setcolor(Color);
  613. setfillstyle(BROWN);
  614. bar3d(10,240+16*(Menu._2),160,240+16*(Menu._2+1),1,1);
  615. setcolor(LIGHTGRAY);
  616. switch(Menu._2)
  617. {
  618. case 1:outtextxy(15,240+16*1,"◆打开");
  619.   break;
  620. case 2:outtextxy(15,240+16*2,"◆添加联系人");
  621.   break;
  622. case 3:outtextxy(15,240+16*3,"◆删除联系人");
  623.   break;
  624. case 4:outtextxy(15,240+16*4,"◆查找联系人");
  625.   break;
  626. default:break;
  627. }
  628. }
  629. void ServeOption(void)                //服务项初始化
  630. {
  631. Menu._2=1;Menu._3=0;
  632. setbkcolor(YELLOW);
  633.     setcolor(Color);
  634. setfillstyle(YELLOW);
  635. bar3d(10 , 240 , 160 , 470 , 3 , 1);
  636. setcolor(BLACK);
  637. outtextxy(15,240+16*1,"◆打开");
  638. outtextxy(15,240+16*2,"◆添加联系人");
  639. outtextxy(15,240+16*3,"◆删除联系人");
  640. outtextxy(15,240+16*4,"◆查找联系人");
  641. setbkcolor(BROWN);
  642.     setcolor(Color);
  643. setfillstyle(BROWN);
  644. bar3d(10,(240+16),160,240+16*2,1,1);
  645. setcolor(LIGHTGRAY);
  646. outtextxy(15,240+16*1,"◆打开");

  647. Key_up_down=ChooseOption;
  648. Key_exit=DisAllLineMan;
  649. }
  650. void ChooseServe(void)             //选择服务项操作
  651. {
  652. switch(Menu._2)
  653. {
  654. case 0:ServeOption();
  655.   break;
  656. case 1:OpenLinemanOption();
  657.   break;
  658. case 2:AddLinkeman();
  659.   break;
  660.   case 3:DeleteOption();
  661.   break;
  662. case 4:TermRefer();
  663.    break;  
  664. default:break;
  665. }
  666. }
  667. /***********************************************************************
  668.                 按键扫描
  669. ***********************************************************************/
  670. int GetKeyValue(void)
  671. {
  672. static int value=0;
  673. int ch=0;

  674. ch=getch();
  675. if (ch==224)
  676. {
  677.   ch=getch();
  678.   switch(ch)
  679.   {
  680.   case 72: return 1;break;
  681.   case 80: return 2;break;
  682.   case 75: return 3;break;
  683.   case 77: return 4;break;
  684.   
  685.   default :break;
  686.   }
  687. }
  688. return 10;
  689. }
  690. /***********************************************************************
  691.                 按键处理函数
  692. ***********************************************************************/
  693. void Sure(void)                 //确认
  694. {
  695. if(Menu._1>0)
  696. {
  697.   ChooseServe();
  698. }else
  699.   DisAllLineMan();
  700. }
  701. void Up_key(void)              //上翻
  702. {
  703. (*Key_up_down)(-1);
  704. }
  705. void Down_key(void)            //下翻
  706. {
  707. (*Key_up_down)(+1);
  708. }
  709. void Exit_key(void)            //退出
  710. {
  711. (*Key_exit)();
  712. }
  713. void Key_with(int name)        //按键选择
  714. {
  715. switch(name)
  716. {
  717. case 1:Up_key();break;
  718. case 2:Down_key();break;
  719. case 3:Sure();break;
  720. case 4:Exit_key();break;
  721. default :break;
  722. }
  723. }
  724. /***********************************************************************
  725.                 main函数
  726. ***********************************************************************/
  727. void main(void)
  728. {
  729.     int MenuCnt = 0 ;
  730. BackColor = WHITE ;
  731.     Color = RED ;
  732.     initgraph(320 , 480);
  733. Menu_Init();
  734. FileInit();
  735. SaveFile();
  736. while (1)
  737. {
  738.   MenuCnt=GetKeyValue();
  739.   if (MenuCnt<5)
  740.   {
  741.    Key_with(MenuCnt);
  742.   }
  743. }
  744. closegraph();
  745. }
复制代码



回复

使用道具 举报

ID:12060 发表于 2024-4-17 10:30 | 显示全部楼层
厉害,这是对那款单片机或者什么IDE开发出来的呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表