写一个实现存储账号密码的程序并将其存在文件中,实现增删改查,最好有个代码…,感激不尽
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
以上是关于写一个实现存储账号密码的程序并将其存在文件中,实现增删改查,最好有个代码…,感激不尽的主要内容,如果未能解决你的问题,请参考以下文章
简单步骤,使用 Android studio 实现保存 QQ 账号密码,和简易 QQ 用户登录界面