功能:添加信息,显示信息,查找信息,修改信息,删除信息,彩色打印,按名字排序。
信息只有姓名和号码,原理都一样。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n = 0;
void menu()// 主界面
{
printf("****************welcome to use********\n");
printf("**1 功能简介 2 添加信息**\n");
printf("**3 查看信息 4 查找信息**\n");
printf("**5 修改信息 6 删除信息**\n");
printf("**7 退出程序 8 有待完善**\n");
printf("*************************************\n");
}
function()
{
printf("!!!!!!!!想多了!!!!!!! \n");
}
void welcome()//欢迎
{
system("clear");
printf("\n\n\n\n\n\n\n\n\n\n\n************************************************\n");
printf("********************WELCOME*********************\n");
printf("***************老式山寨诺基亚版*****************\n");
sleep(2);
}
struct com
{
char name[20];
int num;
};
struct bbb
{
char name[20];
int num;
};
void add(struct com *s[])//添加信息
{
while(1)
{
s[n] = (struct com *)malloc(sizeof(struct com));
printf("please input name:\n");
scanf("%s",s[n]->name);
if(strcmp(s[n]->name,"fine") == 0)
break;
printf("please input the num:\n");
scanf("%d",&s[n]->num);
n++;
}
char gggg[20] = {0};//对name冒泡排序
int ii = 0;
int i;int k;
for(i = 0;i < n - 1;i++)
{
for (k = n - 1;k > 0;k--)
{
if(strcmp(s[k]->name,s[k-1]->name) < 0)
{
strcpy(gggg,s[k]->name);
strcpy(s[k]->name,s[k - 1]->name);
strcpy(s[k - 1]->name,gggg);
ii = s[k]->num;
s[k]->num = s[k - 1]->num;
s[k - 1] -> num = ii;
}
}
}
}
void scrion(struct com *s[])//显示信息
{
int j;
for(j = 0;j < n; j++)
{
int z,zz;
zz = j % 7
z= zz + 31;
printf("NO.%d :\n ",j);
printf("\033[40;%dm 姓名: %s \033[0m\n",z,s[j]->name);
printf("\033[40;%dm 号码: %d \033[0m\n",z,s[j]->num);
printf("*************************************\n");
}
}
void lookfor(struct com *s[])//寻找信息
{
char lookname[20] = {0};
printf("please input the name to lookfor:\n");
scanf("%s",lookname);
int x = 0;
for(x = 0;x < n;x++)
{
if(strcmp(lookname,s[x]->name)==0)
{
printf("name:%s\n",s[x]->name);
printf("num:%d\n",s[x]->num);
break;
}
}
if(x == n - 1)
printf("没有这个人名\n");
}
void change(struct com *s[])//修改信息
{
char changename[20] = {0};
printf("please input the name you want to change:\n");
scanf("%s",changename);
int b = 0;
for(b = 0;b < n;b++)
{
if(strcmp(changename,s[b]->name)==0)
{
printf("1 change name \n2 change num\n");
int m;
scanf("%d",&m);
if(m == 1)
{
char newname[20] = {0};
printf("please input new name:\n");
scanf("%s",newname);
strcpy(s[b]->name,newname);
}
if(m == 2)
{
int c;
printf("please input the new num:\n");
scanf("%d",&c);
s[b]->num = c;
}
}
}
if(b == n - 1)
printf("没有这个人名\n");
}
delperson(struct com *s[])//删除信息
{
printf("please input the person to del:\n");
char delname[20] = {0};
scanf("%s",delname);
int y = 0;
int yy = 0;
for(y = 0;y < n;y++)
{
if(strcmp(delname,s[y]->name)==0)
{
struct bbb *s2[2] = {0};
s2[2] = (struct bbb *)malloc(sizeof(struct bbb));
for(yy = y; yy < n; yy++)
{
strcpy(s[yy]->name,s[yy + 1]->name);
s[yy]->num = s[yy + 1]->num;
}
free(s[n]);
n = n - 1;
}
}
if(y == n - 1)
printf("没有这个人名\n");
}
int main()
{
struct com *s[1000] = {0};
int choose;
welcome();
while (1)
{
menu();
scanf("%d",&choose);
switch(choose)
{
case 1:function();
break;
case 2:
add(s);
break;
case 3:
scrion(s);
break;
case 4:
lookfor(s);
break;
case 5:
change(s);
break;
case 6:delperson(s);
break;
case 7:exit(1);
case 8:function();
break;
}
}
}