登录

在这个站点登录

保存我的登录记录

<<忘记密码?

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

Jerry

学生成绩管理系统-MySQL版-Part5-安装程序

分享到:

本文已被浏览2160

安装程序准确的说应该是配置程序。当MySQL环境搭完成后,需要在数据库中对数据库进行配置,从而创建一个程序的运行环境。

根据Part4的描述,我们需要在安装配置阶段创建两个数据表,scm_users和scm_options,所以应该用Create语句创建这两个表。

再一个需要创建的就是Config.ini。

#include <windows.h>
#include <mysql.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
//引入头文件
extern MYSQL mysql;
extern MYSQL_RES *result;
extern MYSQL_ROW row;
extern MYSQL_FIELD *field;

extern char Host[15];
extern char Port[8];
extern char Username[10];
extern char Password[20];
extern char DB[10];
//继承所有全局变量
int LoadSettings();
int Install(int mode);
int Connect_DB();
void ChangeColorScreen(const char* color);
void ChangeWindowSize(int Width,int Height);
void ChangeWindowTitle(const char* title);
void Pause(int mode);
void CS();
int Drop_Table(const char* table);
int Sum_ints(int number);
void scanPass(char*p);
//声明用到的函数原型
//安装
int Install(int mode){
    char selct,sql[100],Input[100],tempstr1[100],tempstr2[100];
    int sqler,result_count,i;
	//考虑需要通过mode控制进行的位置,所以需要用switch并且case不用break结束
    switch(mode){
        case 0:
			//第一屏:欢迎屏幕
            ChangeWindowTitle("安装");
            ChangeWindowSize(64,13);
            printf("╔═════════════════════════════╗n"
                   "║               学生成绩管理系统(MySQL)-安装               ║n"
                   "╟─────────────────────────────╢n"
                   "║欢迎:                                                     ║n"
                   "║    欢迎使用本软件,本软件以MySQL数据库为基础,建立起具备成 ║n"
                   "║绩收集及相关内容的完整管理系统.                           ║n"
                   "║                                                          ║n"
                   "║  版权所有:JerrySoft Studio                               ║n"
                   "╟─────────────────────────────╢n"
                   "║                    >按任意键开始安装<                    ║n"
                   "╚═════════════════════════════╝n");
            Pause(0);
        case 1:
			//第二屏:获取数据库服务器的参数
            ChangeWindowTitle("安装:Step 1 生成配置文件");
            ChangeWindowSize(64,15);
            printf("╔═════════════════════════════╗n"
                   "║                学生成绩管理系统(MySQL)-安装              ║n"
                   "║                                    Step 1:生成配置文件   ║n"
                   "╟─────────────────────────────╢n"
                   "║    系统检测到您的配置文件损坏或者不存在,为了能够连接MySQL║n"
                   "║数据库,系统需要您计算机上的MySQL数据库相关的信息,请如实输 ║n"
                   "║入, 否则将会导致无法连接数据库!                           ║n"
                   "║                                                          ║n"
                   "║  版权所有:JerrySoft Studio                               ║n"
                   "╟─────────────────────────────╢n"
                   "║>请按照:服务器地址 端口号 用户名 密码的顺序输入必要的信息<║n"
                   "╚═════════════════════════════╝n");
            fflush(stdin);
            scanf("%s%s%s%s",Host,Port,Username,Password);
			//尝试连接并且获取错误信息
            if(!Connect_DB(1)){
                CS();
                printf("╔═════════════════════════════╗n"
                       "║               学生成绩管理系统(MySQL)-安装               ║n"
                       "║                                  Step 1:生成配置文件     ║n"
                       "╟─────────────────────────────╢n"
                       "║    错误:                                                 ║n"
                       "║ 对不起,使用您输入的信息,无法登录数据库,请检查后再试!     ║n"
                       "║ MySQL错误信息:                                           ║n");
                printf("%sn",mysql_error(&mysql));
                printf("║  版权所有:JerrySoft Studio                               ║n"
                       "╟─────────────────────────────╢n"
                       "║                    >按任意键重新输入<                    ║n"
                       "╚═════════════════════════════╝n");
                Pause(0);
                Install(1);
                return 0;
            }
			//通过后写入INI文件
            WritePrivateProfileString("DATABASE","MYSQL_HOST",Host,"./Config.ini");
            WritePrivateProfileString("DATABASE","MYSQL_PORT",Port,"./Config.ini");
            WritePrivateProfileString("DATABASE","MYSQL_USER",Username,"./Config.ini");
            WritePrivateProfileString("DATABASE","MYSQL_PASS",Password,"./Config.ini");
        case 2:
			//第三屏:数据看名称
            ChangeWindowTitle("安装:Step 2 配置数据库");
            ChangeWindowSize(64,15);
            Install_DB_SELECT:CS();
            printf("╔═════════════════════════════╗n"
                   "║               学生成绩管理系统(MySQL)-安装               ║n"
                   "║                                    Step 2:配置数据库     ║n"
                   "╟─────────────────────────────╢n"
                   "║   请输入您希望存储数据表的数据库名,例如SCM               ║n"
                   "║                                                          ║n"
                   "║  版权所有:JerrySoft Studio                               ║n"
                   "╟─────────────────────────────╢n"
                   "║                >请输入您希望的数据库名称<                ║n"
                   "╚═════════════════════════════╝n>");
            fflush(stdin);
            scanf("%s",DB);
            if(Connect_DB(0)){
                mysql_close(&mysql);
                Install_DB_EXIST:CS();
                printf("╔═════════════════════════════╗n"
                       "║               学生成绩管理系统(MySQL)-安装               ║n"
                       "║                                    Step 2:配置数据库     ║n"
                       "╟─────────────────────────────╢n"
                       "║ 您输入的数据库名称已经存在,是否使用此数据库?             ║n"
                       "║                                                          ║n"
                       "║  版权所有:JerrySoft Studio                               ║n"
                       "╟─────────────────────────────╢n"
                       "║                  >Y<                >N<                  ║n"
                       "╚═════════════════════════════╝n>");
                fflush(stdin);
                selct=getch();
                switch(selct){
                    case 'Y':
                    case 'y':
                        break;
                    case 'N':
                    case 'n':
                        goto Install_DB_SELECT;
                    break;
                    default:
                        goto Install_DB_EXIST;
                    break;
                }
            }else{
                sprintf(sql,"CREATE DATABASE %s;",DB);
                Connect_DB(2);
                mysql_query(&mysql,sql);
                mysql_close(&mysql);
                Connect_DB(0);
            }
			//写入ini文件
            WritePrivateProfileString("DATABASE","MYSQL_DB",DB,"./Config.ini");
        case 3:
			//用户组设置
            ChangeWindowTitle("安装:Step 3 注册用户");
            CreateUser:CS();
            Connect_DB(0);
			//尝试创建用户组数据表
            sqler=mysql_query(&mysql,"CREATE TABLE `scm_user` (`ID` int(11) NOT NULL AUTO_INCREMENT,`Username` text NOT NULL,`Pass` text NOT NULL,PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;");
            if(sqler) {
				//创建失败后删掉原表
                Drop_Table("scm_user");
                goto CreateUser;
            }
			//创建新用户
            AddNewUser:CS();
            mysql_query(&mysql,"SELECT * FROM scm_user;");
            result=mysql_store_result(&mysql);
            result_count=mysql_num_rows(result);
            memset(tempstr1,0,100);
            strcpy(tempstr1," ");
			//纯粹是用来凑窗口
            for(i=Sum_ints(result_count);i<4;i++){
                sprintf(tempstr1,"%s ",tempstr1);
            }
            printf("╔═════════════════════════════╗n"
                   "║               学生成绩管理系统(MySQL)-安装               ║n"
                   "║                                     Step 3:注册用户      ║n"
                   "╟─────────────────────────────╢n"
                   "║  当前有%d个用户,输入用户名继续添加,输入over进入下一步!%s║n"
                   "║                                                          ║n"
                   "║  版权所有:JerrySoft Studio                               ║n"
                   "╟─────────────────────────────╢n"
                   "║                 >请根据提示输入相应内容<                 ║n"
                   "╚═════════════════════════════╝n",result_count,tempstr1);
            fflush(stdin);
            printf("请输入新的用户名:>");
            scanf("%s",Input);
			//最后是以over结束,检测是否有账户
            if(stricmp(Input,"over")==0&&result_count==0){
                printf("您至少需要一个用户!");
                Sleep(5000);
                goto AddNewUser;
            }
			//确定有并且输入非over字符串
            if(stricmp(Input,"over")){
				//检测是否重复
                sprintf(sql,"SELECT * FROM scm_user WHERE Username='%s'",Input);
                mysql_query(&mysql,sql);
                result=mysql_store_result(&mysql);
                if(mysql_num_rows(result)>0){
                    printf("用户名已存在!n");
                    Sleep(1000);
                    goto AddNewUser;
                }
				//输入密码,两次
                memset(tempstr1,0,100);
                memset(tempstr2,0,100);
                printf("请为%s设置密码>",Input);
                scanPass(tempstr1);
                printf("n请重复%s的密码>",Input);
                scanPass(tempstr2);
                if(strcmp(tempstr1,tempstr2)){
                    printf("您输入的两次密码不同,请重新输入!n%s!=%s",tempstr1,tempstr2);
                    Sleep(4000);
                }else{
                    sprintf(sql,"INSERT INTO scm_user (Username,Pass) VALUES ('%s',MD5('%s'));",Input,tempstr1);
                    if(!mysql_query(&mysql,sql)){
                        printf("n成功保存数据!");
                        Sleep(1000);
                    }else{
                        printf("n添加失败:%s",mysql_error(&mysql));
                        Sleep(5000);
                    }
                    goto AddNewUser;
                }
            }
        case 4:
            //散列键值
            ChangeWindowTitle("安装:Step4 创建必需数据表");
            CS();
            sprintf(sql,"CREATE TABLE `scm_options` (`ID` int(11) NOT NULL AUTO_INCREMENT,`keyword` text NOT NULL,`value` text NOT NULL,PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;");
            AddOptions:if(mysql_query(&mysql,sql)){
                printf("%dn",Drop_Table("scm_options"));
                goto AddOptions;
            }
        case 5:
			//成功结束画面
            ChangeWindowTitle("安装完成!");
            CS();
            printf("╔═════════════════════════════╗n"
                   "║               学生成绩管理系统(MySQL)-安装               ║n"
                   "║                                       Step 4:完成        ║n"
                   "╟─────────────────────────────╢n"
                   "║  恭喜:                                                   ║n"
                   "║    您已经成功完成了数据库相关的安装,现在您需要使用刚才设 ║n"
                   "║定的用户名及密码登陆系统!                                 ║n"
                   "║  版权所有:JerrySoft Studio                               ║n"
                   "╟─────────────────────────────╢n"
                   "║                      >按任意键继续<                      ║n"
                   "╚═════════════════════════════╝n");
            Pause(0);
    }
    mysql_close(&mysql);
    return 0;
}

下面是这几个屏幕画面:
第一屏:欢迎界面
第二屏:获取数据库配置信息
第三屏:获取数据库名称
第四屏:创建用户
第四屏:创建用户-输入信息
第五屏:成功界面

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

评论

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