C++實(shí)現(xiàn)單詞管理系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)單詞管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)功能
- 退出
- 添加單詞
- 刪除單詞
- 修改單詞
- 查詢單詞
- 排序單詞
- 顯示單詞
簡(jiǎn)述
單詞管理系統(tǒng)使用了C++語(yǔ)言連接MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)常規(guī)CRUD操作,界面為控制臺(tái)窗體+文字顯示的方式。
測(cè)試環(huán)境
使用Win10 + Code::Blocks IDE編寫。
運(yùn)行截圖

代碼
#include <stdio.h>
#include <winsock2.h> //進(jìn)行網(wǎng)絡(luò)連接
#include <mysql.h> ? ?//MySQL C API訪問mysql數(shù)據(jù)庫(kù)
#pragma comment (lib, "libmysql.lib")
#define N 50
?
typedef struct Dictionary
{
? ? char id[50];
? ? char eng[100];
? ? char chi[100];
} Dictionary;
?
//變量配置
MYSQL *conn; //數(shù)據(jù)庫(kù)連接句柄
MYSQL_RES *res; //執(zhí)行數(shù)據(jù)庫(kù)語(yǔ)言結(jié)果
MYSQL_ROW row; //存放一個(gè)數(shù)據(jù)記錄
char* server = "localhost";//本地連接
char* user = "root";//
char* password = "yan19991001";//mysql密碼
char* database = "dictionary";//數(shù)據(jù)庫(kù)名
int t,rc;
char query[N]; ? ? ? ?//需要查詢的語(yǔ)句
?
void readEng();
void addEng();
void delEng();
void modEng();
void seaEng();
void sort();
?
?
void sort(){
? ? char id[N],eng[N],chi[N];
? ? sprintf(query,"select * from test order by eng");
? ? printf("查詢語(yǔ)句:%s\n",query);
? ? rc = mysql_query(conn,query);
? ? if (0 != rc) {
? ? ? ? printf("mysql_real_query(): %s\n", mysql_error(conn));
? ? ? ? return -1;
? ? }else{
? ? ? ? printf("查詢結(jié)果:\n");
? ? ? ? res = mysql_use_result(conn);?? ?//獲取結(jié)果
? ? ? ? if (res)
? ? ? ? {
? ? ? ? ? ? while ((row = mysql_fetch_row(res)) != NULL)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //printf("num=%d\n",mysql_num_fields(res));//列數(shù)
? ? ? ? ? ? ? ? for (t = 0; t < mysql_num_fields(res); t++)
? ? ? ? ? ? ? ? ? ? printf("%8s ", row[t]);
? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? mysql_free_result(res);
? ? }
}
?
void addEng()
{
? ? char id[N],eng[N],chi[N];
? ? printf("請(qǐng)輸入要增加的詞典信息:\n");
? ? printf("編號(hào):\n");
? ? scanf("%s",id);
? ? printf("單詞:\n");
? ? scanf("%s",eng);
? ? printf("中文釋義:\n");
? ? scanf("%s",chi);
? ? sprintf(query,"insert into test values('%s','%s','%s')",id,eng,chi);
? ? printf("%s",query);
? ? rc = mysql_query(conn,query);
? ? if (0 != rc) {
? ? ? ? printf("mysql_real_query(): %s\n", mysql_error(conn));
? ? ? ? return -1;
? ? }else{
? ? ? ? printf("添加成功!\n");
? ? }
? ? //mysql_close(conn); //斷開數(shù)據(jù)庫(kù)
}
?
void delEng(){
? ? char id[N];
? ? printf("請(qǐng)輸入你要?jiǎng)h除的單詞編號(hào):");
? ? scanf("%s",id);
? ? sprintf(query,"delete from test where id = '%s'",id);
? ? printf("查詢語(yǔ)句:%s\n",query);
? ? rc = mysql_query(conn,query);
? ? if (0 != rc) {
? ? ? ? printf("mysql_real_query(): %s\n", mysql_error(conn));
? ? ? ? return -1;
? ? }else{
? ? ? ? printf("刪除成功!\n");
? ? }
}
?
void modEng(){
? ? char id[N],eng[N],chi[N];
? ? printf("請(qǐng)輸入你要修改的單詞編號(hào):");
? ? scanf("%s",id);
? ? printf("單詞:\n");
? ? scanf("%s",eng);
? ? printf("中文釋義:\n");
? ? scanf("%s",chi);
? ? sprintf(query,"update test set eng = '%s',chi = '%s' where id = '%s'",eng,chi,id);
? ? printf("查詢語(yǔ)句:%s\n",query);
? ? rc = mysql_query(conn,query);
? ? if (0 != rc) {
? ? ? ? printf("mysql_real_query(): %s\n", mysql_error(conn));
? ? ? ? return -1;
? ? }else{
? ? ? ? printf("修改成功!\n");
? ? }
}
?
void seaEng(){
? ? char id[N],eng[N],chi[N];
? ? printf("請(qǐng)輸入你要查詢的單詞編號(hào):");
? ? scanf("%s",id);
? ? sprintf(query,"select * from test where id = '%s'",id);
? ? printf("查詢語(yǔ)句:%s\n",query);
? ? rc = mysql_query(conn,query);
? ? if (0 != rc) {
? ? ? ? printf("mysql_real_query(): %s\n", mysql_error(conn));
? ? ? ? return -1;
? ? }else{
? ? ? ? printf("查詢結(jié)果:\n");
? ? ? ? res = mysql_use_result(conn);?? ?//獲取結(jié)果
? ? ? ? if (res)
? ? ? ? {
? ? ? ? ? ? while ((row = mysql_fetch_row(res)) != NULL)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //printf("num=%d\n",mysql_num_fields(res));//列數(shù)
? ? ? ? ? ? ? ? for (t = 0; t < mysql_num_fields(res); t++)
? ? ? ? ? ? ? ? ? ? printf("%8s ", row[t]);
? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? mysql_free_result(res);
? ? }
}
?
?
void init()
{
? ? conn = mysql_init(NULL); //句柄初始化
?
? ? if (!mysql_real_connect(conn, server, user, password, database, 3306, NULL, 0)) ?//判斷是否連接成功
? ? {
? ? ? ? printf("Error connecting to database:%s\n", mysql_error(conn));
? ? }
? ? else
? ? {
? ? ? ? printf("Connected...\n");
? ? }
?
? ? //字符編碼,解決亂碼
? ? if (!mysql_set_character_set(conn, "gbk"))
? ? {
? ? ? ? printf("New client character set: %s\n",
? ? ? ? ? ? ? ?mysql_character_set_name(conn));
? ? }
}
?
void readEng()
{
? ? char * query = "select * from test"; ? ? ? ?//需要查詢的語(yǔ)句
? ? if (mysql_query(conn, query))
? ? {
? ? ? ? printf("錯(cuò)誤信息:%s\n", mysql_error(conn));
? ? }
? ? else
? ? {
? ? ? ? printf("查詢結(jié)果:\n");
? ? ? ? res = mysql_use_result(conn);?? ?//獲取結(jié)果
? ? ? ? if (res)
? ? ? ? {
? ? ? ? ? ? while ((row = mysql_fetch_row(res)) != NULL)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //printf("num=%d\n",mysql_num_fields(res));//列數(shù)
? ? ? ? ? ? ? ? for (t = 0; t < mysql_num_fields(res); t++)
? ? ? ? ? ? ? ? ? ? printf("%8s ", row[t]);
? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? mysql_free_result(res);
? ? }
}
?
void menu()
{
? ? int choice;
? ? char id[20];
? ? do
? ? {
? ? ? ? printf("------------------------------\n");
? ? ? ? printf("0、退出\n");
? ? ? ? printf("1、添加單詞\n");
? ? ? ? printf("2、刪除單詞\n");
? ? ? ? printf("3、修改單詞\n");
? ? ? ? printf("4、查詢單詞\n");
? ? ? ? printf("5、排序單詞\n");
? ? ? ? printf("6、顯示單詞\n");
? ? ? ? printf("------------------------------\n");
? ? ? ? printf("請(qǐng)輸入選擇:");
? ? ? ? scanf("%d",&choice); ? ? ? ?//根據(jù)choice的值選取功能
? ? ? ? switch(choice)
? ? ? ? {
? ? ? ? case 0:
? ? ? ? ? ? exit(0);
? ? ? ? ? ? break;
? ? ? ? case 1:
? ? ? ? ? ? addEng();
? ? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? ? delEng();
? ? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? ? modEng();
? ? ? ? ? ? break;
? ? ? ? case 4:
? ? ? ? ? ? seaEng();
? ? ? ? ? ? break;
? ? ? ? case 5:
? ? ? ? ? ? sort();
? ? ? ? ? ? break;
? ? ? ? case 6:
? ? ? ? ? ? readEng();
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? printf("輸入錯(cuò)誤!");
? ? ? ? }
? ? ? ? system("pause");
? ? ? ? system("cls");
? ? }
? ? while(choice != 0);
}
?
int main()
{
? ? init();
? ? menu();
? ? return 0;
}數(shù)據(jù)庫(kù)代碼
/*
?Navicat MySQL Data Transfer
?Source Server ? ? ? ? : localhost_3306
?Source Server Type ? ?: MySQL
?Source Server Version : 50725
?Source Host ? ? ? ? ? : localhost:3306
?Source Schema ? ? ? ? : dictionary
?Target Server Type ? ?: MySQL
?Target Server Version : 50725
?File Encoding ? ? ? ? : 65001
?Date: 28/06/2021 13:44:35
*/
?
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
?
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` ?(
? `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
? `eng` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
? `chi` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
? PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
?
-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('1', 'adopt', '領(lǐng)養(yǎng)');
INSERT INTO `test` VALUES ('2', 'pen', '鋼筆');
INSERT INTO `test` VALUES ('3', 'apple', '蘋果');
INSERT INTO `test` VALUES ('4', 'borrow', '借閱');
INSERT INTO `test` VALUES ('5', 'electric', '電力');
?
SET FOREIGN_KEY_CHECKS = 1;總結(jié)
代碼還是比較簡(jiǎn)單的,主要是不同編譯器,它所對(duì)應(yīng)的驅(qū)動(dòng)方式會(huì)有所不同。因此如果想要移植到其它的IDE如: VC6++、VS、DEV 等,可能需要一些處理操作,還要添加數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)和庫(kù)函數(shù)。當(dāng)然,難點(diǎn)也就在于獲取ODBC連接,這塊還是需要一些時(shí)間琢磨的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C++實(shí)現(xiàn)簡(jiǎn)單的圖書管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)單職工信息管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)單的學(xué)生管理系統(tǒng)
- C++學(xué)生信息管理系統(tǒng)
- C++實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)單的信息管理系統(tǒng)
- C++實(shí)現(xiàn)企業(yè)職工工資管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)C++實(shí)現(xiàn)代碼
- C++基礎(chǔ)學(xué)生管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)單職工管理系統(tǒng)
相關(guān)文章
C/C++?Qt?Dialog?對(duì)話框組件應(yīng)用技巧
這篇文章主要介紹了C/C++?Qt?Dialog?對(duì)話框組件應(yīng)用,這里我將總結(jié)本人在開發(fā)過程中常用到的標(biāo)準(zhǔn)對(duì)話框的使用技巧,對(duì)C++?對(duì)話框組件相關(guān)知識(shí)感興趣的朋友一起看看吧2021-11-11
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之單向鏈表詳解分析
鏈表可以說是一種最為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)了,而單向鏈表更是基礎(chǔ)中的基礎(chǔ)。鏈表是由一組元素以特定的順序組合或鏈接在一起的,不同元素之間在邏輯上相鄰,但是在物理上并不一定相鄰。在維護(hù)一組數(shù)據(jù)集合時(shí),就可以使用鏈表,這一點(diǎn)和數(shù)組很相似2021-11-11
用C實(shí)現(xiàn)PHP擴(kuò)展 Fetch_Url 類數(shù)據(jù)抓取的方法
該擴(kuò)展是基于libcurl基礎(chǔ)實(shí)現(xiàn)的網(wǎng)頁(yè)數(shù)據(jù)抓取2013-04-04
C語(yǔ)言使用廣度優(yōu)先搜索算法解決迷宮問題(隊(duì)列)
這篇文章主要介紹了C語(yǔ)言使用廣度優(yōu)先搜索算法解決迷宮問題,結(jié)合迷宮問題分析了C語(yǔ)言隊(duì)列廣度優(yōu)先搜索算法的相關(guān)使用技巧,需要的朋友可以參考下2017-09-09
C++通過boost.date_time進(jìn)行時(shí)間運(yùn)算
這篇文章介紹了C++通過boost.date_time進(jìn)行時(shí)間運(yùn)算的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C語(yǔ)言實(shí)例問題探究字符串函數(shù)的應(yīng)用
字符串函數(shù)(String processing function)也叫字符串處理函數(shù),指的是編程語(yǔ)言中用來進(jìn)行字符串處理的函數(shù),如C,pascal,Visual以及LotusScript中進(jìn)行字符串拷貝,計(jì)算長(zhǎng)度,字符查找等的函數(shù)2022-04-04
一篇文章帶你了解C語(yǔ)言內(nèi)存對(duì)齊解決的問題
內(nèi)存對(duì)齊的目的是為了提高CPU讀寫內(nèi)存里數(shù)據(jù)的速度?,F(xiàn)代的CPU讀取內(nèi)存并不是一個(gè)一個(gè)字節(jié)挨著讀取,這樣做的效率非常低?,F(xiàn)代的CPU一般以4個(gè)字節(jié)(32bit數(shù)據(jù)總線)或者8個(gè)字節(jié)(64bit數(shù)據(jù)總線)為一組,一組一組地讀寫內(nèi)存里的數(shù)據(jù)2021-08-08

