<>还在为记不住账号而苦恼吗?
<>还在为忘记密码而绞尽脑汁吗?
<>只要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后会出现
------ 查询菜单 ------ 请输入选项编号(1~2) 1----按编号查询 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; }