隐私信息管理系统

隐私信息管理系统

1. 需求分析(描述问题:简述课题要解决的问题是什么,有什么要求和限制条件)

需要一个系统存储用户信息,并对用户的密码进行保密,该系统能够满足用户的查询、插入、删除、修改等操作。。

1.1 问题提出(详细叙述本人所要实现的题目中的问题)

用所设计的系统存储用户信息,并对用户的密码进行加密处理,该系统能够满足用户的查询、插入、删除、修改等操作

1.2 本系统涉及的知识点
  • for循环
  • switch分支
  • 结构数组
  • 函数
  • 结构体
  • 指针
  • 文件
1.3 功能要求(叙述本人所要实现的题目功能)
  • 1) 建立用户信息,每个用户的信息包括:编号、账号位置、账号描述 、账号名、密码
  • 2) 插入:插入一个用户和该用户的相关信息;
  • 3) 查询:根据编号或姓名查询一个用户的相关信息;
  • 4) 删除:删除一个用户的所有信息
  • 5)修改:修改一个用户的相关信息

2 总体设计(进行功能设计与模块划分)

2.1 功能设计(规划本系统完成的功能),例如:

本系统需要实现的功能:

1)用户操作权限:只有输入正确密码后才能进行操作
2)利用switch语句设计“主菜单”:

主菜单
请输入选项编号(1~8)
1—— 加入账号信息
2—— 修改账号信息
3—— 删除账号信息
4—— 输出账号的信息
5—— 通过名字寻找账号信息
6—— 通过编号寻找账号信息
7—— 查询已录入系统的人数
8—— 退出

a)	选择1后, 根据系统提示输入用户信息,将用户插入到系统中
b)	选择2后, 根据提示修改用户的信息
c)	选择3后, 删除某一个用户的信息
d)	选择4后, 输出系统中所有账号的信息
e)	选择5后, 通过输入名字寻找账号信息
f)	选择6后, 通输入编号寻找账号信息
g)	选择7后, 输出系统中用户的数量
h)	选择8后, 退出系统

2.2 模块图

在这里插入图片描述

3 详细设计(各模块的功能设计及算法设计)

3.1 模块功能说明

int password(); //检验密码是否正确
int Account_SearchByIndex(int id);//通过编号寻找账号信息
int Account_SearchByName(char* name);//通过名字寻找账号信息
void Account_Find_Bynum();//通过编号寻找账号信息并输出
void Account_Find_Byname();//通过姓名寻找账号信息并输出
void Account_DisplaySingle_Byindex(int index); //输出对应编号的信息
void Account_DisplaySingle_ByName(char* name); //输出对应姓名的信息
void Account_Display_All();//输出账号的信息
void Account_nums();
void Account_Insert();//加入账号信息
void Account_Modify();//修改账号信息
void Account_Delete();//删除账号信息
void Account_input_file();// 读入文件

3.1.1 密码模块
1) 函数原型:int password();
2) 功 能:检验用户输入密码是否正确,正确才能进入系统
3) 参数说明:
a) string input :整型形参变量,接收用户输入的密码。
b) string password:已经设置好的密码。
4) 说明:将用户输入的密码宇系统预设的密码相匹配,成功后才能进入系统
3.1.2 查找模块
1) 函数原型:
void Account_Find_Bynum();
void Account_Find_Byname();
2) 功 能:通过编号寻找账号和姓名信息并输出
3.1.3 输出模块
1) 函数原型:
void Account_DisplaySingle_Byindex(int index); 
void Account_DisplaySingle_ByName(char* name);
void Account_Display_All();
2) 功 能:输出对应姓名或编号的信息
3.1.4 文件模块
1) 函数原型:
void Account_input_file();
void Account_output_file(); 
2) 功 能:读入读出文件
3.2 部分模块的算法流程图

(对部分重要模块,画出其流程图或N-S图。)
在这里插入图片描述

