Thefuturewith 2022-06-20 10:12 采纳率: 50%
浏览 43
已结题

将通讯录功能设置为数据库维护,增加用户名和密码

问题遇到的现象和发生背景

将查询和排序改为动态链表
在主菜单界面中,将通讯录录入、删除、修改、添加功能合并为数据库维护功能,当选择此选项时,要求用户输入用户名和密码,如果设置数据库维护人员2人,则在程序中可相应设置2个用户名和密码,只有正确时,才进入下一级维护

问题相关代码,请勿粘贴截图

#include
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
typedef struct _TEL_INFO
{
int no;//编号
char name[20];//姓名
char tel_num[20];//电话号
char phone_num[20];//手机号
int code;//邮编
char add[20];//地址
char rela_ship[20];//关系
}TEL,*PTEL;

int menu()
{
int chioce;
system("cls");
printf("1:录入联系人\n");
printf("2:删除联系人\n");
printf("3:修改联系人\n");
printf("4:显示联系人\n");
printf("5:查询联系人\n");
printf("6:排序手机号\n");
printf("0:退出\n");
printf("请输入选择:");
scanf("%d",&chioce);
while(chioce<0||chioce>6)
{
printf("请重新选择:");
scanf("%d",&chioce);
}
return chioce;
}

void Print_TEL(PTEL TEL,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%10d",TEL[i].no);
printf("%10s",TEL[i].name);
printf("%20s",TEL[i].tel_num);
printf("%20s",TEL[i].phone_num);
printf("%10d",TEL[i].code);
printf("%20s",TEL[i].add);
printf("%20s\n",TEL[i].rela_ship);
}
}
int Delete_Tel(PTEL tel,int n)
{
int i,num,j;
char temp[20];
system("cls");
printf("请输入要删除的编号:");
scanf("%d",&num);

for(i=0;i<n;i++)
{
    if(tel[i].no==num)
    {
        break;
    }
}
if(i==n)
{
    printf("无该编号信息!\n");
    system("pause");
    return n;
}
Print_TEL(&tel[i],1);

printf("确认删除?(Y/N):");
scanf("%s",temp);
if(!strcmp(temp,"Y")||!strcmp(temp,"y"))
{
for(j=i;j<n;j++)
{
tel[j]=tel[j+1];
}
printf("删除成功!\n");
system("pause");
return n-1;
}
else
{
printf("已取消删除!\n");
system("pause");
return n;
}
}
int Add_Tel(PTEL tel,int n)
{
int i,flag=0;
system("cls");
printf("请输入联系人编号:");
scanf("%d",&tel[n].no);
for(i=0;i<n;i++)
{
if(tel[i].no==tel[n].no)
{
flag=1;
break;
}
}
if(flag)
{
printf("已存在该编号!\n");
system("pause");
return n;
}
printf("请输入联系人姓名:");
scanf("%s",tel[n].name);
printf("请输入联系人电话:");
scanf("%s",tel[n].tel_num);
printf("请输入联系人手机:");
scanf("%s",tel[n].phone_num);
printf("请输入联系人邮编:");
scanf("%d",&tel[n].code);
printf("请输入联系人地址:");
scanf("%s",tel[n].add);
printf("请输入联系人关系:");
scanf("%s",tel[n].rela_ship);

printf("录入成功!\n");
system("pause");
return n+1;

}

void Sort_And_Print(PTEL tel,int n)
{
int i,j;
TEL temp;
system("cls");
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(strcmp(tel[i].phone_num,tel[j].phone_num)>0)
{
temp = tel[i];
tel[i]=tel[j];
tel[j]=temp;
}
}
}
Print_TEL(tel,n);
system("pause");
}

void Sreach_Tel(PTEL tel,int n)
{
int i,num;
system("cls");
printf("请输入要查询的编号:");
scanf("%d",&num);

for(i=0;i<n;i++)
{
    if(tel[i].no==num)
    {
        break;
    }
}
if(i==n)
{
    printf("无该编号信息!\n");
    system("pause");
    return ;
}
Print_TEL(&tel[i],1);
system("pause");

}

