IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库mysql课程设计 -> 正文阅读

[大数据]数据库mysql课程设计

#include<stdio.h>
#include<string.h>
#include"mysql.h"
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<string>
using namespace std;

#define _HOST_ "127.0.0.1"
#define _DB_ "db1"

char _USER_[30];
char _PASSWD_[30];
MYSQL *mysql=NULL;

bool Q_break();                //按Q退出
void Welcome();                //用户欢迎界面
void welcome_boss();           //BOSS欢迎界面
void Show_lin(unsigned long *len,unsigned int num);//表格空行
void Query_all(char *ptr);     //查询
void Quary_pt(char *ptr);      //查询输出
void Quary_menu(char *ptr);    //查询菜单
void Order_food(char *ptr);    //用户订餐
void Show_order(char *ptr);    //查询订单
void Delete_ord(char *ptr);    //删除订单
void Pay_money(char *ptr);     //支付订单
void Deboss_order(char *ptr);  //BOSS查看订单
void Add_order(char *ptr);     //BOSS加入新菜品
void Login();                  //登陆
void Use_database();           //操作界面
void Wait_order(char *ptr);    //等待


bool Q_break()
{
    char ans=getc(stdin);
    while(ans=='\n'||ans==' ') ans=getc(stdin);
    ungetc(ans,stdin);
    if(ans=='q'||ans=='Q') getchar();
    return ans=='q'||ans=='Q';
}

void Welcome()
{
    system("clear");
    for(int i=1;i<=8;i++) puts("");
    for(int i=1;i<=25;i++) printf(" ");
    printf("Welcome to my restaurant\n");
    for(int i=1;i<=25;i++) printf(" ");
    printf("0------------------->菜单\n");
    for(int i=1;i<=25;i++) printf(" ");
    printf("1------------------->订餐\n");
    for(int i=1;i<=25;i++) printf(" ");
    printf("2------------------->订单\n");
    for(int i=1;i<=25;i++) printf(" ");
    printf("3------------------->取消\n");
    for(int i=1;i<=25;i++) printf(" ");
    printf("4------------------->支付\n");
    for(int i=1;i<=25;i++) printf(" ");
    printf("5------------------->未出\n");
    for(int i=1;i<=25;i++) printf(" ");
    printf("q------------------->退出\n");
    for(int i=1;i<=25;i++) printf(" ");
}

void welcome_boss()
{
	system("clear");
	for(int i=1;i<=9;i++) puts("");
	for(int i=1;i<=25;i++) printf(" ");
	printf("0------------------->查看订单\n");
	for(int i=1;i<=25;i++) printf(" ");
	printf("1------------------->配送订单\n");
	for(int i=1;i<=25;i++) printf(" ");
	printf("2------------------->加入菜品\n");
	for(int i=1;i<=25;i++) printf(" ");
	printf("3------------------->查看菜单\n");
	for(int i=1;i<=25;i++) printf(" ");
	printf("q------------------->退出查询\n");
	for(int i=1;i<=25;i++) printf(" ");
}

