#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <mysql.h>
#include <commctrl.h>
#include "resource.h"
#include "MainDlg.h"
struct student {
int id;
char name[64];
int age;
char address[256];
};
typedef struct student Stu;
//连接数据库
MYSQL* collection()
{
MYSQL* mysql = mysql_init(0);
mysql_real_connect(mysql, "127.0.0.1", "root", "123456", "c_learn", 3306, "", 0);
mysql_query(mysql, "set names gbk");
return mysql;
}
//关闭 mysql 连接
void close_collection(MYSQL* mysql)
{
mysql_close(mysql);
}
// 添加/修改/查询 方法
void executeNoQuery(char *sql)
{
MYSQL* mysql = collection();
if (NULL != mysql)
{
mysql_query(mysql, sql);
}
close_collection(mysql);
}
//查询方法
Stu* executeQuery(char* sql,Stu* p)
{
MYSQL* mysql = collection();
if (NULL != mysql)
{
mysql_query(mysql, sql);
//离线结果集 保存在内存中, 适用于小结果集
MYSQL_RES* result = mysql_store_result(mysql);
MYSQL_ROW row;
Stu* s = p;
while (row = mysql_fetch_row(result))
{
char* id = row[0];
char* name = row[1];
char* age = row[2];
char* address = row[3];
s->id = atoi(id);
strcpy(s->name,name);
s->age = atoi(age);
strcpy(s->address,address);
s++;
}
close_collection(mysql);
}
return p;
}
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}
return FALSE;
}
void updateList(HWND hwnd)
{
HWND hListview = GetDlgItem(hwnd, IDC_STUDENTLIST);
ListView_DeleteAllItems(hListview);
char *sql = "select * from student";
Stu stu[100] = { {0,"",0,""} };
Stu *res = executeQuery(sql,stu);
LVITEM vitem;
vitem.mask = LVIF_TEXT;
int i = 0;
while(res->id != 0)
{
vitem.iSubItem = 0;
char ids[100];
itoa(res->id,ids,10);
vitem.iItem = i;
vitem.pszText = ids;
ListView_InsertItem(hListview, &vitem);
vitem.iSubItem = 1;
vitem.pszText = res->name;
ListView_SetItem(hListview, &vitem);
vitem.iSubItem = 2;
char ages[100];
itoa(res->age,ages,10);
vitem.pszText = ages;
ListView_SetItem(hListview, &vitem);
vitem.iSubItem = 3;
vitem.pszText = res->address;
ListView_SetItem(hListview, &vitem);
res++;
i++;
}
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
// 获取ListView控件的句柄
HWND hListview = GetDlgItem(hwnd, IDC_STUDENTLIST);
if(hListview==NULL){
MessageBox(hwnd,"Failed to Create Listview","Error",MB_OK);
}
// 设置ListView的列
LVCOLUMN vcl;
vcl.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
// 第一列
vcl.pszText = "ID";//列标题
vcl.cx = 200;//列宽
vcl.iSubItem = 0;//子项索引,第一列无子项
ListView_InsertColumn(hListview, 0, &vcl);
// 第二列
vcl.pszText = "姓名";
vcl.cx = 200;
vcl.iSubItem = 1;//子项索引
ListView_InsertColumn(hListview, 1, &vcl);
// 第三列
vcl.pszText = "年龄";
vcl.cx = 200;
vcl.iSubItem = 2;
ListView_InsertColumn(hListview, 2, &vcl);
// 第四列
vcl.pszText = "地址";
vcl.cx = 200;
vcl.iSubItem = 3;
ListView_InsertColumn(hListview, 3, &vcl);
updateList(hwnd);
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_ADD:
{
TCHAR name[64];
TCHAR age[11];
TCHAR address[256];
GetDlgItemText(hwnd,IDC_NAME,name,sizeof(name));
GetDlgItemText(hwnd,IDC_AGE,age,sizeof(age));
GetDlgItemText(hwnd,IDC_ADDRESS,address,sizeof(address));
char sql[256];
wsprintf(sql,"insert into student(name,age,address) values('%s',%s,'%s');",name,age,address);
executeNoQuery(sql);
SetDlgItemText(hwnd,IDC_ID,"");
SetDlgItemText(hwnd,IDC_NAME,"");
SetDlgItemText(hwnd,IDC_AGE,"");
SetDlgItemText(hwnd,IDC_ADDRESS,"");
updateList(hwnd);
}
break;
case IDC_EDIT:
{
TCHAR id[11];
TCHAR name[64];
TCHAR age[11];
TCHAR address[256];
GetDlgItemText(hwnd,IDC_ID,id,sizeof(id));
GetDlgItemText(hwnd,IDC_NAME,name,sizeof(name));
GetDlgItemText(hwnd,IDC_AGE,age,sizeof(age));
GetDlgItemText(hwnd,IDC_ADDRESS,address,sizeof(address));
char sql[256];
wsprintf(sql,"update student set name = '%s',age = %s,address = '%s' where id = %s;",name,age,address,id);
executeNoQuery(sql);
SetDlgItemText(hwnd,IDC_ID,"");
SetDlgItemText(hwnd,IDC_NAME,"");
SetDlgItemText(hwnd,IDC_AGE,"");
SetDlgItemText(hwnd,IDC_ADDRESS,"");
updateList(hwnd);
}
break;
case IDC_REMOVE:
{
TCHAR id[11];
GetDlgItemText(hwnd,IDC_ID,id,sizeof(id));
char sql[256];
wsprintf(sql,"delete from student where id = %s;",id);
executeNoQuery(sql);
updateList(hwnd);
}
break;
case IDC_FIND:
{
TCHAR id[11];
GetDlgItemText(hwnd,IDC_ID,id,sizeof(id));
char sql[256];
wsprintf(sql,"select * from student where id = %s;",id);
Stu stu = {0,"",0,""};
Stu *res = &stu;
res = executeQuery(sql,res);
HWND hListview = GetDlgItem(hwnd, IDC_STUDENTLIST);
ListView_DeleteAllItems(hListview);
LVITEM vitem;
vitem.mask = LVIF_TEXT;
vitem.iSubItem = 0;
char ids[100];
itoa(res->id,ids,10);
vitem.iItem = 0;
vitem.pszText = ids;
ListView_InsertItem(hListview, &vitem);
vitem.iSubItem = 1;
vitem.pszText = res->name;
ListView_SetItem(hListview, &vitem);
vitem.iSubItem = 2;
char ages[100];
itoa(res->age,ages,10);
vitem.pszText = ages;
ListView_SetItem( hListview, &vitem);
vitem.iSubItem = 3;
vitem.pszText = res->address;
ListView_SetItem(hListview, &vitem);
}
break;
case IDC_REFRESH:
{
SetDlgItemText(hwnd,IDC_ID,"");
SetDlgItemText(hwnd,IDC_NAME,"");
SetDlgItemText(hwnd,IDC_AGE,"");
SetDlgItemText(hwnd,IDC_ADDRESS,"");
updateList(hwnd);
}
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
c语言 win32 界面开发 学生管理系统 增删改查
最新推荐文章于 2021-09-14 09:42:32 发布