C语言 登录系统代码.doc
include #include typedef struct char name100;char pw100;uifo;#define USER_FILE data.bin#define DEFAULT_NAME guest#define DEFAULT_PW 123void write_data(uifo *info)unsigned char len;FILE *fp;fp = fopen(USER_FILE, wb);if(fp = NULL) printf(can not open file n);return;len = strlen(info-name);fwrite(&len, 1, 1, fp);fwrite(info-name, 1, len, fp);len = strlen(info-pw);fwrite(&len, 1, 1, fp);fwrite(info-pw, 1, len, fp);fclose(fp);void read_data(uifo *info)FILE *fp;unsigned char len;fp = fopen(USER_FILE, rb);if(fp = NULL)strcpy(info-name, DEFAULT_NAME);strcpy(info-pw, DEFAULT_PW);write_data(info);elsememset(info, 0, sizeof *info);fread(&len, 1, 1, fp);fread(info-name, 1, len, fp);fread(&len, 1, 1, fp);fread(info-pw, 1, len, fp);fclose(fp);int main()uifo info;char pw100=0, pw_confirm100=0;int wt = 0;memset(&info, 0, sizeof info);read_data(&info);printf(welcome! please loginn);while(1)printf(please input your user namen);scanf(%s, pw);if(strcmp(pw, info.name) != 0) printf(no such user namen);continue;printf(please input your passwordn);scanf(%s, pw);if(strcmp(pw, info.pw) != 0) printf(password errorn);else break;wt +;if(wt = 3)printf(3 times password error, exit!n);return -1;while(1)int i;printf(input 1 to change your passwordninput 0 to exitn);scanf(%d, &i);if(i = 0) break;if(i = 1)while(1)printf(please input your original passwordn);scanf(%s, pw);if(strcmp(pw, info.pw) != 0)printf(original password is not correctn);continue;printf(please input your new passwordn);scanf(%s, pw);printf(please confirm your new passwordn);scanf(%s, pw_confirm);if(strcmp(pw, pw_confirm) != 0) int j;printf(the new passwords are not same in two times input!n);while(1)printf(input 1 to change password againninput 2 to back to last stepninput 0 to exitn);scanf(%d, &j);if(j = 0) return -2;if(j = 1 | j = 2) break;printf(unknown inputn);if(j = 2) break;continue;strcpy(info.pw, pw);write_data(&info);break;else printf(unknown input, should be 0/1n);printf(Bye!n);return 0