C語(yǔ)言使用順序表實(shí)現(xiàn)電話(huà)本功能
簡(jiǎn)介:
用順序表實(shí)現(xiàn)電話(huà)本的功能(C語(yǔ)言)
電話(huà)本具有如下4個(gè)功能:
1.創(chuàng)建一個(gè)電話(huà)本,電話(huà)本里面包含名字和電話(huà)號(hào)碼
2.在指定位置插入一個(gè)名字和電話(huà)號(hào)碼
3.在指定位置刪除一個(gè)名字和電話(huà)號(hào)碼
4.打印電話(huà)本
代碼:
//其中那個(gè)color函數(shù)是我為了美觀(guān)加上去的,如果感覺(jué)不需要的話(huà)可以將代碼中所有有關(guān)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;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組模擬實(shí)現(xiàn)順序表流程詳解
- C語(yǔ)言實(shí)現(xiàn)順序表的基本操作指南(注釋很詳細(xì))
- 新手向超詳細(xì)的C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)順序表
- C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)順序表詳解
- C語(yǔ)言實(shí)現(xiàn)的順序表功能完整實(shí)例
- C語(yǔ)言順序表的實(shí)現(xiàn)代碼
- C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)順序表的實(shí)現(xiàn)代碼
- C語(yǔ)言?超詳細(xì)順序表的模擬實(shí)現(xiàn)實(shí)例建議收藏
相關(guān)文章
淺談時(shí)間戳與日期時(shí)間互轉(zhuǎn)C語(yǔ)言
下面小編就為大家?guī)?lái)一篇淺談時(shí)間戳與日期時(shí)間互轉(zhuǎn)C語(yǔ)言。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
讓?xiě)?yīng)用程序只運(yùn)行一個(gè)實(shí)例的實(shí)現(xiàn)方法
我們?cè)谑褂谩?60軟件管家》時(shí)發(fā)現(xiàn),在《360軟件管家》已經(jīng)運(yùn)行了的情況下,再次點(diǎn)擊《360軟件管家》的圖標(biāo),那么它不會(huì)再運(yùn)行另外一個(gè)《360軟件管家》,而是將已有的《360軟件管家》給激活,始終只能運(yùn)行一個(gè)《360軟件管家》的實(shí)例2013-05-05
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
線(xiàn)性表是最基本、最簡(jiǎn)單、也是最常用的一種數(shù)據(jù)結(jié)構(gòu)。線(xiàn)性表(linear list)是數(shù)據(jù)結(jié)構(gòu)的一種,一個(gè)線(xiàn)性表是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列,這篇文章帶你學(xué)習(xí)下線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)2021-11-11
C/C++實(shí)現(xiàn)日期計(jì)算器的示例代碼
本篇文章主要介紹了C/C++實(shí)現(xiàn)日期計(jì)算器的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
C語(yǔ)言入門(mén)篇--初識(shí)結(jié)構(gòu)體
本篇文章是基礎(chǔ)篇,適合c語(yǔ)言剛?cè)腴T(mén)的朋友,本文對(duì)c語(yǔ)言的結(jié)構(gòu)體做了簡(jiǎn)單的分析,幫助大家快速入門(mén)c語(yǔ)言的世界,更好的理解c語(yǔ)言2021-08-08