4. 用户手册

使用简介:

首先你需要通过合法途径获得本系统的密码才能进行相关操作,进入系统后,根据系统提示进项想关用户信息的操作;你输入一个编号,进行对应的操作,具体操作过程在操作时系统有提示,每项操作完成后根据系统提示选择是否继续进行操作。

a)	选择1后, 根据系统提示输入用户信息,将用户插入到系统中
c)	选择2后, 根据提示修改用户的信息
c)	选择3后, 删除某一个用户的信息
d)	选择4后, 输出系统中所有账号的信息
e)	选择5后, 通过输入名字寻找账号信息
f)	选择6后, 通输入编号寻找账号信息
g)	选择7后, 输出系统中用户的数量
h)	选择8后, 退出系统

5.结束语:

系统看起来很大很难,但其实就是一些函数的拼凑,通过多个函数实现不同的功能。后面会尝试使用python+gui的弹窗效果会比较好

6. 附录

系统源代码:
#include <bits/stdc++.h>

using namespace std;

const int nums = 1000;//学生个数

struct s
{
    int num = 0;
    string Account_location;
    string Account_description;
    char* Account_name;
    string Account_password;
} STU[nums];



int password(); //检验密码是否正确
int Account_SearchByIndex(int id);//通过编号寻找账号信息
int Account_SearchByName(char* name);//通过名字寻找账号信息
void Account_Find_Bynum();//通过编号寻找账号信息并输出
void Account_Find_Byname();//通过姓名寻找账号信息并输出
void Account_DisplaySingle_Byindex(int index); //输出对应编号的信息
void Account_DisplaySingle_ByName(char* name); //输出对应姓名的信息
void Account_Display_All();//输出账号的信息
void Account_nums();
void Account_Insert();//加入账号信息
void Account_Modify();//修改账号信息
void Account_Delete();//删除账号信息
void Account_input_file();// 读入文件
void Account_output_file();// 读出文件

int Account_SearchByIndex(int id)
{
    int i;
    for(i = 0; i < nums; i++)
        if(id == STU[i].num)
            return i;
    return -1;
}

int Account_SearchByName(char* name)
{
    int i;
    for(i = 0; i < nums; i++)
        if(!strstr(name, STU[i].Account_name))
            return i;
    return -1;
}

void Account_DisplaySingle_Byindex(int index)
{
    index = Account_SearchByIndex(index);
    if(index < 0)
    {
        cout <<"编号为 " << index <<" 的同学的信息不在系统中"<<endl;
        return;
    }
    cout <<"编号为 " << index <<" 的同学的信息为:"<<endl;
    cout <<"编号"<<"\t"<<"\t"<<"账号位置"<<"\t"<<"\t"<<"账号描述"<<"\t"<<"\t"<<"账号名"<<"\t"<<"密码"<<endl;
    cout <<STU[index].num<<"\t"<<"\t"<<STU[index].Account_location<<"\t"<<"\t"<<STU[index].Account_description<<"\t"<<"\t"<<STU[index].Account_name<<"\t"<<STU[index].Account_password<<endl;
    cout<<endl;
}
void Account_DisplaySingle_ByName(char* name)
{
    int index = Account_SearchByName(name);
    if(index < 0)
    {
        cout <<"账号名为 " << name <<" 的同学的信息不在系统中"<<endl;
        return;
    }
    cout <<"账号名为 " << name <<" 的同学的信息为:"<<endl;
    cout <<"编号"<<"\t"<<"\t"<<"账号位置"<<"\t"<<"\t"<<"账号描述"<<"\t"<<"\t"<<"账号名"<<"\t"<<"密码"<<endl;
    cout <<STU[index].num<<"\t"<<"\t"<<STU[index].Account_location<<"\t"<<"\t"<<STU[index].Account_description<<"\t"<<"\t"<<STU[index].Account_name<<"\t"<<STU[index].Account_password<<endl;
    cout<<endl;
}

