當前位置:首頁 » 編程語言 » c語言登陸系統

c語言登陸系統

發布時間: 2024-08-03 11:58:40

㈠ 多用戶登錄系統c語言程序

#include<stdio.h>
#include<stdlib.h>
#include"string.h"
#include"windows.h"

inttotal=0;

structu_p
{
charuser[20];
charpass[20];
}s[50];

voidread()
{
total=GetPrivateProfileInt("INFO","count",0,"d:\Info.dat");
inti;
chart[5]={""};
for(i=0;i<total;i++)
{
sprintf(t,"%d",i+1);
GetPrivateProfileString(t,"USER","",s[i].user,20,"d:\Info.dat");
GetPrivateProfileString(t,"PASSWORD","",s[i].pass,20,"d:\Info.dat");
}
}

voidinput()
{
intp,i=0,count=0,f_u=0,f_p=0;
charuser[20]={""};
charpassword[20]={""};
while(1)
{
f_u=0;
f_p=0;
system("cls");
printf("當前共有%d個注冊用戶",total);
printf(" 請輸入用戶名:");
memset(user,'',20);
scanf("%s",user);
printf(" 請輸入密碼:");
memset(password,'',20);
i=0;
while(1)
{
p=_getch();
if(p==10||p==13)
{
break;
}
password[i++]=p;
printf("*");
}
for(i=0;i<total;i++)
{
if(strcmp(s[i].user,user)==0)
{
f_u=1;
if(strcmp(s[i].pass,password)==0)
{
f_p=1;
printf(" 歡迎%s",user);
fflush(stdin);
_getche();
continue;
}
}
}
if(f_u==0)
{
printf(" 不存在該用戶名!選1重新輸入,選2注冊新用戶");
intc=0;
fflush(stdin);
c=_getche();
if(c=='1')
{
continue;
}
elseif(c=='2')
{
system("cls");
printf("注冊新用戶");
printf(" 請輸入用戶名:");
memset(user,'',20);
scanf("%s",user);
printf(" 請輸入密碼:");
chartemp[20]={""};
i=0;
while(1)
{
p=_getch();
if(p==10||p==13)
{
break;
}
temp[i++]=p;
printf("*");
}
printf(" 請再次輸入密碼:");
i=0;
memset(password,'',20);
while(1)
{
p=_getch();
if(p==10||p==13)
{
break;
}
password[i++]=p;
printf("*");
}
if(strcmp(temp,password)==0)
{
total++;
chart[5]={""};
sprintf(t,"%d",total);
WritePrivateProfileString("INFO","count",t,"d:\Info.dat");
WritePrivateProfileString(t,"USER",user,"d:\Info.dat");
WritePrivateProfileString(t,"PASSWORD",password,"d:\Info.dat");
printf(" 注冊成功,請重新登錄");
fflush(stdin);
_getch();
count=0;
read();
continue;
}
else
{
printf(" 兩次密碼不一致,注冊失敗");
fflush(stdin);
_getch();
count=0;
continue;
}
}
}
elseif(f_p==0)
{
count++;
if(count>=3)
{
printf(" 連續輸入3次錯誤,程序將退出");
fflush(stdin);
_getche();
return;
}
printf(" 密碼輸入錯誤,請重新輸入");
fflush(stdin);
_getche();
}
}
return;
}

intmain(intargc,char*argv[])
{
read();
input();

return0;
}

㈡ C語言用戶登錄系統賬戶密碼比對

#include<stdio.h>
#include<string.h>

typedefstructaccount{
charname[32];
characc[16];
charpsw[16];
}Acc;

//data是結構體數組,filename是文件絕對地址,n保存讀入的結構體數量
voidGetDataFromTxt(Acc*data,constchar*filename,int*n)
{
FILE*fp=fopen(filename,"r");
if(NULL==fp){
printf("Openfilefailedornothisfile! ");
return;
}

inti=0;
while(!feof(fp))
{
fscanf(fp,"%s%s%s",data[i].name,data[i].acc,data[i].psw);
i++;
}
*n=i;
}

intmain()
{
inti,n;
Accdata[100];
//獲取數據
GetDataFromTxt(data,"E:\secret.txt",&n);
printf("n=%d ",n);
printf("姓名賬號密碼 ");
for(i=0;i<n;++i)
printf("%-4s%-16s%-10s ",data[i].name,data[i].acc,data[i].psw);

//登錄示例
putchar(' ');
characc[16],psw[16];
do{
//這里只是粗略地寫了一個
//具體的賬號錯誤或者密碼錯誤自行發揮
printf("請輸入賬號:");
scanf("%s",acc);
printf("請輸入密碼:");
scanf("%s",psw);
for(i=0;i<n;++i)
{
if(strcmp(acc,data[i].acc)==0&&strcmp(psw,data[i].psw)==0){
printf("登陸成功! ");
break;
}
}
if(i==n){
printf("賬號或密碼不正確!請重新輸入! ");
}else{
break;
}
}while(1);
printf("Byebye!!! ");

return0;
}

㈢ C語言學生管理系統

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define max 20

typedef struct student //學生
{
char sno[max]; // 學號
char sname[max]; //姓名
char sex[max]; //性別
char age[max]; //年齡
char depart[max]; //系
char classs[max]; //班
char grade[max]; //年級

struct student* next;
} student;

student* head;

int LogOn() //登錄模塊,已實現輸入密碼不回顯,如果中途發現輸錯某幾位,可退格鍵重輸
{
char username[max],password[max];
printf("\n請輸入用戶名:");
scanf("%s",username);
printf("\n請輸入密碼(最多15位):");

//開始以不回顯且支持退格方式獲取輸入密碼
int i=0;
while((i>=0)&&(password[i++]=getch())!=13)//條件i>=0是用於限制退格的范圍
{
if(password[i-1]=='\b')//對退格鍵的處理
{
printf("%c%c%c",'\b','\0','\b');
i=i-2;
}
else
printf("*");
}
password[--i]='\0';

//已獲取密碼。驗證用戶身份
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086"))
{
printf("\n登錄成功!");
return 1;
}
else
return 0;

}

void regist()
{
char ch;
student *s,*ptr; //s用來建新結點,ptr用來暫存頭結點

do
{

s=(student*)malloc(sizeof(student)); // 新建一個學生結點

printf("\n開始注冊..."); //開始注冊
printf("\n請輸入該學生的學號:");
scanf("%s",s->sno);
printf("\n請輸入該學生的姓名:");
scanf("%s",s->sname);
printf("\n請輸入該學生的性別:");
scanf("%s",s->sex);
printf("\n請輸入該學生的年齡:");
scanf("%s",s->age);
printf("\n請輸入該學生的系:");
scanf("%s",s->depart);
printf("\n請輸入該學生所在的班:");
scanf("%s",s->classs);
printf("\n請輸入該學生所在的年級");
scanf("%s",s->grade);

ptr=head;
head=s;//將新結點插入隊頭
s->next=ptr;

fflush(stdin);
printf("\n請問是否繼續注冊?(Y/N)");
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');

return;
}

void ElePrint(char str[]) //輸出單個元素
{
if(str==NULL) exit(0);
printf("%s",str);
for(unsigned int i=0;i<12-strlen(str);i++) printf(" ");//為了對齊輸出,需插入一些空格
return;
}

int LinePrint(student *ptr) //輸出一行
{
if(ptr==NULL) //檢查傳進來的指針
return 0;

printf("\n");
ElePrint(ptr->sno);
ElePrint(ptr->sname);
ElePrint(ptr->age);
ElePrint(ptr->sex);
ElePrint(ptr->depart);
ElePrint(ptr->classs);
ElePrint(ptr->grade);

return 1;
}

void print() //輸出全部學生信息
{
student *ptr=head;
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(ptr)
{
LinePrint(ptr);
ptr=ptr->next;
}
printf("\n");
return;
}
void search()//查詢模塊
{
int method;//查詢方式
char no[max],name[max],departm[max],clss[max],grades[max]; //用來接收查詢關鍵字
while(1)
{
printf("\n請選擇查詢方式");
printf("\n1.按學號查詢");
printf("\n2.按姓名查詢");
printf("\n3.按所在系查詢");
printf("\n4.按所在班級查詢");
printf("\n5.按所在年級查詢");
printf("\n6.列印全部學生信息");
printf("\n7.返回主菜單\n");

scanf("%d",&method);

student *p=head,*temp;

switch(method)
{
case 1:
printf("\n請輸入要查詢的學號:");
scanf("%s",no);
while(p)
{
if(!strcmp(p->sno,no))
break;
else
{
temp=p;
p=p->next;
}
}
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
LinePrint(p);
break;
case 2:
printf("\n請輸入要查詢的姓名:");
scanf("%s",name);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->sname,name))
LinePrint(p);
p=p->next;
}
break;
case 3:
printf("\n請輸入學生所在的系:");
scanf("%s",departm);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->depart,departm))
LinePrint(p);
p=p->next;
}
break;
case 4:
printf("\n請輸入學生所在的班:");
scanf("%s",clss);
printf("\n請輸入學生所在的年級:");
scanf("%s",grades);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;

case 5:
printf("\n請輸入學生所在的年級:");
scanf("%s",grades);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;

case 6:
print();
break;

case 7:
return;
default:
printf("很抱歉,暫無此查詢方式!");
break;
}
}

}

void modify()//修改學生信息
{
char num[max];
student *p=head;
printf("\n請輸入要修改的學生的學號:");
scanf("%s",num);
while(p)
{
if(!strcmp(p->sno,num))
break;
else
p=p->next;
}
if(p==NULL)
{
printf("\n錯誤:沒有此學生的信息!\n");
return;

}
LinePrint(p);

printf("\n請輸入要修改的該學生的信息:");
printf("\n1.姓名");
printf("\n2.性別");
printf("\n3.年齡");
printf("\n4.所在的系");
printf("\n5.所在的班");
printf("\n6.所在的年級");

char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];
int select;
fflush(stdin);
scanf("%d",&select);
printf("\n請輸入新的信息:");

switch(select)
{
case 1:
scanf("%s",name1);
strcpy(p->sname,name1);
break;
case 2:
scanf("%s",sex1);
strcpy(p->sex,sex1);
break;
case 3:
scanf("%s",age1);
strcpy(p->age,age1);
break;
case 4:
scanf("%s",depart1);
strcpy(p->depart,depart1);
break;
case 5:
scanf("%s",class1);
strcpy(p->classs,class1);
break;
case 6:
scanf("%s",grade1);
strcpy(p->grade,grade1);
break;
default:
printf("\nError!");
break;
}

LinePrint(p);
return;
}

void del()// 刪除某學生的信息
{
student *p=head,*temp=head,*s;
char num1[max];
printf("\n請輸入要刪除的學生的學號:");
scanf("%s",num1);
while(p)//查找該學生所在的結點
{
if(!strcmp(p->sno,num1))
break;
else
{
temp=p;
p=p->next;
}

}//while
if(!p)
{
printf("\n不存在此學生的信息.");
return;
}
LinePrint(p);//輸出該學生的信息
printf("\n請問真的要刪除該學生的信息嗎?(Y/N)");
char ch;
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
s=p->next;
temp->next=s;
free(p);
printf("\n已經刪除該學生的信息.");
}
return;
}

void sort() //排序模塊。將學生記錄按學號從小到大排列。用起泡排序演算法實現
{

student *ptr,*s=head,*p;
int count=0,count1;
while(s)//統計鏈表結點個數
{
count++;
s=s->next;
}

for(int i=1;i<count;i++)
{
ptr=head;
p=NULL;
count1=count-i; //用來控制每輪起泡排序的終點,即每次把學號最小的結點移到倒數第i個結點
while(ptr&&ptr->next&&(count1--))
{
if(strcmp(ptr->sno,ptr->next->sno)>0)
{
s=ptr->next;
ptr->next=s->next;
if(p==NULL) //ptr處於隊頭時
head=s;
else
p->next=s;
s->next=ptr;
p=s;
}
else
{
ptr=ptr->next;
if(p==NULL) //ptr處於隊頭時
p=head;
else
p=p->next;
}
}
}
return;
}

void quit()
{
char ch;
printf("\n真的要退出?(Y/N)");
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
return;
}

int main()
{
int option;

printf("\nCopyright@2005 KongXinCai All rights reserved.");
printf("\n歡迎使用學生信息管理系統!\n");

//登錄模塊
int icheck=0;
while(icheck<3)
{
if(LogOn()==0)
icheck++;
else
break;

}
if(icheck==3)
{
printf("\n連續登錄三次不成功,退出!");
exit(0);
}

//系統界面

while(1)
{
printf("\n\n請選擇需要的服務:");
printf("\n1.注冊");
printf("\n2.查詢");
printf("\n3.修改");
printf("\n4.刪除");
printf("\n5.排序");
printf("\n7.求平均");
printf("\n6.退出\n");

scanf("%d",&option);

switch(option)
{
case 1:
regist();
break;
case 2:
search();
break;
case 3:
modify();
break;
case 4:
del();
break;
case 5:
sort();
break;
case 6:
quit();
break;
}

}

return 0;

}

㈣ c語言編寫,自定義一個函數,要求如下功能:判斷系統的登錄賬號密碼是否正確,並輸出登錄結果

是三種不同的函數驗證登陸吧,check1、check2、check3三類函數分別如下:

void check1()輸入輸出功能全部在函數完成;

void check2(name,pass)輸入在main中傳入函數進行判斷輸出;

int check3(name,pass)輸入輸出均在main函數完成,函數只做判斷返回結果。

#include "stdafx.h"

#include <iostream>

#include <string>

void check1()

{

char name[10], pass[10];

printf("請輸入賬號和密碼: ");

scanf_s("%s%s", name, 10, pass, 10);

if (!strcmp(name,"admin")&&!strcmp(pass,"123"))

printf("賬號密碼正確! ");

else

printf("賬號或密碼錯誤! ");

}

void check2(char *n, char *p)

{

if (!strcmp(n, "admin") && !strcmp(p, "123"))

printf("賬號密碼正確! ");

else

printf("賬號或密碼錯誤! ");

}

int check3(char *n, char *p)

{

if (!strcmp(n, "admin") && !strcmp(p, "123"))

return 1;

else

return 2;

}

int main()

{

char name[10], pass[10];

check1();

printf("請輸入賬號和密碼: ");

scanf_s("%s%s", name, 10, pass, 10);

check2(name, pass);

printf("請輸入賬號和密碼: ");

scanf_s("%s%s", name, 10, pass, 10);

if(check3(name,pass)==1)

printf("賬號密碼正確! ");

if(check3(name,pass)==2)

printf("賬號或密碼錯誤! ");


system("pause");

return 0;

}

㈤ c語言 商品銷售系統登入界面該怎麼寫

登錄包括檢查數據文件,檢測輸入格式,檢查數據重復性,驗證用戶名密碼。

根據讀取寫入追加數據的不同要求,fopen選項不同參數,比如"r","w","a"。注意每次用完後用fclose函數關閉數據流。

下面是演示代碼:(文件不存在自動創建,登錄失敗提示注冊,輸入驗證,你自己寫,比如:用戶名包含幾字母數字等)。

#include <stdio.h>

#include <string.h>

#define UFPATH "C:\user.data" //文件路徑

#define SMAX 20

typedef struct USER

{

char uName[SMAX];

char pwd[SMAX];

}UR;

UR *logon(char *uName,char *pwd);

int main()

{

UR *ur=NULL;

char uName[SMAX],pwd[SMAX];

printf("請輸入用戶名及密碼: ");

scanf("%s",uName);

scanf("%s",pwd);

if((ur=logon(uName,pwd))==NULL)

printf("登陸失敗");

else

printf("歡迎登錄!%s ",ur->uName);

return 0;

}

UR *logon(char *uName,char *pwd)

{

int isExcept=1;//標識變數,1:該用戶不存在。0:用戶名存在

FILE *fp=NULL;

static UR ur;

char c[2];

if((fp=fopen(UFPATH,"r"))==NULL)

{

printf("該路徑未發現記錄文件,新建文件! ");

if((fp=fopen(UFPATH,"wt"))==NULL)

{

printf("異常!新建文件失敗! ");

return NULL;

}

isExcept=1;

}

else

{

while(fscanf(fp,"%s%s",ur.uName,ur.pwd)!=-1)

{

if(strcmp(ur.uName,uName)==0 && strcmp(ur.pwd,pwd)==0)

{

printf("身份驗證通過! ");

fclose(fp);

return &ur;

}

}

printf("用戶密碼不正確,或用戶不存在! ");

fclose(fp);

isExcept=1;

}

if(isExcept==1)

{

printf("是否注冊用戶?(Y/N) ");

scanf("%s",c);

if(c[0]=='N')

return NULL;

if(c[0]=='Y')

{

while(isExcept)

{

printf("請輸入要注冊的用戶名及密碼: ");

scanf("%s",uName);

scanf("%s",pwd);//輸入驗證在這里添加!!!!!!!!!

//------------驗證新建的用戶名是否重名-------

if((fp=fopen(UFPATH,"r"))==NULL)

{

printf("異常!,文件打開失敗! ");

return NULL;

}

isExcept=0;

while(fscanf(fp,"%s%s",ur.uName,ur.pwd)!=-1)

{

if(strcmp(ur.uName,uName)==0)

{

printf("用戶名已存在,請重新輸入! ");

fclose(fp);

isExcept=1;

break;

}

}

fclose(fp);

//-------------------------------------------------------

}


if((fp=fopen(UFPATH,"a"))==NULL)

{

printf("異常!,文件打開失敗! ");

return NULL;

}

fprintf(fp,"%s %s%s",uName,pwd," ");

printf("用戶注冊成功! ");

strcpy(ur.uName,uName);

strcpy(ur.pwd,pwd);

}

}

fclose(fp);

return &ur;

}

//ps:代碼是按照你問題寫成一個登錄函數,但在一個項目中,對文件的讀寫改,應寫成獨立函數調用。其它函數調用這些函數。

