学生成绩管理系统-MySQL版-Part5-安装程序
本文已被浏览4615次
安装程序准确的说应该是配置程序。当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; }
评论
您需要 先登录 才可以回复.