上学期我们学了数据库,课程设计我是用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;}

评论