void Show_lin(unsigned long *len,unsigned int num)
{
    printf("+");
    for(int i=0;i<num;i++)
    {
        for(int j=1;j<=len[i];j++) printf("-");
        printf("+");
    }
    puts("");
}
void Query_all(char *ptr)
{
    if(mysql_query(mysql,ptr))
    {
        printf("mysql quary err\n");
        mysql_close(mysql);
        exit(0);
    }
}
void Quary_pt(char *ptr)
{
    for(int i=1;i<=9;i++) puts("");
    Query_all(ptr);
    MYSQL_RES *result = mysql_store_result(mysql);
    MYSQL_FIELD *fileds;
    MYSQL_ROW row;
    unsigned int num_fields;
    unsigned long lengths[512];
    unsigned long * nowlen;
    if(result!=NULL)
    {
        num_fields=mysql_num_fields(result);
        fileds=mysql_fetch_fields(result);        
	
		for(int i=0;i<num_fields;i++)
		lengths[i]=fmax(fileds[i].name_length,fileds[i].max_length);
		for(int i=1;i<=25;i++) printf(" ");
		Show_lin(lengths,num_fields);
		for(int i=1;i<=25;i++) printf(" ");
		for(int i=0;i<num_fields;i++)
		{
			printf("|");
			printf("%s",fileds[i].name);
			int con=0;
			for(int j=0;j<fileds[i].name_length;j++)
			if(((long long)fileds[i].name[j])<=0) con++;
			con/=3;
			for(int j=1;j<=lengths[i]-fileds[i].name_length+con;j++) printf(" ");
		}puts("|"); 
		for(int i=1;i<=25;i++) printf(" ");
		Show_lin(lengths,num_fields);
		bool flag=0;
		while(row=mysql_fetch_row(result))
		{
			for(int i=1;i<=25;i++) printf(" ");
			flag=1;
			nowlen=mysql_fetch_lengths(result);
			for(int i=0;i<num_fields;i++)
			{
				printf("|");
				printf("%s",row[i]);
				int con=0;
				for(int j=0;j<nowlen[i];j++)
				if(((long long)row[i][j])<=0) con++;
				con/=3;
				for(int j=1;j<=lengths[i]-nowlen[i]+con;j++) printf(" ");
			}puts("|");
		}
		if(flag) 
		{
			for(int i=1;i<=25;i++) printf(" ");
			Show_lin(lengths,num_fields);
		}
		for(int i=1;i<=25;i++) printf(" ");
		mysql_free_result(result);
		getchar();
		getchar();
    }
    else
    {
        if(mysql_field_count(mysql))
        {
            printf("mysql qurry err\n");
            exit(0);
        }
    }
    return ;
}

void Quary_menu(char *ptr)
{
    strcpy(ptr,"select id as 编号,name as 菜品,price as 价格 from menu;");
    system("clear");
    Quary_pt(ptr);
}

void Order_food(char *ptr)
{
	Quary_menu(ptr);
	int con=0;
	while(1)
	{
        con++;
		int id;
		for(int i=1;i<=25;i++) printf(" ");
		cout<<con<<"、"<<"编号:";
		if(Q_break()) break;
		cin>>id;
		puts("");
		sprintf(ptr,"insert into Orders(id,username,pay) values(%d,'%s',0);",id,_USER_);//插入一条订单数据
		Query_all(ptr);
	}
	
}


void Show_order(char *ptr)
{
    system("clear");
    sprintf(ptr,"select name as 菜品,price as 单价,count(pay) as 数量 from menu,Orders where username='%s' and pay=0 and Orders.id=menu.id group by menu.id;",_USER_);
    Quary_pt(ptr);//查询所有订单数据
}

void Wait_order(char *ptr)
{
    system("clear");
    sprintf(ptr,"select name as 菜品,count(pay) as 数量 from menu,Orders where username='%s' and pay=1 and Orders.id=menu.id group by name;",_USER_);
    Quary_pt(ptr);//查询所有订单数据
}

void Delete_ord(char *ptr)
{
    system("clear");
    sprintf(ptr,"delete from Orders where username='%s' and pay=0;",_USER_);
    Query_all(ptr);//删除所有未支付状态的订单
}

void Pay_money(char *ptr)
{
    system("clear");
    sprintf(ptr,"select sum(price) as 总价 from menu,Orders where username='%s' and pay=0 and Orders.id=menu.id;",_USER_);
    Quary_pt(ptr);//输出金额、改变订单状态
    for(int i=1;i<=25;i++) printf(" ");
    cout<<"确认:";
    char y;
    y=getchar();
    if(y!='y'&&y!='Y') return ; 
    puts("");
    sprintf(ptr,"update Orders set pay=1 where username='%s';",_USER_);
    Query_all(ptr);
}

void Shboss_order(char *ptr)
{
    system("clear");
	strcpy(ptr,"select menu.id as 编号,username as 用户 ,name as 菜品,count(pay) as 数量 from Orders,menu where Orders.id=menu.id and pay=1 group by username,menu.id;");
	Quary_pt(ptr);
}