void Save_File(TEL tel[],int n)
{
int i;
FILE* fp=fopen("tel.txt","w+");
if(fp==NULL)
{
return ;
}
for(i=0;i<n;i++)
{
fwrite(&tel[i],sizeof(TEL),1,fp);
}
fclose(fp);
}

int Open_File(TEL tel[])
{
int i=0;
FILE* fp=fopen("tel.txt","r+");
if(fp==NULL)
{
return 0;
}
while(fread(&tel[i],sizeof(TEL),1,fp))
{
i++;
}
return i;
}

void Modify_Tel_Menu(TEL tel[],int n)
{
int i,num,chioce;
system("cls");
printf("请输入要修改的编号:");
scanf("%d",&num);

for(i=0;i<n;i++)
{
    if(tel[i].no==num)
    {
        break;
    }
}
if(i==n)
{
    printf("无该编号信息!\n");
    system("pause");
    return ;
}

do
{
    system("cls");
    Print_TEL(&tel[i],1);
    printf("1:修改姓名\n");
    printf("2:修改电话\n");
    printf("3:修改手机\n");
    printf("4:修改邮编\n");
    printf("5:修改地址\n");
    printf("6:修改关系\n");
    printf("0:返回主菜单\n");
    printf("请输入选择:");
    scanf("%d",&chioce);
    while(chioce<0||chioce>6)
    {
        printf("请重新选择:");
        scanf("%d",&chioce);
    }
    switch(chioce)
    {
    case 1:
        printf("请输入新姓名:");
        scanf("%s",tel[i].name);
        printf("修改成功!\n");
        system("pause");
        break;
    case 2:
        printf("请输入新电话:");
        scanf("%s",tel[i].tel_num);
        printf("修改成功!\n");
        system("pause");
        break;
    case 3:
        printf("请输入新手机:");
        scanf("%s",tel[i].phone_num);
        printf("修改成功!\n");
        system("pause");
        break;
    case 4:
        printf("请输入新邮编:");
        scanf("%d",&tel[i].code);
        printf("修改成功!\n");
        system("pause");
        break;
    case 5:
        printf("请输入新地址:");
        scanf("%s",tel[i].add);
        printf("修改成功!\n");
        system("pause");
        break;
    case 6:
        printf("请输入新关系:");
        scanf("%s",tel[i].rela_ship);
        printf("修改成功!\n");
        system("pause");
        break;
    }
}while(chioce!=0);

}

int main(int argc,char* argv[])
{
int chioce;//记录选择
TEL tel[100];//保存职工信息
int NUM=0;//记录职工数量
NUM=Open_File(tel);
system("mode con: cols=120 lines=30");
do
{
chioce=menu();
switch(chioce)
{
case 1:
NUM=Add_Tel(tel,NUM);
Save_File(tel,NUM);
break;
case 2:
NUM=Delete_Tel(tel,NUM);
Save_File(tel,NUM);
break;
case 3:
Modify_Tel_Menu(tel,NUM);
Save_File(tel,NUM);
break;
case 4:
system("cls");
Print_TEL(tel,NUM);
system("pause");
break;
case 5:
Sreach_Tel(tel,NUM);
break;
case 6:
Sort_And_Print(tel,NUM);
break;
}
}while(chioce!=0);

return 0;

}

运行结果及报错内容

我的解答思路和尝试过的方法

不知道数据库维护功能的加密办法,密码用字符串,动态链表的修改

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 冰山76 2022-06-20 12:01
    关注

    在功能函数入口处,增加密码校验功能,若检测成功可以下一步,否则返回,跳转到登录界面
    设置登录函数,用户名密码可以加密生成md5或hash串,登录成功返回结果,

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月29日
  • 已采纳回答 6月21日
  • 创建了问题 6月20日

悬赏问题

  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程