昨天 晚上 实现了 一些功能
登录 注销 修改密码 注册 自动提示账号是否已经被占用 密码填写等定时器 显示时间 修改程序ico 等等
后面准备增加的功能 (只写出在此基础上的 不拓展)
1 在输入验证的时候 正确显示一个图片沟 错误的时候显示一个错误的X
2 实现托盘功能
3 在选择皮肤的时候判断下皮肤是否纯在 (最好实现 在程序运行过程中 修改皮肤 但是还不知道怎么实现 )
4 在 右边 实现这样一个功能: 就算是一个函数吧 大概形式 bool XXX(Cstring,int) 或许还有一两个按钮
1 这个窗口在主窗口的 右边 和 主窗口 并行执行
2 最基础的功能 调用它就在旁边显示 多少秒 在窗口中显示 Cstring 类容 并且直接 把 内容 放在 复制的缓冲区内 在外面直接ctrl+c 便可以复制出来了...
3 新用户提示(或者其他提示) 记录当前数据库中某表的最大id是多少 然后 过一段时间查看 最大id是多少 如果比他大 则 在 窗体中显示.......
(如果是自己注册 那么 最好 注册前记录下 你注册的 username 或者 什么的 然后 如果 大一点的 id 的 username 是你注册的 ..就不显示了)
4 好了 吃饭了 ....
以上内容只是 想想 得先 完成 作业 上次 是 做数据库 (什么 需求分析啊 E-R图 啊 数据流图 啊 做的是BBS 非常简单 这次 这个 得 继承 上回的 啊..呵呵)
资源下载地址 http://download.csdn.net/detail/ydc__/4872087 没有去除 一些文件 所以 有点庞大 使用的是vc2012
需要的数据库mysql 数据库内容为 数据库 ydc 表 user 表内数据 id username password 其中id自增
当时 做的笔记有
界面的美化 :: vc驿站 界面库编程免费视频 http://www.cctry.com/forum-81-1.html
Mysql 数据库的操作
当时百度了一下百度到的资源是http://blog.csdn.net/nuptboyzhb/article/details/8043091
/*
Ydc__ 2012
*/
#pragma once
#define PI 3.1415
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
#include <iostream>
#pragma comment(lib,"libmysql.lib")//连接MysQL需要的库
using namespace std;
class MySql
{
public:
MySql(){}
~MySql()
{
//这里就不做多的处理 了
if(result!=NULL) mysql_free_result(result);//释放结果资源
mysql_close(&myCont);//断开连接
}
bool InitMember()
{
user = "root";//账号//数据库的
pswd = "1234"; //密码//数据库的
host = "localhost";//或则"127.0.0.1"
table ="ydc"; //数据库
port = 3306; //端口
mysql_init(&myCont);
if(!mysql_real_connect(&myCont,host.c_str(),user.c_str(),pswd.c_str(),table.c_str(),port,NULL,0))
{
//连接数据库失败
return false;
}
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
//meiyou错误
return true;
}
bool Query()
{
res=mysql_query(&myCont,sql.c_str());//查询
if(!res)
{
result=mysql_store_result(&myCont);//保存查询到的数据到result
}
else
{
//查询失败
return false;
}
/* 使用结果示例 见下面注释的main里面*/
return true;
}
bool Query(CString sql)
{
res=mysql_query(&myCont,sql);//查询
if(!res)
{
result=mysql_store_result(&myCont);//保存查询到的数据到result
}
else
{
//查询失败
return false;
}
/* 使用结果示例 见下面注释的main里面*/
return true;
}
/*bool Delete();*/
bool update(CString sql)
{
if(mysql_real_query(&myCont,(char*)(LPCTSTR)sql,(UINT)sql.GetLength())!=0){
AfxMessageBox("修改失败");
return false;
}
return true;
}
bool Insert(CString sql)
{
if(mysql_real_query(&myCont,(char*)(LPCTSTR)sql,(UINT)sql.GetLength())!=0){
return true;
}
else
{
return false;
}
}
//bool SetSql(string sql)
//{
// this->sql = sql;
// if (sql.size() < 15)
/// {
// return false;//估计 小雨15 一般不是正确的语句
// }
// return true;
//}
private:
string user;
string pswd;
string host;
string table;
unsigned int port;
MYSQL myCont;
public://经常使用的设置成public
int res;//数据条数
string sql;//sql语句
MYSQL_RES *result;
char column[32][32];//保存的 是 列明子 一般 自己 知道 获取 方法 见下面函数内
MYSQL_FIELD *fd;
MYSQL_ROW sql_row;
};
/*
system("pause");//暂停
system("cls");//清屏
system("color a");//改变字体颜色输入
*/
使用举例 下面是登录的时候使用的代码
CString sql = "SELECT * FROM `user` WHERE `username` LIKE '"+username+"' AND `password` LIKE '"+password+"'";
Y.Query(sql);
if(Y.result)
{
int j=mysql_num_fields(Y.result);
while(Y.sql_row=mysql_fetch_row(Y.result))//获取具体的数据
{
user_id = atoi(Y.sql_row[0]);
//这里其实 只会有一条数据
for(int i=0;i<j;i++)
{
isOnline = true;
//printf("%s\n",Y.sql_row[i]);
//test += Y.sql_row[i];
}
//printf("\n");
}
//AfxMessageBox(test);
}else
{
isOnline = false;
}
按钮 button
登录 login
注销 logout
注册 register
首页 home
Group Box
选择 choose
皮肤 skin
修改 Change
New password, please enter it twice
信息 information
获取Text的值
GetDlgItemText(IDC_EDIT_Login_user,username);
AfxMessageBox(CheckUsername);
((CEdit*)GetDlgItem(IDC_STATIC_Username))->SetWindowText("账号不可用 请重新输入");
在小对话框里面 要实现初始化的时候 设置按钮等的 初始化信息 得添加初始化消息函数
SYSTEMTIME st = {0};
GetLocalTime(&st);//获得当前本地时间
附SYSTEMTIME结构常用成员说明
st.wYear;年
st.wMonth;月
st.wDay;日
st.wHour;时
st.wMinute;分
st.wSecond;秒
st.wDayOfWeek;星期几
设置窗口的Caption属性
SetWindowText(Caption);
定时器 WM_TIMER 消息
关闭 定时器 对话框要 重写 关闭函数 释放函数