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

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

2018-02-15 10:08 696 查看

 简介:

用顺序表实现电话本的功能(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;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息