登陆注册系统模拟(源代码)
#include
#include
#include
#include
#define Max 71
typedef struct
{
char name[20];
char pw[20];
int flag;
}USER;
USER user[Max];
char Admin[20]="administrator";
int count;
int chance;
void menu();
void User_admin(char name[],char pw[]);
void User_common(char name[],char pw[]);
void Saved();
int flag;
void Inithtable()
{
for(int i=0;i user[i].flag=0; } void password(char a[])//密码输入 { int i=0; char c; while((c=getch())!=13) { if(c==8 && i==0); else if(c==8 && i>0) { i--; printf("%c%c%c",'\b','\0','\b'); else { a[i++]=c; printf("*"); } } a[i]='\0'; printf("\n"); } void jiami(char pw[],char a[])//加密 { char c,*p; p=pw; c=*p; int i=0; while(c!='\0') { if(c>='0' && c<='9')//数字 { c=c+5; if(c>'9') c=c-10; } else { c=c+5; if(c>'Z' && c<='Z'+5 || c>'z') c=c-26; } a[i++]=c; p++; c=*p; } a[i]='\0'; } void jiemi(char pw[],char b[])//解密 { char c,*p; p=pw; c=*p; while(c!='\0') { if(c>='0' && c<='9') { c=c-5; if(c<'0') c=c+10; } else { c=c-5; if(c<'A' || c<'a' && c>='a'-5) c=c+26; } b[i++]=c; p++; c=*p; } b[i]='\0'; } int hash(int key)//构造哈希表 { int H=key%Max; while(user[H].flag==1) H=(H+1)%Max; return H; } int hashsrch(char name[])//在哈希表中查找 { int key=name[0]-'0'; int H=key%Max; if(user[H].flag==0) return -1; else if(user[H].flag==1 && strcmp(user[H].name,name)==0) return H; else { while(user[H].flag==1 && strcmp(user[H].name,name)!=0 || user[H].flag==2) H=(H+1)%Max; if(user[H].flag==0) return -1; else return H; } } void Read()//将文件中的信息存入到哈希表中 { Inithtable(); FILE *fp; if((fp=fopen("info.txt","r"))==NULL) { printf("文件打开错误!\n"); exit(0); } while(!feof(fp)) { char name[20],pwf[20],pw[20]; fscanf(fp,"%s%s",name,pwf); jiemi(pwf,pw); count++; int key=name[0]-'0'; int H=hash(key); strcpy(user[H].name,name); strcpy(user[H].pw,pw); user[H].flag=1; } fclose(fp); } void Search(char name[])//查找用户 { int H=hashsrch(name); if(user[H].flag==1) { if(H==-1) printf("该用户不存在!\n"); else printf("用户名:%s\t密码:%s\n",user[H].name,user[H].pw); } else printf("该用户不存在!\n"); } void Delete(char name[])//删除用户 { if(strcmp(name,Admin)==0) { char name1[20]; printf("输入要删除的用户名:"); gets(name1); int H=hashsrch(name1); int a=hashsrch(Admin); if(strcmp(name1,Admin)==0) printf("不能删除管理员账号!\n"); else if(H!=-1) { char pw[20]; printf("请输入管理员密码:"); password(pw); if(strcmp(user[a].pw,pw)==0) { user[H].flag=2; count--; Saved(); printf("用户信息删除成功!\n"); } else printf("密码错误,不能进行删除操作!\n"); } else printf("该用户不存在,不能进行删除操作!\n"); } else { int H=hashsrch(name); user[H].flag=2; count--; Saved(); printf("账户已注销!\n"); flag=0; } } void Changepw(char name[],char pw[])//修改用户密码 { char pw1[20],pw2[20],pw3[20]; int H=hashsrch(name); printf("请输入当前用户的密码:"); password(pw1); if(strcmp(pw1,pw)==0) { loop: printf("请输入新密码:"); password(pw2); printf("再次输入新密码:"); password(pw3); while(strcmp(pw2,pw3)!=0) { printf("两次输入的密码不一致!\n\n"); goto loop; } if(strcmp(pw,pw2)==0) { printf("新密码不能与旧密码一致!\n"); goto loop; } else { strcpy(user[H].pw,pw2); Saved(); printf("密码修改成功,请重新登录!\n"); flag=0; } } else printf("当前密码错误!\n"); } void Saved()//保存到文件 { FILE *fp; char pw[20]; if((fp=fopen("info.txt","w"))==NULL) { printf("文件打开错误!\n"); exit(1); } for(int i=0;i { if(user[i].flag==1) { jiami(user[i].pw,pw); fprintf(fp,"\n%s\t%s",user[i].name,pw); } } if(fclose(fp)) { printf("文件关闭错误!\n"); exit(1); } } void Show()//显示所有用户 { for(int i=0;i { if(user[i].flag==1) printf("用户名:%s\t密码:%s\n",user[i].name,user[i].pw); } } void User_admin(char name[],char pw[])//管理员操作界面 { system("cls"); printf("********************************************\n"); printf("** 1-查找用户2-删除用户3-显示用户**\n** 4-修改密码5-用户数6-退出**"); printf("\n********************************************"); int choice; loop:printf("\n请输入序号:"); scanf("%d",&choice);getchar(); switch(choice) { case 1: { char name[20]; printf("请输入要查找的用户名:"); gets(name); Search(name); }break; case 2:Delete(name);break; case 3:Show();break; case 4:Changepw(name,pw);break; case 5:printf("总共有%d个用户!\n",count);break; case 6:flag=0;return; default: { printf("请输入正确的序号!\n\n"); goto loop; } } printf("回车键继续......"); getchar(); } void User_common(char name[],char pw[])//普通用户操作界面{ system("cls"); int choice; printf("%s,欢迎!\n",name); printf("****************************************\n"); printf("** 1-修改密码2-注销账号3-退出**\n"); printf("****************************************"); loop:printf("\n请选择操作序号:"); scanf("%d",&choice);getchar(); switch(choice) { case 1:Changepw(name,pw);break; case 2:Delete(name);break; case 3:flag=0;return; default: { printf("请输入正确的序号!\n\n"); goto loop; } } printf("回车键继续......"); getchar(); } void Landing()//登陆界面 { chance=4; char name[20],pw[20]; printf("用户名:"); gets(name); loop:printf("密码:"); password(pw); int H=hashsrch(name); if(H!=-1) { if(strcmp(user[H].pw,pw)==0) { flag=1; if(strcmp(name,Admin)==0) while(flag) User_admin(name,pw); else while(flag) User_common(name,pw); } else { chance--; if(chance) { printf("密码错误,还有%d次机会!\n",chance); goto loop; } else { printf("登陆失败,请重新登录!\n"); printf("回车键继续......"); getchar(); } } } else { printf("该用户不存在!\n"); printf("回车键继续......"); getchar(); } } void Register()//注册界面 { if(count==Max) { printf("用户数已到最大值!\n\n"); menu(); return; } char name[20],pw1[20],pw2[20]; printf("用户名:"); gets(name); loop:printf("请输入密码:"); password(pw1); printf("再次输入密码:"); password(pw2); while(strcmp(pw1,pw2)!=0) { printf("两次输入的密码不一致!\n\n"); goto loop; } if(hashsrch(name)!=-1) printf("用户名已存在,请重新注册!"); else { int key=name[0]-'0'; int H=hash(key); strcpy(user[H].name,name); strcpy(user[H].pw,pw1); user[H].flag=1; count++; Saved(); printf("注册成功,请从登陆界面登陆!"); } printf("\n回车键继续......"); getchar(); } void menu()//登陆注册菜单 { system("cls"); printf("**********************************\n** 1-登陆2-注册3-退出**\n**********************************\n"); int choice; printf("请选择操作序号:"); loop:scanf("%d",&choice);getchar(); switch(choice) { case 1:Landing();break; case 2:Register();break; case 3:exit(0);break; default: { printf("请重新输入操作序号:"); goto loop; } } } void main() { Read(); while(1) menu(); } 在https://www.doczj.com/doc/af5041570.html,平台下用C#和Access实现用户登录界面的窗体应用程序 一直就想加个technology的类别,但却迟迟未能动笔.一来不得不承认直到现在,我在技术上还依然只是一个没怎么入门的菜鸟,二来技术本身也不是我的兴趣所在.但不管怎样,既然我现在还要攻读计算机专业的硕士学位,那么技术,总还是要学的. 需要说明的是,对于那些高手来说,这里的东西想必都是小菜一碟,不值一提.我写在这里,只是给自己的总结吧.另外我所写的东西,很多也是参考网络和书籍的,其实真正属于我自己的东西也不多.由于四处查找,具体的出处很多也已记不清了,而且在开源环境下也很难说某些代码就是谁的原创,所以这里虽然没有说明,但很多东西也都是参考他人的,在此先要对那些给了我帮助的书籍作者,网上的发贴人和回贴人表示感谢. 去年研一刚开学时,自己的实践能力还几乎为零.因为我心里清楚,自己本科的确是混过来的,计算机科学与技术的学士学位,我其实是不配去拿的.九月十号进实验室后,开始学习项目组里需要用到的C#,但单纯学习语言也没什么明确的目的性.实验室里和我同一导师本校保研的同学和我说起,他们大四下学期刚进实验室时,师兄就让他们先试着写一个类似QQ登录那样的一个用户登录程序.我自己没有任何经验,想也就像他们一样,从这里起步吧,于是在看C#的同时我就考虑怎么样去实现这样一个程序了. 我知道对于过来人来说,这样的一个程序实在是再简单不过了,但对于当时刚开始的我,着实费尽了不少周折.虽然后来基本实现了这样一个程序,但在数据库上还是有些问题.因此虽然当时也曾想过贴个technology类别的日志,但终究还是一直拖了下来. 前段时间通过同学的介绍,帮沈阳日报的一个朋友做了一个会员管理的软件.软件本身也极其简单,基本没有太多的技术含量,但在开发的过程中自己通过各种渠道去查找资料,也在各方面都学到了很多.所以这段经历对我还是很有意义的.而且自己在计算机专业学了四年有半后终于可以自己做出来一些可以应用到实际中的东西,也终于凭借自己的专业能力获得了一点回报,无论回报是多是少.嗯,是要鼓励一下自己的.也激励自己再接再厉! 此后我可能会把在这一软件中所学到的东西陆续总结一下到这里.而这一软件开发的第一个模块也就是用户登录模块.也就是我最初在尝试做的东西.好,说了这么多无关的话,现在言归正传,来看登录模块的具体实现. 由于用户登录模块的实现关键的一点就是要将用户的信息存储在数据库中,并在用户登录时到数据库中对信息进行查找和核对,所以首先要先建立一个数据库.实际上对于初学者来说,数据库的相关操作也正是实现本登录模块的难点所在.这也是当时我刚开始写这段程序时困扰我并困扰了我很久的地方.在数据量不是很大的情况下,可以就用微软Office组件里的Access数据库,比较方便.这里在D盘用Access建立一个数据库命名为db.mdb,并在数据库中建一个表,命名为users ,在表中建两个字段,命名为userName和userPassword,分别存储用户名和密码.然后在表中插入几条数据,用于登录界面的测试.下面是登录模块的开发. 在Visual Studio2005的C#开发环境下,新建一个Windows 应用程序的项目,将第一个窗体命名为Login,即作为用户登录窗体.在窗体上添加相应控件,设计效果如下: https://www.doczj.com/doc/af5041570.html,入门篇【项目实战】打造一个自己的相册(二)登录模块 2009年11月15日星期日 12:05 本文原创,转载请说明,本文地址: https://www.doczj.com/doc/af5041570.html,/44498/blog/item/59db5da17d24c28146106478.html 进行本次项目实战,需要有一定的C#基础知识,所以,在初期的几篇里面,我在文中尽可能的多贴图以进行示例,以后逐渐减少图片说明。 昨天已经介绍了流程和基本功能,今天简单的介绍一下用户登录模块的做法。 不要担心,非常简单。 打开Login.aspx页面,这是我们昨天设计的空白页面,用户登录,现在,我们来完善它的外观和功能。 简单的登录需要一个账号输入框,一个密码输入框,以及一个提交按钮;如图所示: 当然,喜欢用https://www.doczj.com/doc/af5041570.html,的标准控件库也行,喜欢用HTML组的控件也可以。 在输入密码的时候,都是以"*"号密文显示的,那么我们要调整一下密码框的属性,指定其类型是password类型。如图: 界面设计完毕,是个什么样子呢?大概的看一下吧,还算说得过去。 【如果要更好看,当然需要美工人员的帮助】 然后,该实现登录的功能了吧? 先谈谈我们的目标,也就是输入账号和密码以后,如果通过验证,则跳转到Default.aspx页面,提示登录成功,反之,则给予相应的提示。 账号和密码保存在哪里呢?当然是数据库里。 好,我们来创建一个数据库吧。【我这里使用的是SQL SERVER 2005,当然,你用其他的也行】 打开红圈选中的 SQL Server Management Studio ,其实也就等同于SQL SERVER 静态的登录界面的设计login.htm,代码如下: Html代码 1. 2. //登入页面 $conn=mysql_connect('127.0.0.1','root','')or die("连接失败"); mysql_select_db('tujian',$conn)or die("未找到该数据库"); define(ALL_PS,"vivid");mysql_query("set names GBK"); if($_POST[submit]){ $postcode=strtolower($_POST["code"]); $postcode=strtoupper($_POST["code"]); $uid=str_replace(" ","",$_POST[uid]); $sql="select * from users where `uid`='$_POST[uid]'"; $query=mysql_query($sql); $user=is_array($row=mysql_fetch_array($query)); $mi=$user?md5($_POST[pass].ALL_PS)==$row[pass]:FALSE; if($mi){ $_SESSION[uid]=$row[uid]; $_SESSION[name]=$row[name]; $_SESSION[id]=$row[id]; $_SESSION[user_shell]=md5($row[uid].$row[pass].ALL_PS); if( $_SESSION["code"]==$postcode){ echo""; }else{ echo" 网页效果截图: 源码: HTML代码(login.html) 登录界面代码
登录界面代码(vs)
(完整版)JSP登陆页面代码
18. 19.
38. 20. 23. 35. 36. 37. 22. php用户登录页面代码源代码
登录页面HTML+CSS+JS代码