上学期我们学了数据库,课程设计我是用ESQL/C写的,因为当时只学了C语言
其它的语言都没入门,所以只好用C写了,我写的是模拟QQ管理好友的程序由
于那时候刚好要期末考试,没时间有很多功能就没写了,现在要学C++/STL/MFC
又要软考,四级还得过,没时间做了,放到网上大家如果谁想了解这方面的有关
知识可以下载,那时我也是摸黑搞的,网上这方面的资料很少,我就靠SQL2000的手册。屋漏偏逢连夜雨,手册上全是英文,傻了我半天,幸好有金山词霸。有时候一个小错误我得发几个小时去摸索,现在可能也不大记得了,功夫不负有心了,最后终于出了个半成品,呵呵 …… 因为文件大了我只好分开了几个压缩文件。
我开了个Q群(28011342)大家可以去下载完整的资料 (数据库课程设计.rar)
部分代码:
///////////////////////////////////////////////////////////////////////////////
//
// 文 件: esql.sqc
// 嵌入式 SQL/C 程序 ,QQ 模拟器,数据库操作源码文件
//
// 函 数: main(),CheckMessage(),DatabaseError()
//
// The SQLERRD3 array indicates the number of rows affected
// 作 者: Deng Lanzhong
// 联 系:Email: lingdlz@163.com QQ: 403324669
// 时 间: 2006--12--30
//
///////////////////////////////////////////////////////////////////////////////
#define DBNTWIN32
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <ctype.h>
#include <direct.h>
#include <io.h>
// 文件包含,和一般的程序有点区别,我调试很久才解决
#include "qq.h"
#include "login.c"
#include "log.c"
#include "download.c"
#include "command.c"
#include "superm.c"
#include "listdata.c"
#include "use.c"
#include "friend.c"
#include "group.c"
/*
** 函 数:DatabaseError()
** 数据库操作出错时,调用该函数打印出错信息
** 参 数:(无)
** 返回值:(无)
*/
void DatabaseError(void){
char msg[150];
printf("数据库操作出错:\n");
printf(" SQL错误代号: %li\n", SQLCODE);
printf(" SQL错误信息: %Fs\n", SQLERRMC);
sprintf(msg,"数据库操作出错: %Fs",SQLERRMC);
if(SQLCODE < 0) // 所有的数据库错误写入日志
WriteLog(msg);
}
void CheckMessage(void){
}
/*
** 函 数:main()
** QQ 模拟器,数据库操作程序 的主函数,调用其它各模块
** 参 数:(无)
** 返回值:(无)
**
*/
int main (void){
char command[CMDLENGTH]; // 存储命令
struct strcmd cmdMeter[NUMBCMD+2]; // 命令表
int flag;
EXEC SQL SET OPTION LOGINTIME 10; // 连接数据库的超时时间设置
EXEC SQL SET OPTION QUERYTIME 100; // 查询超时时间
atexit(DisConnect);
printf("-------------------------------------------------------\n");
printf(" 欢迎使用嵌入式 SQL/C 程序 QQ 模拟器 个人版\n\n");
printf(" 作 者: Deng Lanzhong \n");
printf(" 联 系:Email: lingdlz@163.com QQ: 403324669\n");
printf(" 时 间: 2006--12--30\n");
printf("-------------------------------------------------------\n");
if(InitCmdMeter(cmdMeter)==FAILED){ // 初始化命令表
printf("%s\n","初始化命令表失败,请修复文件command.ini !");
return FAILED;
}
// 以命令方式操作程序,循环调用各模块
while(TRUE){
printf("Input command >");
while(!kbhit() && iRunLevel == NOTLINK)
; // 未连接数据库,空循环,等待命令
while(!kbhit() && iRunLevel != NOTLINK)
CheckMessage(); // 有用户登陆,查看数据库上的消息
if(TabGetsCmd(command,cmdMeter)==FAILED)
continue; // 实现 " 三键 " 输入一个命令
if(iRunLevel >= NOTLINK){ // NOTLINK 级别能够运行的命令
if(!stricmp(command,"help"))
flag = cmdHelp();
else if(!stricmp(command,"link"))
flag = ConnectToDb();
else if(!stricmp(command,"exit")){
if(TestExit() == FAILED)
return SUCCESS;
else
flag = SUCCESS;
}
else if(!stricmp(command,"view run level"))
flag = cmdShowRunLevel();
else if(!stricmp(command,"view command"))
flag = cmdViewCmdMeter(cmdMeter);
else if(!stricmp(command,"go dos"))
flag = cmdDosCmd();
else if(!stricmp(command,"how can I do"))
flag = cmdShowCanDo(cmdMeter);
}
if(iRunLevel >= LINK){ // 至少 LINK 级别的才能运行的命令
if(!stricmp(command,"login"))
flag = Login();
else if(!stricmp(command,"view qq source"))
flag = ViewQqSource();
else if(!stricmp(command,"view group source"))
flag = ViewGroupSource();
else if(!stricmp(command,"apply qq number"))
flag = ApplyQqNumber();
}
if(iRunLevel >= USE){ // 至少 USE 级别才能运行的命令
if(!stricmp(command,"view my info"))
flag = ViewMemberInfo(iCurrentUser);
else if(!stricmp(command,"update my info"))
flag = UpdateMemberInfo(iCurrentUser);
else if(!stricmp(command,"view my friend info"))
flag = ViewMyFrdInfo();
else if(!stricmp(command,"add friend"))
flag = AddMyFriend();
else if(!stricmp(command,"delete friend"))
flag = DeleteMyFriend();
else if(!stricmp(command,"move friend"))
flag = MoveMyFriend();
else if(!stricmp(command,"change friend remark name"))
flag = ChangeMyFrdNick();
else if(!stricmp(command,"add my friend group"))
flag = AddMyFrdGrp();
else if(!stricmp(command,"delete my friend group"))
flag = DeleteMyFrdGrp();
else if(!stricmp(command,"update my friend group name"))
flag = ChangeMyFrdGrpName();
else if(!stricmp(command,"view my friend group"))
flag = ListMyFrdGrp();
else if(!stricmp(command,"create qq group"))
flag = CreateQqGroup();
else if(!stricmp(command,"viem my join group info"))
flag = ListMyJoinGrp();
}
if(iRunLevel >= MANAGE){ // 至少 MANAGE 级别才能运行的命令
if(!stricmp(command,"view all member info"))
flag = ListMemberBriefInfo();
}
if(iRunLevel >= SUPERMANAGE){ // 最高级别,一切命令皆可
if(!stricmp(command,"turn off log"))
flag = TurnOffLog();
else if(!stricmp(command,"add qq number"))
flag = AddQqNumber();
else if(!stricmp(command,"add group number"))
flag = AddGroupNumber();
else if(!stricmp(command,"create random data"))
flag = CreateRandomData();
else if(!stricmp(command,"view table"))
flag = ViewTable();
else if(!stricmp(command,"empty table"))
flag = EmptyTable();
}
if(flag == SUCCESS)
printf("命令成功执行!\n");
else
printf("命令执行失败, 请参考 help 命令 !\n");
}
return SUCCESS;
}
评论