登录

在这个站点登录

保存我的登录记录

<<忘记密码?

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

Jerry

学生成绩管理系统-MySQL版-Part6-登录程序

分享到:

本文已被浏览5187

登录程序是这个学生成绩管理系统比较简单的一个部分。它是整个程序的大门,也是必不可少的一部分。

首先,先看一下数据在数据库中的形式。在安装程序中,曾经要求用户注册用于登录的用户记录,这些记录是以用户名-密码MD5值形式记录的,所以在登录时应当同时比较用户名和密码的MD5值。

对于MD5的问题先解决一下。MD5本身的加密计算代码量就相当巨大,再加之并没有必要自己去写这个MD5加密的功能,因为MySQL这个开源数据库提供了一些函数,这些函数之中就有提供MD5的加密函数。

作为密码的保存,MD5并不是最佳的方案,MD5本身已经被破解,导致单从密文本身是有可能推测出密码明文的。作为密码的储存,最好应当是使用AES的加密,但是AES加密的结果是完全无规则的二进制数据,存储起来有一定的困难,也比较麻烦,就没有使用AES的加密。

ok,上代码:

#include <windows.h>
#include <mysql.h>
#include <stdio.h>
#include <stdlib.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];
extern char Current_User[100];
//继承变量
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();
void Ring();
int Drop_Table(const char* table);
int Sum_ints(int number);
void scanPass(char*p);
//声明原型
//登录界面
void Login(){
	//用户名密码读入及sql语句的变量
    char Username[100],Password[100];
    char sql[100];
    int usercount,i;
	//获取用户数量
    mysql_query(&mysql,"SELECT * From scm_user;");
    result=mysql_store_result(&mysql);
    if(mysql_num_rows(result)==0){
		//如果没有用户可以考虑数据表损坏
        Install(3);
    }
	//更改窗口样式
    ChangeWindowTitle("Login");
    ChangeWindowSize(26,9);
    system("color 0f");
    Login_tag:CS();
    printf("╔══════════╗n");
    printf("║  学生成绩管理系统  ║n");
    printf("║           基于MySQL║n");
    printf("╟──────────╢n");
    printf("║开始使用请先登录!   ║n");
    printf("╚══════════╝n");
    printf("Username>");
    fflush(stdin);
	//读入一个用户名
    scanf("%s",Username);
    printf("Password>");
	//读入一个密码
    scanPass(Password);
	//查询有次此用户否
    sprintf(sql,"SELECT 1 FROM scm_user WHERE Pass=MD5('%s') AND Username='%s'",Password,Username);
    mysql_query(&mysql,sql);
    result=mysql_store_result(&mysql);
    usercount=mysql_num_rows(result);
    if(usercount!=1){
		//不是一个就是密码错误
        CS();
        Ring();
        printf("╔══════════╗n");
        printf("║  学生成绩管理系统  ║n");
        printf("║          基于MySQL ║n");
        printf("╟──────────╢n");
        printf("║    >密码错误!<     ║n");
        printf("╚══════════╝n");
        for(i=0;i<10;i++){
			ChangeColorScreen("fc");
            Sleep(50);
            ChangeColorScreen("0f");
            Sleep(50);
        }
        goto Login_tag;
    }else{
		//通过验证将数据转存至全局变量
        strcpy(Current_User,Username);
    }
}

登录框
登录框

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

评论

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