写一个实现存储账号密码的程序并将其存在文件中,实现增删改查,最好有个代码…,感激不尽

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个实现存储账号密码的程序并将其存在文件中,实现增删改查,最好有个代码…,感激不尽相关的知识,希望对你有一定的参考价值。

参考技术A #include<stdio.h>
#include<stdlib.h>
#include<conio.h>

struct node

int value;
struct node* left;
struct node* right;
;
typedef struct node NODE;
typedef struct node* PNODE;
void new_node(PNODE* n,int value)

*n=(PNODE)malloc(sizeof(NODE));
if(*n!=NULL)

(*n)->value=value;
(*n)->left=NULL;
(*n)->right=NULL;



void free_node(PNODE* n)

if((*n)!=NULL)

free(*n);
*n=NULL;



void free_tree(PNODE* n)

if(*n==NULL)return;
if((*n)->left!=NULL)

free_tree(&((*n)->left));

if((*n)->right!=NULL)

free_tree(&((*n)->right));

free_node(n);


PNODE find_node(PNODE n,int value)

if(n==NULL)

return NULL;

else if(n->value==value)

return n;

else if(value <=n->value)

return find_node(n->left,value);

else

return find_node(n->right,value);



void insert_node(PNODE* n,int value)

if(*n==NULL)

new_node(n,value);

else if(value==(*n)->value)

return;

else if(value <(*n)->value)

insert_node(&((*n)->left),value);

else

insert_node(&((*n)->right),value);



int get_max_depth(PNODE n)

int left=0;
int right=0;
if(n==NULL)

return 0;

if(n->left!=NULL)

left=1+get_max_depth(n->left);

if(n->right!=NULL)

right=1+get_max_depth(n->right);

return(left>right?left:right);


int get_min_depth(PNODE n)

int left=0;
int right=0;
if(n==NULL)

return 0;

if(n->left!=NULL)

left=1+get_min_depth(n->left);

if(n->right!=NULL)

right=1+get_min_depth(n->right);

return (left <right?left:right);


int get_num_nodes(PNODE n)

int left=0;
int right=0;
if(n==NULL)

return 0;

if(n->left!=NULL)

left=get_num_nodes(n->left);

if(n->right!=NULL)

right=get_num_nodes(n->right);

return(left+1+right);


int get_min_value(PNODE n)

if(n==NULL) return 0;
if(n->left==NULL)

return n->value;

else

return get_min_value(n->left);



int get_max_value(PNODE n)

if(n==NULL)return 0;
if(n->right==NULL)

return n->value;

else

return get_max_value(n->right);



void deletenode(PNODE* n)

PNODE tmp=NULL;
if(n==NULL) return;
if((*n)->right==NULL)
tmp=*n;
*n=(*n)->left;
free_node(n);

else if((*n)->left==NULL)

tmp=*n;
*n=(*n)->right;
free_node(n);

else

for(tmp=(*n)->right;tmp->left!=NULL;tmp=tmp->left);
tmp->left=(*n)->left;
tmp=(*n);
*n=(*n)->right;
free_node(&tmp);



void delete_node(PNODE* n,int value)

PNODE node;
if(n==NULL) return;
node=find_node(*n,value);
if((*n)->value==value)

deletenode(n);

else if(value <(*n)->value)

delete_node(&((*n)->left),value);

else

delete_node(&((*n)->right),value);



void pre_order_traversal(PNODE n)

if(n!=NULL)

printf("%i",n->value);
pre_order_traversal(n->left);
pre_order_traversal(n->right);



void in_order_traversal(PNODE n)

if(n!=NULL)

in_order_traversal(n->left);
printf("%i",n->value);
in_order_traversal(n->right);



void post_order_traversal(PNODE n)

if(n!=NULL)

post_order_traversal(n->left);
post_order_traversal(n->right);
printf("%i",n->value);



void main()

char buf[50];
int option;
PNODE tree=NULL;
PNODE node=NULL;
while(1)

