C语言 win32 界面开发 学生管理系统 增删改查(可选中)

#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);
    }

    /*

    LVS_EX_FULLROWSELECT 选中高亮

    LVS_EX_CHECKBOXES 勾选框

    LVS_EX_GRIDLINES 网格线

    */
    ListView_SetExtendedListViewStyle(hListview, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    
    // 设置ListView的列  
    LVCOLUMN vcl;  
    vcl.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    // 第一列  
    vcl.pszText = "ID";//列标题  
    vcl.fmt = LVCFMT_CENTER;
    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:
            {
                HWND hListview = GetDlgItem(hwnd, IDC_STUDENTLIST); 
                int nSelectIndex  = ListView_GetSelectionMark(hListview);
                TCHAR id[11];
                ListView_GetItemText(hListview, nSelectIndex, 0, id, sizeof(id));
                char sql[256];
                wsprintf(sql,"delete from student where id = %s;",id);
                executeNoQuery(sql);
                updateList(hwnd);
            }
        break;
        case IDC_FIND:
            {
                HWND hListview = GetDlgItem(hwnd, IDC_STUDENTLIST); 
                int nSelectIndex  = ListView_GetSelectionMark(hListview);
                TCHAR id[11];
                ListView_GetItemText(hListview, nSelectIndex, 0, id, sizeof(id));
                TCHAR name[64];
                ListView_GetItemText(hListview, nSelectIndex, 1, name, sizeof(name));

                TCHAR age[11];
                ListView_GetItemText(hListview, nSelectIndex, 2, age, sizeof(age));

                TCHAR address[256];
                ListView_GetItemText(hListview, nSelectIndex, 3, address, sizeof(address));


                SetDlgItemText(hwnd,IDC_ID,id);
                SetDlgItemText(hwnd,IDC_NAME,name);
                SetDlgItemText(hwnd,IDC_AGE,age);
                SetDlgItemText(hwnd,IDC_ADDRESS,address);


            //    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);
                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);
            }
        break;
        default:
        break;
    }
}

void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生若梦01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值