㈥ 用C語言編寫一個學生管理系統。

學生信息管理系統

#include<stdio.h>

#inelude<stdlib.h>

#include<stnng.h

#define BUFLEN 100

#define LEN 15

#define N 100

#strucet record

char codc[LEN+I J;

char name[LEN-1];

int age:

char sex 13l:

char timc[1.KN-I J;

char add[301;

char tcl [l.EN+1 J:

char mail[30]:

}stu[N]:

int k=1.n,m.

void readfilcO;

void seekO;

void modify(;

void insert();

void del();

void display(;

void save();

void menu(;

int main(

While(k)

menu();

system("pause");

一℃himl 0:

}

void help()

{

printf(" nO.歡迎使用系統幫助, );

printf(" 1.進入系統後,先制新學生信息,再查詢: 』);

printf(" 2.按照菜單提示鍵入數字代號

printf(" 3. 增加學生信息後,切記保存按;.n」

printf(" 4. 謝謝您的仗用! ");

}

void n:adlilcO

r

r

char *p-"studcnt.txt'

FILE *fp,

hit i-0;

if ((fp=fopen("studcnt.txt","r" ))`=NULL)

{

printf("Open file %s error' Strike any key to exit! P);

system("pause");

exit(0);

}

while(fscanf(fp,"%s 0os0od0,os 0os %s %s 0os",stu[i].code,stu[i1.name,&stu(i1.age,

stu[i].sex,stuLiJ.time,stuLiJ.add,stu[iJ.tel.stu [iJ.mail)"==8)

{

i++;

i-i;

}

char codc[LEN+1 J;

char name[LEN-1 ];

nit age;

char sex [3I;

char timc[LEN-I J;

char add[30];

char tcl[LEN+I I;

char mail[30J;

)stu[N];

int k=1.n,m;

void readfilcO;

void seek();

void modify();

void insert();

void delO;

void display();

void save();

void menu();

int main()

{

while(k)

menu();

systcm("pause");

return 0:

}

void help()

{

printf(" nO.歡迎仗用系統幫助, ");

printf(" }n1.進入系統後,先刷新學生信息,再查詢: );

printf("in2.按照菜單提示鍵入數字代號加 );

printf("1n,. t}加學生信息後,切記保存按鈕 」

printf("'nd. i$:41您的使用 );

}

void readfile()

{

char *p-"studcnLtxt";

FILE*fp

int i=0;

if ((fp=fopcn("student. tx t","r'' )卜=NULL)

{

printf("Open file %s error' Strike any key to exit!".p);

systcm("pause");

exit(0);

}

i++;

i=i;

}

printf("請選擇菜單編號:』』);

scanf("%d",&num);

switch(num)

{

case 0:help();break;

cast 1:readflic();break;

case 2:seek();break;

case 3:modify();break;

case 4:insert();break;

case 5:del();break:

case 6:display();break;

case 7:savc();break;

case 8:k=0,break:

defaalt:prinf(」請在一8之間選擇 "):

}

}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

㈦ c語言設計用戶登錄系統,在登錄界面中,如果第一次密碼錯誤,第二次明明輸入密碼正確為什麼還是顯示錯誤

請把原碼全部貼出來,這個截圖太模糊。
我從模糊的圖片中,看到類似fread的字樣。那麼你的賬戶密碼信息是從一個文件中讀取出來。
那麼:
一、檢查你文件中的原始數據是否有寫錯。
二、用於存儲的變數空間是否夠存儲全部讀取的數據。
三、對一個文件多次讀寫後,文件指針不在初始位置,確認是否需要fseek設置文件指針初始位置。
四、檢查fopen是否執行成功。比如:多次fopen同一個文件,但前一次沒有用fclose關閉文件流。

熱點內容
超低溫疫苗存儲冰櫃生產廠家 發布:2024-11-25 22:32:58 瀏覽:537
x86linux 發布:2024-11-25 22:09:24 瀏覽:450
qq群怎麼設置上傳 發布:2024-11-25 22:08:37 瀏覽:16
加密戶籍 發布:2024-11-25 22:08:32 瀏覽:214
newman演算法 發布:2024-11-25 21:34:55 瀏覽:201
a演算法概念 發布:2024-11-25 21:24:16 瀏覽:588
jquery源碼書籍 發布:2024-11-25 21:19:50 瀏覽:804
銀行卡輸入密碼超限怎麼辦 發布:2024-11-25 21:09:07 瀏覽:958
編譯指令多發 發布:2024-11-25 20:58:17 瀏覽:751
java上傳文件到伺服器 發布:2024-11-25 20:52:47 瀏覽:741