printf("-------------------\n");
printf("Options are:\n\n");
printf("0 Exit\n");
printf("1 Insert node\n");
printf("2 Delete node\n");
printf("3 Find node\n");
printf("4 Pre order traversal\n");
printf("5 In order traversal\n");
printf("6 Post order traversal\n");
printf("7 Max depth\n");
printf("8 Min depth\n");
printf("9 Max value\n");
printf("10 Min value\n");
printf("11 Node Count\n\n");
printf("-------------------\n");
printf("Select an option:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%i",&option);
printf("-------------------\n");
if(option <0 ||option>11)

fprintf(stderr,"Invalid option");
continue;

switch(option)

case 0:
exit(0);
case 1:
printf("Enter number to insert:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%i",&option);
printf("\n\n");
insert_node(&tree,option);
break;
case 2:
printf("Enter number to delete:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%i",&option);
printf("\n\n");
delete_node(&tree,option);
break;
case 3:
printf("Enter number to find:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%i",&option);
printf("\n\n");
node=find_node(tree,option);
if(node!=NULL)

printf("FOUND node\n\n");

else

printf("Couldn't find node\n\n");

break;
case 4:
printf("Pre order traversal:");
pre_order_traversal(tree);
printf("\n\n");
break;
case 5:
printf("In order traversal:");
in_order_traversal(tree);
printf("\n\n");
break;
case 6:
printf("Post order traversal:");
post_order_traversal(tree);
printf("\n\n");
break;
case 7:
printf("Max depth is %i\n\n",get_max_depth(tree));
break;
case 8:
printf("Min depth is %i\n\n",get_min_depth(tree));
break;
case 9:
printf("Max value is %i\n\n",get_max_value(tree));
break;
case 10:
printf("Min value is %i\n\n",get_min_value(tree));
break;
case 11:
printf("Node Count is %i\n\n",get_num_nodes(tree));
break;


printf("Press Anykey to End the Program!");
getch();
追问

这个是链表么

能不能用简单的c语言实现😭

本回答被提问者和网友采纳

小白成长记-----python实现注册的小程序


# 3、写一个注册的程序,输入username,密码,
# 密码确认,输入的账号和密码不能为空,两次输入密码必须一致,
# 用户名不能重复,错误次数四次 。注册成功提示成功
# 把注册账号密码信息的写到文件里头


user=[] #定义一个列表,存username
f= open(‘username.txt‘,‘a+‘) #打开文件
f.seek(0) #指向文件的最开头的位置
for line in f: #将f里面的全部遍历一遍,
username=line.split(‘,‘)[0] #取逗号前面的一串字符
user.append(username) #将取出来的username加入user列表

i=0
while (i<4):
username=input(‘用户名:‘).strip()
passwd=input(‘密码:‘).strip()
c_passwd=input(‘确认密码:‘).strip()
if username==‘‘ or passwd==‘‘ or c_passwd==‘‘:
i+=1
print(‘用户名或密码不能为空:‘)
continue
else:
if username in user:
print(‘已经被注册‘)
continue
elif passwd==c_passwd:
print(‘注册成功:%s‘ %username)
f.write(username+‘,‘+passwd+‘\\n‘)
f.close()
break
else:
print(‘两次密码不一致‘)
i+=1
else:
print(‘\\n 错误次数超过4次 Outing......‘)
f.close()


小白本次遇到的是问题在不知如何将变量username存入文件中
此处参考了小伙伴的博客:
http://www.cnblogs.com/snorth/p/6932953.html

















































以上是关于写一个实现存储账号密码的程序并将其存在文件中,实现增删改查,最好有个代码…,感激不尽的主要内容,如果未能解决你的问题,请参考以下文章

对于登录窗口记住密码的相关应用升级

小白成长记-----python实现注册的小程序

简单步骤,使用 Android studio 实现保存 QQ 账号密码,和简易 QQ 用户登录界面

系统登录模块用例的设计原理?

python如何实现读取excel中账号密码后自动登录网页并实现固定操作?

python-login