学生成绩管理系统-MySQL版-Part2-主干代码
本文已被浏览4229次
主干代码故名思义,此部分是连接整个程序所有代码的核心骨干部分,是程序运行的起始点main函数所在之处。
在这部分中有一些其他的函数,将会在其他part中提到,只要把每个part中的代码合起来,就能编译不出问题。
#include <stdio.h> #include <windows.h> //mysql头文件前需要加windows.h,其中有关socket的函数是必须的 #include <mysql.h> #include <conio.h> //声明mysql的查询及数据储存变量 MYSQL mysql; //查询到的结果 MYSQL_RES *result; //从结果中获取到的每行 MYSQL_ROW row; //查询到的表头 MYSQL_FIELD *field; //服务器地址 char Host[15]; //服务器端口 char Port[8]; //登录用户名 char Username[10]; //密码 char Password[20]; //数据库 char DB[10]; char me[1000]; //当前用户 char Current_User[100]="Jerry"; //函数原型列表,到了具体函数的部分再说 int LoadSettings(); int Install(int mode); int Connect_DB(); void ChangeColorScreen(const char* color); void ChangeWindowSize(int Width,int Height); void Pause(int mode); void CS(); void Login(); void Exit(); void ChangeWindowSize(int Width,int Height); void ChangeWindowTitle(const char* title); void Add_Score(); int Export_Score(); int Change_Score(); int Query_Score(); int Analysis_Score(); int Change_Password(); int Commander(int argc,char* argv[]); //核心函数 //读取数据 int LoadSettings(){ char select; //在同目录下有一个Config.ini文件,存有安装时输入的数据库设置参数 //这里就直接调用Windows的API读取数据了 GetPrivateProfileString("DATABASE","MYSQL_HOST","NULL",Host, sizeof(Host)-1, "./Config.ini"); GetPrivateProfileString("DATABASE","MYSQL_PORT","NULL",Port, sizeof(Port)-1, "./Config.ini"); GetPrivateProfileString("DATABASE","MYSQL_USER","NULL",Username, sizeof(Username)-1, "./Config.ini"); GetPrivateProfileString("DATABASE","MYSQL_PASS","NULL",Password, sizeof(Password)-1, "./Config.ini"); GetPrivateProfileString("DATABASE","MYSQL_DB",NULL,DB, sizeof(DB)-1, "./Config.ini"); if(!strcmp(Host,"NULL")||!strcmp(Port,"NULL")||!strcmp(Username,"NULL")){ Install(0); return 0; } //确定是否能登录数据库,以判断配置文件是否正确 C_My:if(!Connect_DB(1)){ printf("无法根据设置文件中的参数登录Mysql,请选择接下来的操作:n"); printf("[R]重试 [C]重新配置数据库 [Q]退出n"); printf(">"); select=getch(); switch(select){ case 'R': case 'r': CS(); printf("正在重试...n"); goto C_My; break; case 'C': case 'c': Install(1); break; case 'Q': case 'q': exit(1); break; } return 0; } //如果文件损坏,调用安装 if(!strcmp(DB,"NULL")){ Install(2); } return 0; } //Core void Core(){ char select=0; char cmd[1000]; CS(); ChangeWindowSize(47,19); ChangeWindowTitle("主菜单"); ChangeColorScreen("1f"); printf("╔═════════════════════╗n"); printf("║ 学生成绩管理系统 ║n"); printf("║ 酷炫狂拽的MySQL版→_→ ║n"); printf("╟─────────────────────╢n"); printf("║ 请输入对应的标号进行不同的操作: ║n"); printf("║ [1] 导入成绩 ║n"); printf("║ [2] 输出成绩 ║n"); printf("║ [3] 更改成绩 ║n"); printf("║ [4] 查询成绩 ║n"); printf("║ [5] 成绩分析 ║n"); printf("║ [6] 更改用户密码 ║n"); printf("╟─────────────────────╢n"); printf("║ [X] 退出 [A]关于 ║n"); printf("╟─────────────────────╢n"); printf("║ JerrySoft Copyright. ║n"); printf("╚═════════════════════╝n"); printf(">"); //这个窗体绘制的有点蛋疼,用本博客写过的一个函数比较好 fflush(stdin); select=getch(); switch(select){ //下面就是分别调用不同的函数了 case '1': Add_Score(); break; case '2': Export_Score(); break; case '3': Change_Score(); break; case '4': Query_Score(); break; case '5': Analysis_Score(); break; case '6': Change_Password(); break; case 'x': case 'X': Exit(); break; case 'A': case 'a': ChangeWindowTitle("关于"); ChangeWindowSize(49,23); sprintf(cmd,"%s /about",me); CS(); system(cmd); printf("按任意键返回主菜单!"); Pause(0); break; default: CS(); ChangeWindowTitle("字段错误"); ChangeWindowSize(26,9); ChangeColorScreen("0f"); printf("╔══════════╗n"); printf("║ 学生成绩管理系统 ║n"); printf("║ 基于MySQL ║n"); printf("╟──────────╢n"); printf("║ >请输入正确的内容!<║n"); printf("╚══════════╝n"); Sleep(2000); break; } Core(); } //程序入口 int main(int argc,char *argv[]){ strcpy(me,argv[0]); //me是个用了存储命令行指令的,用处不大 if(argc>1){ exit(Commander(argc,argv)); } //读取设置 LoadSettings(); if(mysql_query(&mysql,"SELECT 1+1")){ //重新连接数据库 Connect_DB(0); } //调用登录 Login(); //调用核心 Core(); return 0; }
程序写到这里,排除那些不存在的函数,就已经可以显示一个框子了
评论
您需要 先登录 才可以回复.