一个综合示例:通讯录管理系统

      本示例充分利用前期所学一些C语言编程知识,主要涉及到的有:结构体,文件的读写等。本通讯录设定可以保存100条通讯录,每条通讯录包括:姓名,街道,城市,国家,邮编。程序运行后,显示一个主菜单:

      1、添加联系人

      2、删除联系人

      3、显示所有联系人

      4、保存联系人条目到文件

      5、从文件读取联系人条目

      6、退出


#include 
#include 

//定义本通讯录最大容量为100条
#define MAX 100

//结构体,用以存储通讯录的具体信息
struct addr {
  char name[50];
  char street[50];
  char city[50];
  char state[20];
  unsigned long int zip;
} addr_list[MAX];

//后文将会用到的若干子程序
void init_list(void);
void enter(void);
void delete(void);
void list(void);
void load(void);
void save(void);
int menu_select(void);
void find_free(void);

//主程序
int main(void)
{
  char choice;

  //初始化通讯录结构体,将所有字段都置为空
  init_list();

  //空的for语句构成一个无限循环,显示主菜单提示用户输入并执行对应的操作
  for(;;) {
    choice = menu_select();
    switch(choice) {
      case 1: enter();
        break;
      case 2: delete();
        break;
      case 3: list();
        break;
      case 4: save();
        break;
      case 5: load();
        break;
      case 6: exit(0);
    }
  }

  return 0;
}

//初始化通讯录,将所有条目的name字段都设为“\0”
void init_list(void)
{
  register int t;

  for(t=0; t6);
  return c;
}

//输入一个通讯录的条目
void enter(void)
{
  int slot;
  char s[80];

  slot = find_free();

  if(slot==-1) {
    printf("\nList Full");
    return;
  }

  printf("Enter name: ");
  gets(addr_list[slot].name);

  printf("Enter street: ");
  gets(addr_list[slot].street);

  printf("Enter city: ");
  gets(addr_list[slot].city);

  printf("Enter state: ");
  gets(addr_list[slot].state);

  printf("Enter zip: ");
  gets(s);
  addr_list[slot].zip = strtoul(s, '\0', 10);//
}

//搜寻一个空白的条目
int find_free(void)
{
  register int t;

  for(t=0; addr_list[t].name[0] && t=0 && slot < MAX)
    addr_list[slot].name[0] = '\0';
}

//在屏幕上显示所有的通讯录条目
void list(void)
{
  register int t;

  for(t=0; t

一个综合示例:通讯录管理系统_第1张图片


一个综合示例:通讯录管理系统_第2张图片

你可能感兴趣的:(C)