void Account_Find_Bynum()
{
    int id;
    cout << "请输入你要查找的编号:";
    cin >> id;
    Account_DisplaySingle_Byindex(id);
    cout<<endl;
}
void Account_Find_Byname()
{
    char* name;
    cout << "请输入你要查找的账户名:";
    cin>>name;
    Account_DisplaySingle_ByName(name);
    cout<<endl;
}
void Account_Display_All()
{
    cout <<"编号"<<"\t"<<"\t"<<"账号位置"<<"\t"<<"\t"<<"账号描述"<<"\t"<<"\t"<<"账号名"<<"\t"<<"密码"<<endl;
    for(int index = 0; index <= nums+1; index++)
    {
        cout <<STU[index].num<<"\t"<<"\t"<<STU[index].Account_location<<"\t"<<"\t"<<STU[index].Account_description<<"\t"<<"\t"<<STU[index].Account_name<<"\t"<<STU[index].Account_password<<endl;
    }
}
void Account_nums()
{
    int cnt = 0;
    for(int index = 0; index <= nums+1; index++)
        if(STU[index].num != 0)
            cnt++;

    cout << " 当前系统内的人数为 : "<< cnt <<" 人"<<endl;
}
void Account_Insert()
{
    cout<<"******** 你将要在列表中插入一个人的信息 ********"<<endl;
    while(true)
    {
        cout<<"请输入编号(编号不能为0):";
        cin >> STU[nums].num;
        getchar();
        cout<<"请输入账号位置:";
        cin >> STU[nums].Account_location;
        getchar();
        cout<<"请输入账号描述:";
        cin >> STU[nums].Account_description;
        getchar();
        cout<<"请输入账号名:";
        char* s;
        cin >>s ;
        STU[nums].Account_name = s;
        // getchar();
        cout<<"请输入密码:";
        cin >> STU[nums].Account_password;
        getchar();

        cout<<"********你插入的人的信息为********"<<endl;
        int i;
        for( i = 0 ; i < sizeof(STU[nums].Account_password); i++)
            STU[nums].Account_password[i] += 48;
        STU[nums].Account_password[i] = '\0';

        Account_DisplaySingle_Byindex(nums);
        cout<<endl;
        nums++;
        cout<<"是否继续插入(y/n):";
        if(getchar() == 'n')
            break;

    }
}//加入账号信息
void Account_Modify()
{
    if(nums == 0)
    {
        cout << "对不起,当前没有可修改的用户"<<endl;
        return;
    }
    while(true)
    {
        cout<<"******** 你将要修改一个用户的信息 ********"<<endl;
        cout<<"请输入你要修改的用户的编号:";
        int n;
        cin>>n;
        int index = Account_SearchByIndex(n);
        if(index < 0)
            cout<<"你要修改的用户不存在"<<endl;
        else
        {
            cout<<"******** 要修改的用户本来的信息是:********"<<endl;
            Account_DisplaySingle_Byindex(n);
            cout<<endl;

            cout<<"******** 请输入该用户新的信息 ********"<<endl;

            cout<<"请输入账号位置:";
            cin >> STU[index].Account_location;
            getchar();
            cout<<"请输入账号描述:";
            cin >> STU[index].Account_description;
            getchar();
            cout<<"请输入账号名:";
            cin >> STU[index].Account_name;
            getchar();
            cout<<"请输入密码:";
            cin >> STU[index].Account_password;
            getchar();
            int i;
            for( i = 0 ; i < sizeof(STU[nums].Account_password); i++)
                STU[nums].Account_password[i] += 48;
            STU[nums].Account_password[i] = '\0';

            cout<<"******** 修改后该用户的信息为 ********"<<endl;
            Account_DisplaySingle_Byindex(index);
            cout<<endl;
            cout<<"是否继续(y/n)";
            if(getchar()=='n')
                break;
        }
    }
}//修改账号信息
void Account_Delete()
{
    if(nums == 0)
    {
        cout << "对不起,当前没有可删除的用户"<<endl;
        return;
    }
    cout<<"******** 你将要删除一个用户的信息 ********"<<endl;
    while(true)
    {
        cout<<"请输入你要删除的用户的编号:";
        int n;
        cin>>n;
        int index = Account_SearchByIndex(n);
        if(index < 0)
            cout<<"你要删除的用户不存在"<<endl;
        else
        {
            cout<<"******** 要删除的用户本来的信息是:********"<<endl;
            Account_DisplaySingle_Byindex(n);
            cout<<endl;
            cout<<"是否真的要删除(y/n)";
            if(getchar()=='y')
            {
                for(int i = index; i < nums-1; i++)
                    STU[i] = STU[i+1];
                nums--;
            }
        }
        cout<<"是否继续(y/n)";
        if(getchar()=='n')
            break;
    }
}//删除账号信息

