如何编写C语言程序使得输入编号就可以显示其他的个人信息

如题所述

1、写一个结构体数组用来记录信息

   这里我写了一个可以存储一个人的姓名、电话、邮箱的结构体。

struct note{
char name[100];
char phone[100];
char mail[100];
}people[1000];

2、用文件储存更加方便

p=fopen("list.txt","r");
        if(p==NULL)
        {
            fclose(p);
            p=fopen("list.txt","w");
            fclose(p);
        }

3、写一个简单的界面(可以用死循环)

while(1)
        {
            n=0;
            p=fopen("list.txt","r");
            while(fscanf(p,"%s%s%s",people[n].name,people[n].phone,people[n].mail)!=EOF)
                n++;
            fclose(p);
            ///--------一次循环更新一次数据

4、写一个简单的查找程序

int k;
            cout<<"输入1读取,输入2输入"<<endl;
            cin>>k;
            if(k==1)
            {
                cout<<"输入信息"<<endl;
                char s[100];
                cin>>s;
                bool ok=0;
                for(i=0;i<strlen(s);i++)
                    if(s[i]>='0'&&s[i]<='9')
                      ok=1;
                    //自动识别输入的是姓名还是电话号码
                if(ok==0)
                {
                    //cout<<"通过姓名找到联系人"<<endl;
                    //system("pause");
                    bool you=0;
                    for(i=0;i<n;i++)
                        if(strcmp(s,people[i].name)==0)
                            {
                                you=1;
                                cout<<"姓名"<<people[i].name<<endl;
                                cout<<"电话号码"<<people[i].phone<<endl;
                                cout<<"邮箱"<<people[i].mail<<endl;
                            }
                    if(you==0)
                      cout<<"没有通过姓名找到联系人"<<endl;
                }
                if(ok==1)
                {
                    //cout<<"通过电话找联系人"<<endl;
                    //system("pause");
                    bool you=0;
                    for(i=0;i<n;i++)
                        if(strcmp(s,people[i].phone)==0)
                            {
                                you=1;
                                cout<<"姓名"<<people[i].name<<endl;
                                cout<<"电话号码"<<people[i].phone<<endl;
                                cout<<"邮箱"<<people[i].mail<<endl;
                            }
                    if(you==0)
                      cout<<"没有通过电话找到联系人"<<endl;
                }

5、添加信息的代码

if(k==2)
            {
                p1=fopen("list.txt","a+");
                char ss[1000];
                cout<<"请输入姓名"<<endl;
                cin>>ss;
                fprintf(p1,"%s\n",ss);
                cout<<"请输入电话"<<endl;
                cin>>ss;
                fprintf(p1,"%s\n",ss);
                cout<<"请输入邮箱"<<endl;
                cin>>ss;
                fprintf(p1,"%s\n",ss);
                fclose(p1);
            }
        }

最终的程序

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
FILE *p,*p1;
struct note{
char name[100];
char phone[100];
char mail[100];
}people[1000];
int main()
    {
        int n=0,i,j;
        p=fopen("list.txt","r");
        if(p==NULL)
        {
            fclose(p);
            p=fopen("list.txt","w");
            fclose(p);
        }
        while(1)
        {
            n=0;
            p=fopen("list.txt","r");
            while(fscanf(p,"%s%s%s",people[n].name,people[n].phone,people[n].mail)!=EOF)
                n++;
            fclose(p);
            ///---------------
            int k;
            cout<<"输入1读取,输入2输入"<<endl;
            cin>>k;
            if(k==1)
            {
                cout<<"输入信息"<<endl;
                char s[100];
                cin>>s;
                bool ok=0;
                for(i=0;i<strlen(s);i++)
                    if(s[i]>='0'&&s[i]<='9')
                      ok=1;
                if(ok==0)
                {
                    //cout<<"通过姓名找到联系人"<<endl;
                    //system("pause");
                    bool you=0;
                    for(i=0;i<n;i++)
                        if(strcmp(s,people[i].name)==0)
                            {
                                you=1;
                                cout<<"姓名"<<people[i].name<<endl;
                                cout<<"电话号码"<<people[i].phone<<endl;
                                cout<<"邮箱"<<people[i].mail<<endl;
                            }
                    if(you==0)
                      cout<<"没有通过姓名找到联系人"<<endl;
                }
                if(ok==1)
                {
                    //cout<<"通过电话找联系人"<<endl;
                    //system("pause");
                    bool you=0;
                    for(i=0;i<n;i++)
                        if(strcmp(s,people[i].phone)==0)
                            {
                                you=1;
                                cout<<"姓名"<<people[i].name<<endl;
                                cout<<"电话号码"<<people[i].phone<<endl;
                                cout<<"邮箱"<<people[i].mail<<endl;
                            }
                    if(you==0)
                      cout<<"没有通过电话找到联系人"<<endl;
                }

            }
            if(k==2)
            {
                p1=fopen("list.txt","a+");
                char ss[1000];
                cout<<"请输入姓名"<<endl;
                cin>>ss;
                fprintf(p1,"%s\n",ss);
                cout<<"请输入电话"<<endl;
                cin>>ss;
                fprintf(p1,"%s\n",ss);
                cout<<"请输入邮箱"<<endl;
                cin>>ss;
                fprintf(p1,"%s\n",ss);
                fclose(p1);
            }
        }
        return 0;
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-01

首先分析这句话产生的需求,

    要解决的问题,通过编号查询信息。

    要求使用的工具是C语言。

再看这些需求衍生出来的问题。

    1. 编号是什么?身份证、学号、员工编号或者其他

    2. 信息又应该涵盖哪些范畴?姓名字号,生辰八字

    3. 输入编号的媒介是什么?键盘,语音,图像等等

再者,这些信息怎么来?由谁收集,由谁保存?又显示在哪里?

    一个最简单的模型

    a 信息都保存在文件里面,可以通过文件导入导出。

    b 仅仅也只保存个人的姓名和编号。

    c 输入的媒介是键盘,输出的是屏幕

    再看使用C语言作为开发工具

    解决a 需要用到文件读写。

    解决b 需要用到一个简单的结构体 包含姓名和编号两个字符串

    解决c 需要标准的输入输出接口

    但是除此之外,还有一个问题,怎么查询?

    查询的数据是在文件里还是在内存里?

    如果为文件里,借用解决a的方式就可以搞定。

    如果在内存里,那么批量数据在内存里的存储,最好还是有一个可靠的数据结构来组织起来。这个简单模型里,哈希表就满足了需求。或者简单一点,如果数据量足够小,一个足够大的结构体数组也是可以的。

第2个回答  2016-06-08
定义一个结构体 其中编号作为其结构体的一个成员,然后输入编号作为索引,查找到编号相同的那个成员 ,把成员信息打印出来就可以了
第3个回答  推荐于2018-03-01
定义一个结构体,结构体包括编号,姓名,性别等个人信息, 把结构体编号拿出来与输入编号对比,对比成功之后输出结构体其他信息。本回答被网友采纳
第4个回答  推荐于2017-11-22
你的结构体里面可以包含编号和其他的信息,用循环遍历结构体数组,用每个元素的编号和你输入的编号比较,若相等,输出该元素的其他信息本回答被网友采纳
相似回答