找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2657|回复: 0
打印 上一主题 下一主题
收起左侧

自己写的c语言电话簿源程序

[复制链接]
跳转到指定楼层
楼主
自己研究出来的


c语言源程序如下:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>

  4. struct person       //创造结构体
  5. {
  6.         char name[8];
  7.         char tel[15];
  8. };

  9. char filename[20];
  10. FILE *fp;
  11. void creat();      //创建一个通讯录
  12. void output();
  13. void search();
  14. void append();
  15. void modify();
  16. void del();

  17. void main()
  18. {
  19.                 int m;char k;

  20.                 printf("\n请输入你要打开的通讯录文件名:");
  21.                 gets(filename);
  22.                 if((fp=fopen(filename,"r"))==NULL)
  23. {
  24.                 printf("\n当前没有此通讯录文件,现在是否执行创建(Y/N)?:");
  25.                 scanf("%c",&k);
  26.                 if(k!='Y'&&k!='N'&&k!='y'&&k!='n')
  27.                 {       
  28.                         printf("\n输入有误,请再次输入一个值:");
  29.                         scanf("%c",&k);
  30.                 }
  31.             else if(k=='Y'||k=='y')
  32.                 {
  33.                         creat();
  34.                 }
  35.                 else if(k=='N'||k=='n')
  36.                 {
  37.                         printf("\n由于你选择了退出,现在程序即将关闭!\n");
  38.                         exit(0);
  39.                 }
  40. }
  41. else
  42. {
  43.                 printf("\n你要打开的通讯录文件%s已存在,现在可直接对其操作:\n",filename);
  44.                 printf("通讯录文件中现已有的通讯信息:\n");
  45.                 output();
  46.                 printf("\n请选择根据提示选择1~5对通讯录文件进行操作。\n");
  47. }
  48. while (1)
  49. {
  50.          printf("\n\n添加,请按1"); printf("\n查找,请按2");
  51.      printf("\n修改,请按3");  
  52.          printf("\n删除,请按4");
  53.            printf("\n输出,请按5");
  54.          printf("\n退出,请按0\n");
  55.          scanf("%d",&m);
  56.         if(m>=0&&m<=5)
  57.         {
  58.          switch(m)
  59.          {
  60.          case 1: append();break;
  61.          case 2: search();break;
  62.          case 3: modify();break;
  63.             case 4: del();break;
  64.          case 5:output();break;
  65.          case 0:exit(0);
  66.          }
  67.          printf("\n\n操作完毕,请再次选择!");
  68. }
  69.          else printf("\n\n操作错误,请再次选择!:");
  70. }
  71. }
  72. /**********************************************************************/
  73. void creat()
  74. {
  75.         struct person one;printf("\n请输入通讯簿文件名:");
  76.         scanf("%s",filename);
  77.         if ((fp=fopen(filename,"w"))==NULL)
  78.         {
  79.                 printf("\n不能建立通讯薄!");
  80.                 exit(0);
  81.         }
  82.         fprintf(fp,"%-10s%-20s%-30s%-20s\n","姓名","电话号码","住址","电子邮箱");
  83.         printf("\n请输入姓名:\n");
  84.          scanf("%s",one.name);
  85.         while (strcmp(one.name,"0"))
  86. {
  87.                 printf("请输入电话号码:\n");
  88.                 scanf("%s",one.tel);
  89.                 fprintf(fp,"%-10s%-20s%\n",one.name,one.tel);
  90.                 printf("请再输入另一个人的姓名,若想要结束,请输入0\n");
  91.                 scanf("%s",one.name);
  92. }
  93. fclose(fp);
  94. }

  95. void output()
  96. {
  97.         struct person one;
  98.         if((fp=fopen(filename,"r"))==NULL)
  99.         {
  100.                 printf("\n不能打开通讯薄!");
  101.                 exit(0);
  102.         }
  103. while (!feof(fp))
  104. {
  105.         fscanf(fp,"%s%s\n",one.name,one.tel);
  106.         printf("%-10s%-20s%\n",one.name,one.tel);
  107. }
  108.         fclose(fp);
  109. }

  110. void append()
  111. {
  112.         struct person one;
  113.         if ((fp=fopen(filename,"a"))==NULL)
  114.         {
  115.                 printf("\n不能打开通讯薄!");
  116.                 exit(0);
  117.         }
  118.         printf("\n请输入添加的姓名\n");
  119.         scanf("%s",one.name);
  120.         printf("请输入电话号码:\n");
  121.         scanf("%s",one.tel);
  122.        
  123.         printf("%-10s%-20s%\n",one.name,one.tel);
  124.         fprintf(fp,"%-10s%-20s%\n",one.name,one.tel);
  125.         fclose(fp);
  126. }

  127. void search()
  128. {
  129.         int flag=0;
  130.         char namekey[8];
  131.         struct person one;
  132.         printf("\n请输入姓名:");
  133.         scanf("%s",namekey);
  134.         if((fp=fopen(filename,"r"))==NULL)
  135.         {
  136.                 printf("\n不能打开通讯薄!");
  137.                 exit(0);
  138.         }
  139. while(!feof(fp))
  140. {
  141.          fscanf(fp,"%s%s\n",one.name,one.tel);
  142.          if (!strcmp(namekey,one.name))
  143.          {
  144.                  printf("\n\n已查到,记录为:");
  145.                  printf("\n%-10s%-20s%",one.name,one.tel);
  146.                  flag=1;
  147.          }
  148. }
  149.          if(!flag)
  150.                  printf("\n\n对不起,通讯薄中没有此人的记录。");
  151.                          fclose(fp);
  152. }

  153. void modify()
  154. {
  155.         int flag=0;
  156.         long offset;
  157.         char namekey[8];
  158.         struct person one;printf("\n请输入姓名:");
  159.         scanf("%s",namekey);
  160.         if((fp=fopen(filename,"r+"))==NULL)
  161.         {
  162.                 printf("\n不能打开通讯薄!");
  163.                 exit(0);
  164.         }
  165. while(!feof(fp))
  166. {
  167.         offset=ftell(fp);
  168.         fscanf(fp,"%s%s\n",one.name,one.tel);
  169.         if(!strcmp(namekey,one.name))
  170.         {
  171.         flag=1;break;
  172.         }
  173. }
  174. if(flag)
  175. {
  176.         printf("\n已查到,记录为");
  177.         printf("\n%-10s%-20s%",one.name,one.tel);
  178.         while (1)
  179.         {
  180.                 printf("\n\n修改姓名,请按2");
  181.                 printf("\n修改电话,请按3");
  182.                 printf("\n退出,请按6\n");
  183.                 scanf("%d",&flag);
  184.                 if (flag==2)
  185.                 {
  186.                         printf("请输入新的姓名\n");
  187.                         scanf("%s",one.name);
  188.                         printf("修改完毕,请指示!:\n");
  189.                 }
  190.             if (flag==3) {printf("请输入新的电话\n");
  191.                 scanf("%s",one.tel);
  192.                 printf("修改完毕,请指示!:\n");
  193.                 }
  194.                 if (flag==6) break;

  195. }
  196. fseek(fp,offset,0);
  197. fprintf(fp,"%-10s%-20s%\n",one.name,one.tel);
  198. printf("\n%-10s%-20s%",one.name,one.tel);
  199. }
  200. else printf("不存在指定的名字!\n");
  201. fclose(fp);
  202. }

  203. void del()
  204. {
  205. int m,flag=0;
  206. long offset;
  207. char namekey[8];
  208. struct person one;
  209. printf("\n请输入姓名:");
  210. scanf("%s",namekey);
  211. if((fp=fopen(filename,"r+"))==NULL)
  212. {
  213.         printf("\n不能打开通讯簿!");
  214.         exit(0);
  215. }
  216. while(!feof(fp))
  217. {
  218.         offset=ftell(fp);
  219.         fscanf(fp,"%s%s\n",one.name,one.tel);
  220.         if(!strcmp(namekey,one.name))
  221.         {
  222.                 flag=1;
  223.                 break;
  224.         }
  225. }
  226. if(flag)
  227. {
  228.         printf("\n已查到,记录为");
  229.         printf("\n%-10s%-20s%",one.name,one.tel);
  230.         printf("\n确定要删除,按1;不删除,按0:");
  231.         scanf("%d",&m);
  232.         if (m)
  233.                 {fseek(fp,offset,SEEK_SET);
  234.                         fprintf(fp,"%-10s%-20s\n","",""); }

  235.                 }
  236.         else
  237.                 printf("\n对不起,通讯簿中没有此人的记录。");
  238.                 fclose(fp);
  239. ……………………

  240. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
C语言课程设计.zip (1.17 MB, 下载次数: 6)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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