源码:
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#define IsUpper(ch) (ch >= 'A' && ch <= 'Z')
#define IsLower(ch) (ch >= 'a' && ch <= 'z')
#define SPEED 10
int setClipbar(const char *data){
int contentSize = strlen(data) + 1;
HGLOBAL hMemory; LPTSTR lpMemory;
if(!OpenClipboard(NULL)) return 0;
if(!EmptyClipboard()) return 0;
if(!(hMemory = GlobalAlloc(GMEM_MOVEABLE, contentSize))) return 0;
if(!(lpMemory = (LPTSTR)GlobalLock(hMemory))) return 0;
memcpy_s(lpMemory, contentSize, data, contentSize);
GlobalUnlock(hMemory);
if(!SetClipboardData(CF_TEXT, hMemory)) return 0;
printf("成功复制【%s】到剪切板,字符串长度为%d。\n",data,contentSize);
CloseClipboard();
return 1;
}
int OnShift(char *key){
if(IsUpper(*key)) return 1;
if(IsLower(*key))
*key -= 32;
else if((*key > 32 && *key < 39) || (*key > 39 && *key < 44) ||
(*key == 58) || (*key == 60) || (*key > 61 && *key < 65) ||
(*key > 93 && *key < 97) || (*key > 122 && *key < 127) ){
*key -= 16;
return 1;
}
return 0;
}
int Cmd(int flag,const char *fmt,...){
char buf[1024] = {0},*p = buf,ch;
va_list ap; va_start(ap,fmt);
vsprintf(buf,fmt,ap);
if(flag){
while(ch = *p++){
flag = OnShift(&ch);
printf("按下了 %s%c 键!\n",flag ? "Shift + " : "",ch);
if(flag) keybd_event(VK_SHIFT,0,0,0);
Sleep(SPEED);
keybd_event(ch,0,0,0);
keybd_event(ch,0,KEYEVENTF_KEYUP,0);
if(flag) keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
}
Sleep(SPEED);
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
}else{
if(!setClipbar(buf)){
puts("写入到剪切板失败!");
exit(0);
}
Sleep(SPEED);
printf("按下了 Ctrl + V 键!\n");
keybd_event(VK_CONTROL,0,0,0);
keybd_event('V',0,0,0);
keybd_event('V',0,KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
}
Sleep(SPEED);
printf("按下了 回车 键!\n");
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
return 1;
}
int main(){
char name[10] = {0},sex[4] = {0};
char xmjp[5] = {0},pw[10] = {0};
int salary = 0,num = 0;
char str[1024] = {0};
srand((unsigned)time(NULL));
system("title Jason制作—QQ158095153");
printf("请输入你的姓名:");
scanf("%s",name);
printf("请输入你的姓名简拼:");
scanf("%s",xmjp);
printf("请输入你的性别:");
scanf("%s",sex);
printf("请输入你的编号(学号后四位):");
scanf("%d",&num);
printf("请输入你的工资:");
scanf("%d",&salary);
printf("请输入你的MySQL密码:");
scanf("%s",pw);
printf("开始自动生成!\n");
system("start cmd");
Sleep(1000);
Cmd(0,"MySQL --default-character-set=latin1 -uroot -p");
Cmd(1,"%s",pw);
Sleep(2000);
Cmd(0,"set names gbk;");
Cmd(0,"create database mysql_%04d;",num);
Cmd(0,"show databases;");
Cmd(0,"show create database mysql_%04d;",num);
Cmd(0,"alter database mysql_%04d default character set gbk;",num);
Cmd(0,"show create database mysql_%04d;",num);
Cmd(0,"use mysql_%04d;",num);
Cmd(0,"create table %04d_%s(",num,xmjp);
Cmd(0,"id varchar(6) primary key,");
Cmd(0,"name varchar(10) not null,");
Cmd(0,"sex varchar(1) default \'男\',");
Cmd(0,"salary decimal(7,2) default 1800);");
Cmd(0,"desc %04d_%s;",num,xmjp);
Cmd(0,"alter table %04d_%s change id id varchar(8);",num,xmjp);
Cmd(0,"desc %04d_%s;",num,xmjp);
Cmd(0,"insert into %04d_%s values",num,xmjp);
Cmd(0,"(\'%04d\',\'%s\',\'%s\',%d),",num+1,name,sex,salary + (rand() % 10) * 100);
Cmd(0,"(\'%04d\',\'%s\',\'%s\',%d),",num+2,"张三","女",salary + (rand() % 10) * 100);
Cmd(0,"(\'%04d\',\'%s\',\'%s\',%d),",num+3,"李四",sex,salary + (rand() % 10) * 100);
Cmd(0,"(\'%04d\',\'%s\',\'%s\',%d),",num+4,"王五","女",salary + (rand() % 10) * 100);
Cmd(0,"(\'%04d\',\'%s\',\'%s\',%d);",num+5,"赵六",sex,salary + (rand() % 10) * 100);
Cmd(0,"select * from %04d_%s;",num,xmjp);
Cmd(0,"update %04d_%s set salary = salary + 500 where name=\'%s\';",num,xmjp,name);
Cmd(0,"select * from %04d_%s;",num,xmjp);
Cmd(0,"delete from %04d_%s where name=\'%s\';",num,xmjp,name);
Cmd(0,"select * from %04d_%s;",num,xmjp);
Cmd(0,"select sum(salary) as 工资合计 from %04d_%s;",num,xmjp);
Cmd(0,"select(select count(1) as num from %04d_%s where sex = '男') as '男生人数',",num,xmjp);
Cmd(0,"(select count(1) as num from %04d_%s where sex = '女') as '女生人数';",num,xmjp);
Cmd(0,"drop database mysql_%04d;",num);
return 0;
}
后台操作记录:
执行结果: