隐私账号管理系统(c语言)

  • Post author:
  • Post category:其他




还在为记不住账号而苦恼吗?



还在为忘记密码而绞尽脑汁吗?



只要998!!!账号管理系统带回家

下面进入正题:


隐私账号管理系统:



1需求分析:

对个人的账号信息进行记录和保护,已达到随时记录随时查询的目的。


1.1问题提出:

计划写一个隐私信息管理系统,主要用来管理隐私信息。


1.2本系统设计的知识点

: 函数、结构体、文件、循环、分支、数组等。


1.3功能要求:


1)建立每个账号的编号,账号位置,账号描述,账号名以及密码

2)修改账号信息

3)删除账号信息

4)查询账号信息,分为按部分账号名查找和按编号查找

5)输出全部账号信息

6)退出程序


2总体设计



2.1功能设计:


1)程序密码验证函数:在程序开始时会出现如下程序,为防止遗忘初始密码,默认密码内置在代码中,为110120,可自行修改。

在这里插入图片描述

2)利用switch语句设计主菜单:

------ 隐私信息管理系统------
1. 账号信息录入
2. 账号信息修改
3. 删除账号信息
4. 查询账号信息
5. 输出全部账号信息
6. 退出
请选择(1-6):

3)设计分支:按下4后会出现

------ 查询菜单 ------
请输入选项编号(121----按编号查询
2----按部分账号名查询

可按两种方式查询账号具体信息

4)各个函数作用

int Verification();//程序密码验证函数 
int Mess_SearchByIndex(int id);//通过编号寻找账号信息 
void Mess_Find();//通过编号寻找账号信息并输出 
void Mess_DisplaySingle(int index); //输出对应编号的信息 
void Mess_Insert();//加入账号信息 
void Mess_Modify();//修改账号信息 
void Mess_Delete();//删除账号信息 
void Mess_Select();//通过部分账号信息查询账号信息 
void Mess_Display();//输出全部账号的信息 
void IO_ReadInfo();//读出文件 
void IO_WriteInfo();//读入文件 


3详细设计:


3.1模块功能说明:

主要分为建立、修改、删除、查询、输出四个大模块


3.1.1:建立模块:


函数原型:void Mess_Insert()。

功能:对计划建立的账号输入编号、账号位置、账号描述、账号名称、密码,且对密码进行加密处理。

输入:根据对应提示输入即可


3.1.2:修改模块:


函数原型:void Mess_Modify()。

功能:块修改对应编号的账号信息

输入:输入想要修改信息的账号编号


3.1.2:查询模块:


函数原型1:void Mess_Select();

功能:对输入的部分账号信息进行查找

函数原型2:void Mess_Find();

功能:对输入的账号编号进行查找

输入:选择二者其一对应输入即可


3.1.2:输出模块:


函数原型:void Mess_Display()。

功能:对已记录的所有账号的详细信息输出

输入:无

5测试:

输入程序密码,进入隐私信息管理系统

在这里插入图片描述

输入两个账号信息:

在这里插入图片描述

全部输出账号信息:

在这里插入图片描述

以及查询:

在这里插入图片描述

退出程序:

在这里插入图片描述

下次再次运行该程序,以前存的账号信息依然存在:

在这里插入图片描述



重要说明:

本代码需要在c盘下建立一个message.txt文档,用于存储数据,所有的账号信息都以二进制形式存储在这里,也不用担心密码泄露,因为程序里面设置了一个简单的密码加密程序,存储的密码是加密过的,也可自行在代码里面修改加密方式,这里是简单的把密码的ASCII码+48存储的,读出的时候也加上了48



使用方法

1)建好一个txt文档保存数据

2)放一个该代码的运行程序在桌面上,源码自行保存

3)每次储存好数据记得按6正常退出,不可以直接关闭运行窗口

4)保护好txt文档,勿对其中内容进行修改



源码附录:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Mess
{
	int No;
	char place[50];
	char describe[50];
	char name[50];
	char code[50];
}mess[1000]; 
int Verification();//程序密码验证函数 
int Mess_SearchByIndex(int id);//通过编号寻找账号信息 
void Mess_Find();//通过编号寻找账号信息并输出 
void Mess_DisplaySingle(int index); //输出对应编号的信息 
void Mess_Insert();//加入账号信息 
void Mess_Modify();//修改账号信息 
void Mess_Delete();//删除账号信息 
void Mess_Select();//通过部分账号信息查询账号信息 
void Mess_Display();//输出全部账号的信息 
void IO_ReadInfo();//读出文件 
void IO_WriteInfo();//读入文件 
 
int num=0;

int Verification()
{
	int i;
	char inkey[20];
	printf("------程序密码验证------\n请输入密码:");
	for(i=1;i<=3;i++)
	{
		scanf("%s",inkey);
		if(strcmp(inkey,"110120")==0)
		break;
		else 
		printf("\n密码错误,还有%d次机会\n",3-i);
	}
	if(i==4)
	{
		printf("3次输入全错,退出程序\n");
		return 0;
	}
	else
	{
		printf("输入正确,进入隐私信息管理系统\n");
		return 1;
	}
}
 
int Mess_SearchByIndex(int id)
{
     int i;
     for (i=0;i<num;i++)
     {
         if (mess[i].No==id)
         {
              return i;
         }
     }
     return -1;
}
void Mess_Find()
{
	int id;
	while(1)
	{
	printf("输入你想查找账号的编号:"); 
	scanf("%d",&id);
	getchar();
	Mess_DisplaySingle(Mess_SearchByIndex(id));
	printf("是否继续查询?(y/n)");
   	if (getchar()=='n')
    {     
		 break;
    }
    
	}
} 
 
int Mess_SearchByName(char name[])
{
     int i;
     for (i=0;i<num;i++)
     {
         if (strstr(mess[i].name,name))
         {
            return i;
         }
     }
     return -1;
}
 
void Mess_DisplaySingle(int index)
{
 	char str[20];
	for(int i=0;i<strlen(mess[index].code);i++)
	{
		str[i]=mess[index].code[i]-48;
	}
	str[strlen(mess[index].code)]='\0';
     printf("%-5s%-25s%-20s%-18s%-10s\n","编号","账号位置","账号描述","账号名","密码");
 
     printf("-------------------------------------------------------------------------\n");
 
     printf("%-5d%-25s%-20s%-18s%-10s\n",mess[index].No,mess[index].place,
              mess[index].describe,mess[index].name,str);
}
 
void Mess_Insert()
{
     while(1)
     {
         printf("请输入编号:");
         scanf("%d",&mess[num].No);
         getchar();
 
         printf("请输入账号位置:");
         scanf("%s",&mess[num].place);
         getchar();
 
         printf("请输入账号描述:");
         scanf("%s",&mess[num].describe);
         getchar();
 
         printf("请输入账号名:");
         scanf("%s",&mess[num].name);
         getchar();
         
 	     printf("请输入密码:");
 		 char str[20];
         scanf("%s",&str);
		 getchar();
 		 int i;
		 for(i=0;i<strlen(str);i++)
		 mess[num].code[i]=str[i]+48;
		 mess[num].code[i]='\0';
		
         Mess_DisplaySingle(num);
         num++;
 
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
             break;
         }
     }
}
 
void Mess_Modify()
{
     while(1)
     {
         int id;
         int index;
 
         printf("请输入要修改的信息的编号:");
         scanf("%d",&id);
         getchar();
 
         index=Mess_SearchByIndex(id);
 
         if (index==-1)
         {
              printf("账号不存在!\n");
         }
 
         else
         {
              printf("你要修改的隐私信息为:\n");
              Mess_DisplaySingle(index);
              printf("-- 请输入新值--\n");
 
              printf("请输入编号:");
              scanf("%d",&mess[index].No);
              getchar();
 
              printf("请输入账号位置:");
              scanf("%s",&mess[index].place);
              getchar();
 
              printf("请输入账号名:");
              scanf("%s",&mess[index].name);
              getchar();
 
              printf("请输入密码:");
 			  char str[20];
        	  scanf("%s",&str);
			  getchar();
 			  int i;
			  for(i=0;i<strlen(str);i++)
			  mess[index].code[i]=str[i]+48;
			  mess[num].code[i]='\0';

         }
 
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
              break;
         }
     }
}
 
void Mess_Delete()
{
     int i;
     while(1)
     {
         int id;
         int index;
 
         printf("请输入要删除信息的编号:");
         scanf("%d",&id);
         getchar();
 
         index=Mess_SearchByIndex(id);
 
         if (index==-1)
         {
              printf("账号不存在!\n");
         }
         else
         {
              printf("你要删除的账号信息为:\n");
              Mess_DisplaySingle(index);
              printf("是否真的要删除?(y/n)");
 
              if (getchar()=='y')
              {
                   for (i=index;i<num-1;i++)
                   {
                       mess[i]=mess[i+1];//把后边的对象都向前移动
                   }
                   num--;
              }
              getchar();
         }
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
              break;
         }
 
     }
 
}
 
void Mess_Select()
{
     while(1)
     {
 
         char name[20];
         int index;
         
         printf("请输入要查询的账号的部分信息:");
         scanf("%s",&name);
         getchar();
 
         index=Mess_SearchByName(name);
         if (index==-1)
         {
              printf("账号不存在!\n");
         }
         else
         {
              printf("你要查询的账号信息为:\n");
             Mess_DisplaySingle(index);
         }
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
              break;
         }
     }
}
 
void Mess_Display()
{
    int i;
    while(1)
    {	
    	printf("%-5s%-25s%-20s%-18s%-10s\n","编号","账号位置","账号描述","账号名","密码");
        printf("-------------------------------------------------------------------------\n");           
        for(int j=0;j<num;j++)
	    {
			         
 		char str[20];
		for(int i=0;i<strlen(mess[j].code);i++)
		{
			str[i]=mess[j].code[i]-48;
		}
     	str[strlen(mess[j].code)]='\0';
     	printf("%-5d%-25s%-20s%-18s%-10s\n",mess[j].No,mess[j].place,
              mess[j].describe,mess[j].name,str);
        }
        break;
    }
}
 
void IO_ReadInfo()
 
{
 
     FILE *fp;
     int i;
 
     if ((fp=fopen("c:\\message.txt","rb"))==NULL)//学过文件的这里可以自行修改路径
     {
         printf("不能打开文件!\n");
         return;
     }
 
     if (fread(&num,sizeof(int),1,fp)!=1)
     {
         num=1;
     }
     else
     {
         for(i=0;i<num;i++)
         {
              fread(&mess[i],sizeof(struct Mess),1,fp);
         }
     }
		num=0;
     fclose(fp);
}
 
void IO_WriteInfo()
{
     FILE *fp;
     int i;
     if ((fp=fopen("c:\\message.txt","wb"))==NULL)//学过文件的这里可以自行修改路径
     {
         printf("不能打开文件!\n");
         return;
     }
     if (fwrite(&num,sizeof(int),1,fp)!=1)
     {
       printf("写入文件错误!\n");
     }
     for (i=0;i<num;i++)
     {
         if (fwrite(&mess[i],sizeof(struct Mess),1,fp)!=1)
         {
              printf("写入文件错误!\n");
         }
     }    
     fclose(fp);
}
 
int main()
{
 	if(!Verification())
 	return 0;
     int choice;
 
     IO_ReadInfo();
 
     while(1)
 
     {
 
         /*主菜单*/
 
         printf("\n------ 隐私信息管理系统------\n");
 
         printf("1. 账号信息录入\n");
 
         printf("2. 账号信息修改\n");
 
         printf("3. 删除账号信息\n");
 
         printf("4. 查询账号信息\n");
         
         printf("5. 输出全部账号信息\n");
 
         printf("6. 退出\n");
 
         printf("请选择(1-6):");
 
         scanf("%d",&choice);
 
         getchar();
 
         switch(choice)
 
         {
 
         case 1:
 
              Mess_Insert();
 
              break;
 
         case 2:
 
              Mess_Modify();
 
              break;
 
         case 3:
 
              Mess_Delete();
 
              break;
 
         case 4:
 			  printf("------ 查询菜单 ------\n");
 			  printf("请输入选项编号(1~2)\n");
 			  printf("1----按编号查询\n");
 			  printf("2----按部分账号名查询\n");
 			  
 			  int k;
 			  scanf("%d",&k);
 			  
 			  getchar (); 
 			  
 			  switch(k)
 			  {
 				    case 1:Mess_Find();break;
 			  
             		case 2:Mess_Select();break;
 			  }
              break;
 
         case 5:
 
              Mess_Display();
 
              break;
 		 case 6:
 		 	
 		 	  return 0;
 		 	  
 		 	  break;
 
         }
 
         IO_WriteInfo();
 
     }
 	return 0;
}

在这里插入图片描述



版权声明:本文为JKR10000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。