登录

在这个站点登录

保存我的登录记录

<<忘记密码?

还没有账号?点此注册>>

Jerry

学生成绩管理系统-MySQL版-Part2-主干代码

分享到:

本文已被浏览4017

主干代码故名思义,此部分是连接整个程序所有代码的核心骨干部分,是程序运行的起始点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;
}

程序写到这里,排除那些不存在的函数,就已经可以显示一个框子了

主菜单
 手机扫描左边的二维码,立刻将文章收入手机!
 微信扫描左边二维码,点击右上角即可分享到朋友圈!
严禁任何非授权的采集与转载,转载须经站长同意并在文章显著位置标注本文连接,站长保留追究法律责任的权利.

评论

 您需要 先登录 才可以回复.