学生成绩管理系统-MySQL版-Part5-安装程序
本文已被浏览4891次
安装程序准确的说应该是配置程序。当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;
}






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