⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++contact.txt

📁 编程语言排序等实用功能添加、删除等
💻 TXT
字号:
题目要求如下:

设计目标:设计一个实用的小型通信录程序,具有查询和删除功能,并且能够打开和修改指定文件及将多个文件组成一个文件。

功能设计要求:

1.建立文件

(1)存储文件可以使用默认文件名或指定文件名。

(2)可以不保存输入记录,但需要确认是否保存输入记录。

(3)如果已经有文件,只能在其后追加。

(4)新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容

(5)可以将指定文件的内容追加到目前内存中的记录链表后面。

2.文件的存取和显示

(1)可以单独存取文件。

(2)可以随时显示内存中记录的全部内容。

(3)可以直接存取指定文件

3.删除记录

(1)可以按“姓名”或“电话”方式删除记录并更新链表内容。

(2)能给出被删除记录的信息。

(3)如果已经是空表,删除时应给出提示信息并返回主菜单。

(4)如果没有要删除的信息,输出没有找到的提示信息

(5)删除操作仅限于内存,只有执行存记录操作时,才能覆盖原记录。

4.查询记录

(1)可以按“姓名”或“电话”方式查询记录。

(2)能给出查询记录的信息。

(3)如果查询的信息不存在,输出“没有找到”的信息。

 

程序如下:

#include   "stdio.h"       /*I/O函数*/   
  #include   "stdlib.h"   /*标准库函数*/   
  #include   "string.h"/*字符串函数*/   
  #include   "ctype.h"   /*字符操作函数*/   
 #define   M   50     /*定义常数表示记录数*/   
  typedef   struct   /*定义数据结构*/   
  {   
        char   name[20];   /*姓名*/   
        char   units[30];     /*单位*/   
        char   tele[10];     /*电话*/   
  }ADDRESS;   
  /******以下是函数原型*******/   
  int   enter(ADDRESS   t[]);   /*输入记录*/   
  void   list(ADDRESS   t[],int   n);   /*显示记录*/   
  void   search(ADDRESS   t[],int   n);   /*按姓名查找显示记录*/   
  int   delete(ADDRESS   t[],int   n);   /*删除记录*/   
  int     add(ADDRESS   t[],int   n);   /*插入记录*/   
  void   save(ADDRESS   t[],int   n);   /*记录保存为文件*/   
  int   load(ADDRESS   t[]);     /*从文件中读记录*/   
  void   display(ADDRESS   t[]);   /*按序号查找显示记录*/   
  void   sort(ADDRESS   t[],int   n);   /*按姓名排序*/   
  void   qseek(ADDRESS   t[],int   n);   /*快速查找记录*/   
  void   copy();     /*文件复制*/   
  void   print(ADDRESS   temp);   /*显示单条记录*/   
  int   find(ADDRESS   t[],int   n,char   *s)   ;   /*查找函数*/   
  int   menu_select();     /*主菜单函数*/   
  /******主函数开始*******/   
  main()   
  {   
        int   i;   
        ADDRESS   adr[M];     /*定义结构体数组*/   
        int   length;     /*保存记录长度*/   
        clrscr();     /*清屏*/   
        for(;;)/*无限循环*/   
        {   
              switch(menu_select())       /*调用主菜单函数,返回值整数作开关语句的条件*/   
              {   
    case   0:length=enter(adr);break;/*输入记录*/   
    case   1:list(adr,length);break;   /*显示全部记录*/   
    case   2:search(adr,length);break;   /*查找记录*/   
    case   3:length=delete(adr,length);break;   /*删除记录*/   
    case   4:length=add(adr,length);     break;       /*插入记录*/   
    case   5:save(adr,length);break;   /*保存文件*/   
    case   6:length=load(adr);   break;   /*读文件*/   
    case   7:display(adr);break;     /*按序号显示记录*/   
    case   8:sort(adr,length);break;   /*按姓名排序*/   
    case   9:qseek(adr,length);break;   /*快速查找记录*/   
    case   10:copy();break;   /*复制文件*/   
    case   11:exit(0);   /*如返回值为11则程序结束*/   

              }   
        }   
  }   
  /*菜单函数,函数返回值为整数,代表所选的菜单项*/   
  menu_select()   
  {   
        char   s[80];   
        int   c;   
        gotoxy(1,25);/*将光标定为在第25行,第1列*/   
        printf("press   any   key   enter   menu......\n");/*提示压任意键继续*/   
        getch();   /*读入任意字符*/   
        clrscr();   /*清屏*/   
        gotoxy(1,1);   
        printf("********************MENU*********************\n\n");   
        printf(" 0.   Enter   record\n");   
        printf(" 1.   List   the   file\n");   
        printf(" 2.   Search   record   on   name\n");   
        printf(" 3.   Delete   a   record\n");   
        printf(" 4.   add   record   \n");   
        printf(" 5.   Save   the   file\n");   
        printf(" 6.   Load   the   file\n");   
        printf(" 7.   display   record   on   order\n");   
        printf("                 8.   sort   to   make   new   file\n");   
        printf("                 9.   Quick   seek   record\n");   
        printf(" 10.   copy   the   file   to   new   file\n");   
        printf("                 11.   Quit\n");   
        printf("***********************************************\n");   
        do{   
              printf("\n   Enter   you   choice(0~11):");   /*提示输入选项*/   
              scanf("%s",s);   /*输入选择项*/   
              c=atoi(s);   /*将输入的字符串转化为整型数*/   
        }while(c<0||c>11);   /*选择项不在0~11之间重输*/   
        return   c;   /*返回选择项,主程序根据该数调用相应的函数*/   
  }   
  /***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/   
  int     enter(ADDRESS   t[])   
  {   
        int   i,n;   
        char   *s;   
        clrscr();   /*清屏*/   
        printf("\nplease   input   num   \n");   /*提示信息*/   
        scanf("%d",&n);   /*输入记录数*/   
        printf("please   input   record   \n");   /*提示输入记录*/   
        printf("name                           unit                                           telephone\n");   
        printf("------------------------------------------------\n");     for(i=0;i<n;i++)   
        {   
              scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);     /*输入记录*/   
              printf("----------------------------------------------\n");   
        }   
        return   n;     /*返回记录条数*/   
  }   
  /*显示记录,参数为记录数组和记录条数*/   
  void   list(ADDRESS   t[],int   n)   
  {   
        int   i;   
        clrscr();   
        printf("\n\n*******************ADDRESS******************\n");   
        printf("name                               unit                                           telephone\n");   
        printf("------------------------------------------------\n");   
        for(i=0;i<n;i++)   
        printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);   
        if((i+1)%10==0)       /*判断输出是否达到10条记录*/   
        {   
              printf("Press   any   key   continue...\n");   /*提示信息*/   
              getch();     /*压任意键继续*/   
        }   
        printf("************************end*******************\n");   
  }   
  /*查找记录*/   
  void   search(ADDRESS   t[],int   n)   
  {   
        char   s[20];       /*保存待查找姓名字符串*/   
        int   i;       /*保存查找到结点的序号*/   
        clrscr();       /*清屏*/   
        printf("please   search   name\n");   
        scanf("%s",s);   /*输入待查找姓名*/   
        i=find(t,n,s);   /*调用find函数,得到一个整数*/   
        if(i>n-1)     /*如果整数i值大于n-1,说明没找到*/   
              printf("not   found\n");   
        else   
              print(t[i]);     /*找到,调用显示函数显示记录*/   
  }   
  /*显示指定的一条记录*/   
  void   print(ADDRESS   temp)   
  {   
        clrscr();   
        printf("\n\n********************************************\n");   
        printf("name                                 unit                                             telephone\n");   

        printf("------------------------------------------------\n");   
        printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);   
        printf("**********************end***********************\n");   
  }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -