是数据库的课设,自己写完后就发上来了
先放个思维导图
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数据库:
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;
}
接下来可以继续进行顾客的操作