基于C++与ODBC的订餐系统(在命令行中实现)

本文介绍了如何使用C++通过ODBC连接SQL Server数据库,创建一个命令行订餐系统。系统包括顾客注册、登录、点单、查询订单及管理员管理功能。在开发过程中遇到命令行中文输入问题,需注意字符转换。源码已上传至GitHub。
摘要由CSDN通过智能技术生成

是数据库的课设,自己写完后就发上来了

先放个思维导图

E-R图也放一个

通过ODBC连接SQL Server数据库,实现了在命令行内执行订餐系统的管理

注意!!:数据库中的中文数据输出正常,但是无法读取命令行中输入的中文字符(读取到的是乱码,应该是没有转换字符导致),请尽量使用英文 ;   且在命令行中有概率出现自动换行,但是不影响使用

!!必看!!:将代码中 连接 块的 TEST 换成ODBC数据源的名字, UserName 换成SQL Server的登录名, PassWord 换成登录名的密码SQL Server不支持太弱的密码远程登录,请至少包含英文小写字符和数字且不小于8位)

环境:VS2022,Mircosoft SQLserver2019,Windows10 最新的SDK,在ODBC数据源中已将OrderingSystem设为默认数据库

直接放功能代码和运行图吧

目录

1.使用ODBC连接SQL Server数据库:

2.主界面

3.功能实现顾客方面

(1)有注册与登录两个选项

(2)注册

(3)登录

(4)点单

(5)查询订单

(6)注销用户

4.功能实现管理员方面

(1)登录

(2)以对顾客增删查改为例

添加顾客信息

删除顾客信息

查询顾客信息

修改顾客信息


1.使用ODBC连接SQL Server数据库:

void Link()

{

       ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);//申请环境句柄

       ret = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);

       ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//申请数据库连接句柄



       ret = SQLConnect(hdbc, (SQLWCHAR*)L"TEST", SQL_NTS, (SQLWCHAR*)L"UserName", SQL_NTS, (SQLWCHAR*)L"PassWord", SQL_NTS);



       if (!(ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)) {

              cout << "Failed to connect to database!" << endl << endl;

       }

       else {

              cout << "Database connection succeeded!" << endl << endl;

       }

}

2.主界面

3.功能实现顾客方面

1)有注册与登录两个选项

2)注册

void Insert_Customer() {

       //sql语句:INSERT INTO customer VALUES ('John','D7-209',123456,124)

       ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

       string str1 = "INSERT INTO customer VALUES ('";

       cout << "Please enter your name, address, telephone number and password in sequence." << endl;

       string cname, cplace,ctel,ccode;

       cin >> cname >> cplace >> ctel >> ccode;

       string str2 = str1 + cname + "','" + cplace + "'," + ctel +"," + ccode + ")";

       wchar_t* wc = new wchar_t[str2.size()];

       swprintf(wc, 100, L"%S", str2.c_str());

       ret = SQLExecDirect(hstmt, wc, SQL_NTS);

       if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {

              cout << "User added successfully!" << endl;

       }

       else {

              cout << "Failed to add user! Or user phone number already exists." << endl;

              handleResult(hstmt, SQL_HANDLE_STMT, ret);

              error(ret);

       }

       free();

       cout << endl << endl;

}

接下来可以继续进行顾客的操作

3)登录


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值