Thứ Năm, 7 tháng 8, 2014

Danh sach liên kết Mật khẩu


/**
Tạo 1 dslk  THONG TIN gồm tài khoản và mật khẩu ...
a.Nhập danh sách, điều kiện mật khẩu phải có ít nhất 1 chữ cái hoa, 1 chữ cái thường, 1 chữ số và 1 kí tự đặc biệt.
mật khẩu có ít nhất 8 kí tự.
dừng nhập khi nhập vào tài khoản là kí tự trắng.
b. Bổ sung 1 tài khoản vào danh sách, nếu đã có thì ko bổ sung nữa.
c. Xóa tất cả các tài khoản trùng nhau.
/**/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
struct TK
{
 char tk[100];
 char mk[100];
 TK *tiep;
};
TK *dau=NULL, *cuoi;
void tao(char *tk,char *mk)
{
 TK *p=(TK*)malloc(sizeof(TK));
 // hoặc dùng TK *p=new TK; trong C++
 strcpy(p->tk,tk);
 strcpy(p->mk,mk);
 if(dau==NULL)
  dau=p;
 else
  cuoi->tiep=p;
 p->tiep=NULL;
 cuoi=p;
}
int ktra_mat_khau(char* s)
{
 if(strlen(s)<8)
  return 0;
 for(int i=0;s[i];i++)
  if(s[i]>=32&&s[i]<=126) // các ký tự ASCII in được bao gồm các chữ cái, chữ số và ký tự đặc biệt
   return 1;
 return 0;
}
void nhap()
{
 int i=1;
 char tk1[100],mk1[100];
 while(1)
 {
  printf("\n Nhap thong tin tai khoan %d: ",i);
  printf(" Ten tai khoan: ");
  fflush(stdin);
  gets(tk1);
  if(tk1[0]==NULL)
   return;
  do
  {
   printf(" Mat khau: ");
   fflush(stdin);
   gets(mk1);
  } while(ktra_mat_khau(mk1)==0);
 
  tao(tk1,mk1);
  i++;
 }
}
void inds()
{
 for(TK *p=dau;p!=NULL;p=p->tiep)
  printf("\n Tai khoan: %s; Mat khau: %s",p->tk,p->mk);
}
void bosung(char* tk1, char* mk1)
{
 for(TK *p=dau;p!=NULL;p=p->tiep)
  if(strcmp(p->tk,tk1)==0)
   return;
 tao(tk1,mk1);
}
void main()
{
 nhap();
 printf("\n---------------------------------\n");
 printf("\n\n Nhap thong tin can bo sung: ");
 char tk1[100],mk1[100];
 printf("Tai khoan: ");
 fflush(stdin);
 gets(tk1);
 printf("Mat khau: ");
 fflush(stdin);
 gets(mk1);
 bosung(tk1,mk1);
 inds();
 getch();
}

Không có nhận xét nào:

Đăng nhận xét