Linux C_mysql数据库写的一个“电话本管理程序”

/****************************************************************************
模拟手机平台写一个”电话本管理程序“
1.显示操作菜单
2.根据菜单可以做出如下操作
	a.显示出所有联系人电话号码	
	b.根据姓名查找电话号码
	c.支持按照姓氏查找电话号码
	d.允许修改已经查找到联系人的号码
	e.允许删除一个联系人
	f.允许增加一个联系人的号码,如果联系人已经存在,一个联系人最多保存三个号码
3.退出程序
*****************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<mysql.h>
#include<string.h>

void createTable(MYSQL * conn)//建立数据库和表
{
	
  mysql_query(conn,"drop database if exists phonebook;");
  mysql_query(conn,"create database phonebook;");
  mysql_query(conn,"use phonebook;");
  mysql_query(conn,"create table contacts(Name varchar(20) default 'no name',Telnum varchar(20));");
  mysql_query(conn,"insert into contacts values('gw','15974165855');");
  mysql_query(conn,"insert into contacts values('zp','13420995347');");
}

void show_menuAll()
{
	printf("==========欢迎来到手机数据库===========\n");
	printf("\ta.显示所有联系人\n\tb.根据姓名查找号码\n\tc.添加联系人及号码\n\td.删除联系人\n\te.修改联系人号码\n\tf.退出电话簿\n");
	printf("请选择\t");
}

void show_menuName()
{
	printf("\t1.安姓名精确查找\n\t2.按姓氏模糊查找\n\t3.返回\n");
	printf("请选择查找方式:\n");
}

void display_select(MYSQL * conn)//屏幕显示select查询出来的信息 
{
			MYSQL_RES *res;//声明存储结构
		  res=mysql_store_result(conn);
		  int row1=mysql_num_rows(res);
		  int col=mysql_num_fields(res);
		//  printf("row=%d\tcol=%d\n",row1,col);
		  MYSQL_ROW row;//成名取数据的结构,不是指针
		  int i;
		  while((row=mysql_fetch_row(res))!=NULL)
		   {//判断是否数据全部去完,函数返回NULL表示数据取完
		       for(i=0;i<col;i++)
		        {
		       // printf("%s\t%s\n",row[0],row[1]);
		      	   printf("%s\t",row[i]);
		        }
		       printf("\n");
		    }
		   mysql_free_result(res);
}

void select_By_name(MYSQL *conn)//按姓名查询联系人
{
	char name[20];
	scanf("%s",name);
	char sql1[64]="select Telnum from contacts where Name='";
	char sql2[4]="';";
	strcat(sql1,name);
	strcat(sql1,sql2);
	mysql_query(conn,sql1);
	display_select(conn);
	}
void select_By_firstname(MYSQL *conn)//按姓氏查询联系人
{
	char name[20];
	scanf("%s",name);
	char sql1[64]="select Telnum from contacts where Name like '";
	char sql2[4]="%';";
	strcat(sql1,name);
	strcat(sql1,sql2);
	mysql_query(conn,sql1);
	display_select(conn);
}
void insert_Contacts(MYSQL *conn)//插入联系人信息
{
		char tel[20];
		char name[20];
		scanf("%s%s",&name,&tel);
	//insert into contacts values('gw','123213');
		char sql1[64]="insert into contacts values('";
 		char sql2[4]="','";
		char sql3[4]="');";
		strcat(sql1,name);
		strcat(sql1,sql2);
		strcat(sql1,tel);
		strcat(sql1,sql3);
		mysql_query(conn,sql1);
}
void delete_by_name(MYSQL *conn)//按姓名删除联系人
{
	char name[20];
	scanf("%s",name);
	char sql1[64]="delete from Telnum where Name='";
	char sql2[4]="';";
	strcat(sql1,name);
	strcat(sql1,sql2);
	mysql_query(conn,sql1);
	printf("删除成功!\n");
}

void alter_by_name(MYSQL *conn)//修改联系人号码
{
	char name[20];
	char tel[20];
	scanf("%s%s",name,tel);
	char sql1[64]="update student3 set Telnum='";
	char sql2[64]="'where Name='";
	char sql3[4]="';";
	strcat(sql1,tel);
	strcat(sql1,sql2);
	strcat(sql1,sql3);
	mysql_query(conn,sql1);
	printf("修改成功!\n");
}
//主函数
int main(int argc,char *argv[])
{
	MYSQL * conn=NULL;
  conn=mysql_init(NULL);
   if(mysql_real_connect(conn,"localhost","root","root","test",3306,NULL,0)==NULL)
   {
      printf("connect error %s\n",mysql_error(conn));
      return -1;
    }
	createTable(conn);
	
	while(1)
	{
	
		show_menuAll();
		char ch1;//接收屏幕选择;
		scanf("%c",&ch1);

		if(ch1 == 'a')//显示所有联系人信息
		{
				mysql_query(conn,"select * from contacts;");
				display_select(conn);
				printf("\t1.返回\n\t2.退出\n");
				getchar();
				char i;
				scanf("%c",&i);
				if(i=='1')
					continue;
				else
					break;
		}
				
	  if(ch1 == 'b')//根据姓名查找号码
	  {	
			show_menuName();
			getchar();
			char ch2;//
			scanf("%c",&ch2);
			if(ch2 == '1')//按姓名全称查找
				{
					while(1)
						{
							printf("\t青输入联系人全称:\n");
							select_By_name(conn);
							printf("\t1.继续查找\n\t2.退出\n");
							getchar();
							char l;
							scanf("%c",&l);
							if(l=='1')
								continue;
							else
								break;
									
						
								}			
					
				}
			else if(ch2 == '2')//按姓氏模糊查找
					{		
						while(1)
						{				
							printf("\t清输入联系人姓氏:\n");
							select_By_firstname(conn);
							printf("\t1.继续查找\n\t2.退出\n");
							getchar();
							char m;
							scanf("%c",&m);
							if(m=='1')
								continue;
							else
								break;
							
							}	
							
						}
		 else if(ch2 == '3')
					{
						continue;
					}
		}
		if(ch1 == 'c')//添加联系人及号码
		{
					
					while(1)
					{
						insert_Contacts(conn);
						printf("是否继续添加y/n\n");
						getchar();
						char j;
						scanf("%c",&j);
						if(j == 'y')
							continue;
						else
							break;						
					}			
					continue;
		}
		if(ch1 == 'd')//删除联系人
		{
			while(1)
					{
						printf("\t请输入需要删除的联系人姓名:\n");
						delete_by_name(conn);
						printf("是否继续删除y/n\n");
						getchar();
						char n;
						scanf("%c",&n);
						if(n == 'y')
							continue;
						else
							break;						
					}			
			continue;	

		}
		if(ch1 == 'e')//修改联系人号码
		{
			while(1)
					{
						printf("\t请输入需要修改的联系人姓名:\n");
						alter_by_name(conn);
						printf("是否继续删除y/n\n");
						getchar();
						char k;
						scanf("%c",&k);
						if(k == 'y')
							continue;
						else
							break;						
					}			
			continue;	


		}
		if(ch1 == 'f')
		{
					printf("退出成功\n");
					break;
		}
	}
		mysql_close(conn);
		return 0;
}
					
			

原创,转载请注明出处.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值