您的位置:首页 > 编程语言 > C语言/C++

C语言 用顺序表实现电话本的功能

2015-10-10 22:35 615 查看
简介:

顺序表实现电话本的功能(C语言)

电话本具有如下4个功能:

1.创建一个电话本,电话本里面包含名字和电话号码

2.在指定位置插入一个名字和电话号码

3.在指定位置删除一个名字和电话号码

4.打印电话本

//其中那个color函数是我为了美观加上去的,如果感觉不需要的话可以将代码中所有有关color的都删掉即可

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <windows.h>
using namespace std;
const int N = 1000+10;
int n;
struct Node
{
char name[100];
char number[20];
};
typedef struct
{
struct Node* mylist;
int len;
int listsize;
}sqlist;

void Init(sqlist &s1);
void Creat(sqlist &s1);
void Delet(sqlist &s1);
void Add(sqlist &s1);
void Print(sqlist &s1);
void color(const unsigned short  color1);

int main()
{
sqlist s1;
Init(s1);
color(10);
printf("\n\n\n\n        --------------- WSM's phonetxt-------------------\n\n");
printf("             |You could chose these ops:            |\n");
printf("             |   1.Creat the phonetxt               |\n");
printf("             |   2.Delet the member in the phonetxt |\n");
printf("             |   3.Add the member in the phonetxt   |\n");
printf("             |   4.Print the phonetxt               |\n");
color(14);
printf("\n\n\n\n     Now,you can enter an optiton:");

int op;
while(scanf("%d",&op)!=EOF)
{
if(op==1) Creat(s1);
else if(op==2) Delet(s1);
else if(op==3) Add(s1);
else if(op==4) Print(s1);
else
{
color(4);
printf("     You input is invalid,reinput please:)\n");
color(14);
}
printf("\n     Now,you can enter an optiton:");
}
return 0;
}

void Init(sqlist &s1)
{
s1.mylist = (Node *)malloc(100*sizeof(Node));
s1.len = 0;
s1.listsize = 100;
return;
}
void Creat(sqlist &s1)
{
s1.len = 0;
cout<<"     how many numbers do you want to built:";
scanf("%d",&n);
cout<<"     please input their informations:"<<endl;
for(int i=1;i<=n;i++)
{
printf("       input the %d person name:",i);
scanf(" %s",s1.mylist[i-1].name);
printf("       input the %d person phonenumber:",i);
scanf(" %s",s1.mylist[i-1].number);
s1.len++;
}
color(9);
cout<<"     well done,the phonetxt has been created!!!"<<endl;
color(14);
return;
}

void Delet(sqlist &s1)
{
cout<<"     please enter the number you want to delet:";
heredelet:
int x;
scanf("%d",&x);
if( x<1 || x>s1.len)
{
color(4);
cout<<"     sorry,your input is invalid,please input again:";
color(14);
goto heredelet;
}

struct Node *p,*q;
p = &(s1.mylist[x-1]);
q = s1.mylist + s1.len -1;
for(++p;p<=q;++p) *(p-1) = *p;
--s1.len;

color(9);
cout<<"     well done,the member has been deleted!!!"<<endl;
color(14);
return;
}
void Add(sqlist &s1)
{
cout<<"     please enter the number you want to add:";
hereadd:
int x;
scanf("%d",&x);
if( x<1 || x>s1.len+1)
{
color(4);
cout<<"     sorry,your input is invalid,please input again:";
color(14);
goto hereadd;
}

struct Node cur;
printf("       input the person name:");
scanf(" %s",cur.name);
printf("       input the person phonenumber:");
scanf(" %s",cur.number);

struct Node *p,*q;
q = &(s1.mylist[x-1]);
for(p=&(s1.mylist[s1.len-1]);p>=q;--p) *(p+1) = *p;
*q = cur;
++s1.len;

color(9);
cout<<"     well done,the member has been added!!!"<<endl;
color(14);
return;
}
void Print(sqlist &s1)
{
color(8);
printf("        Name------phonenumber\n");

struct Node *q = s1.mylist;
for(q;q<s1.mylist+s1.len;q++)
{
printf("           %s       %s\n",q->name,q->number);
}
color(14);
color(9);
cout<<"     well done,the phonetxt is above!!!"<<endl;
color(14);
return;
}

void color(const unsigned short color1)
{
if(color1>=0&&color1<=15)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);
else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息