void Account_input_file()
{
    FILE *fp;
    int i;
    if(!(fp = fopen("StuData.txt","wb")))
    {
        cout<< "对不起,文件打开失败 /(ㄒoㄒ)/~~"<<endl;
        return;
    }
    if(fwrite(&nums, sizeof(int),1,fp) != 1)
        cout<<"无法写入文件"<<endl;
    else
    {
        for(i = 0; i < nums; i++)
        {
            if( fwrite(&STU[i], sizeof(struct s),1,fp)!=1)
                cout << "不能写入文件"<<endl;
        }
    }
    fclose(fp);
}
// 读入文件
void Account_output_file()
{
    FILE *fp;
    if(!(fp = fopen("StuData.txt","wb")))
    {
        cout<< "对不起,文件打开失败 /(ㄒoㄒ)/~~"<<endl;
        return;
    }
    int i;
    if(fread(&nums,sizeof(int),1,fp)!=1)
        nums = 1;
    else
    {
        for(i = 0; i < nums; i++)
            fread(&STU[i],sizeof(struct s),1,fp);
    }
    nums = 0;
    fclose(fp);

}// 读出文件

void Menue()
{
    cout<< "************* 欢迎进入隐私信息管理系统,你可以进行如下操作 *************"<<endl;
    cout<<endl;
    cout<< "1. 加入账号信息 "<<endl;
    cout<< "2. 修改账号信息 "<<endl;
    cout<< "3. 删除账号信息 "<<endl;
    cout<< "4. 输出账号的信息 "<<endl;
    cout<< "5. 通过名字寻找账号信息 "<<endl;
    cout<< "6. 通过编号寻找账号信息"<<endl;
    cout<< "7. 查询已录入系统的人数"<<endl;
    cout<< "8. 退出 "<<endl;
    cout<<endl;
}
int password()
{
    cout<<"******** 请输入操作密码********"<<endl;

    string input,password = "111111";
    int i = 3;
    while(i--)
    {
        cin >> input ;
        if(password == input)
        {
            cout << "口令正确!" << endl;
            return true;
        }
        else
            cout << "口令错误,你还有 " << i <<" 次机会" <<endl;
    }
    return false;
}

int main()
{
    if(!password())
        return 0;
    Menue(); //菜单列表

    Account_output_file();
    while(true)
    {
    cout<<"请输入编号 1~8 实行相关操作"<<endl;

        int n;
        cin>>n;
        switch(n)
        {
        case 1:
            Account_Insert();
            break;
        case 2:
            Account_Modify();
            break;
        case 3:
            Account_Delete();
            break;
        case 4:
            Account_Display_All();
            break;
        case 5:
            Account_Find_Byname();
            break;
        case 6:
            Account_Find_Bynum();
            break;
        case 7:
            Account_nums();
            break;
        case 8:
            return 0;
        }
        cout<<endl;
    }
    Account_input_file();
    return 0;
}

  • 14
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值