void Deboss_order(char *ptr)
{   
	system("clear");
        Shboss_order(ptr);
        int id;
        char user_name[30];
        while(1)
        {
			for(int i=1;i<=25;i++) printf(" ");
			cout<<"编号:";
			if(Q_break()) break;
			cin>>id;
			puts("");
			for(int i=1;i<=25;i++) printf(" ");
			cout<<"用户:";
			cin>>user_name;
			puts("");
			sprintf(ptr,"DELETE FROM Orders where Orders.username='%s' and Orders.id=%d",user_name,id);
			Query_all(ptr);
        }

}

void Add_order(char *ptr)
{  
    int hv=0;
    system("clear");
    strcpy(ptr,"select count(1) from menu;");
    Query_all(ptr);
    MYSQL_RES *result = mysql_store_result(mysql);
    MYSQL_ROW row;
    unsigned int num_fields;
    if(result!=NULL)
    {
        row=mysql_fetch_row(result);
        int len=strlen(row[0]);
        for(int i=len-1;i>=0;i--) hv=hv*10+row[0][i]-'0';
        hv++;
        mysql_free_result(result);
    }
    else
    {
        if(mysql_field_count(mysql))
        {
            printf("mysql qurry err\n");
            exit(0);
        }
    }
    char order_name[30];
    int order_price;
    for(int i=1;i<=11;i++) puts("");
    for(int i=1;i<=32;i++) printf(" ");
    cout<<"菜名:";
    if(Q_break()) return ; 
    cin>>order_name;
    puts("");
    for(int i=1;i<=32;i++) printf(" ");
    cout<<"价格:";
    cin>>order_price;
    sprintf(ptr,"insert into menu(id,name,price) values(%d,'%s',%d);",hv,order_name,order_price);
    Query_all(ptr);
}


void Login()
{
    system("clear");
    for(int i=1;i<=11;i++) puts("");
    for(int i=1;i<=32;i++) printf(" ");
    printf("id: ");
    scanf("%s",_USER_);
    puts("");
    for(int i=1;i<=28;i++) printf(" ");
    printf("passwd: ");
    system("stty -echo");
    scanf("%s",_PASSWD_);
    system("stty echo");
    system("clear");
    mysql=mysql_init(NULL);
    if(mysql==NULL)
    {
        printf("mysql init err\n");
        exit(0);
    }
    mysql=mysql_real_connect(mysql,_HOST_,_USER_,_PASSWD_,_DB_,0,NULL,0);
    if(mysql==NULL)
    {
        printf("mysql connect err\n");
        exit(0);
    }

    mysql_set_character_set(mysql,"utf8");
}
void Use_database()
{
    system("clear");
    char ptr[512];
    if(strcmp(_USER_,"root")==0)//商家使用
    {
		while(1)
		{
			welcome_boss();
			int ci;
			if(Q_break()) break;
			scanf("%d",&ci);
			if(ci==0) Shboss_order(ptr);
			else if(ci==1) Deboss_order(ptr);
			else if(ci==2) Add_order(ptr);
			else if(ci==3) Quary_menu(ptr);
		}
    }
    else  while(1)//用户使用
    {
        Welcome();
        memset(ptr,0,sizeof(ptr));
        int ci;
        if(Q_break()) break;
        scanf("%d",&ci);
        if(ci==0)        Quary_menu(ptr);
        else if(ci==1)   Order_food(ptr);
        else if(ci==2)   Show_order(ptr);
        else if(ci==3)   Delete_ord(ptr);
        else if(ci==4)   Pay_money(ptr);
        else if(ci==5)   Wait_order(ptr);
    }
}
int main()
{
    system("stty echo");
    Login();
    Use_database();
    mysql_close(mysql);
    return 0;
}


界面如下,管理员可以加如菜品,不支持删除菜品哈哈,有些操作需要看代码部分(比如输入y确认)。。。
请添加图片描述
请添加图片描述

请添加图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:45:16  更:2021-12-09 11:47:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:53:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码