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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写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;
    

参考技术A

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

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

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

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

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

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

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

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

    一个最简单的模型

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

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

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

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

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

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

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

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

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

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

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

参考技术B 定义一个结构体 其中编号作为其结构体的一个成员,然后输入编号作为索引,查找到编号相同的那个成员 ,把成员信息打印出来就可以了 参考技术C 定义一个结构体,结构体包括编号,姓名,性别等个人信息, 把结构体编号拿出来与输入编号对比,对比成功之后输出结构体其他信息。 参考技术D 你的结构体里面可以包含编号和其他的信息,用循环遍历结构体数组,用每个元素的编号和你输入的编号比较,若相等,输出该元素的其他信息

如何在 django 中显示其他用户信息

【中文标题】如何在 django 中显示其他用户信息【英文标题】:how can i display other user information in django 【发布时间】:2019-06-12 13:52:58 【问题描述】:

我正在创建一个用户可以查看其他用户个人资料的网站,但问题是当用户输入另一个用户个人资料时,它会显示他的个人信息

这是 urls.py 文件代码

urlpatterns = [
    path('user/<str:username>', UserPostListView.as_view(), name='user-posts'),
]

这是view.py文件代码

class UserPostListView(ListView):
    model = Post = Profile
    template_name = 'website/user_posts.html'

    def get_queryset(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Post.objects.filter(author=user)

    def get_username_field(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Profile.objects.filter(user=user)

这是models.py文件

class Profile(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE)

    age = models.IntegerField(verbose_name='Ålder', default=15, 
    blank=True)

    def get_absolute_url(self):
        return reverse('user_posts', kwargs='pk': self.pk)

    def __str__(self):
        return f'self.user.username Profile'

user_posts.html 文件

 user.get_full_name 
 user.profile.age 
 view.kwargs.username 

在模板中显示了用户名,但没有显示姓名和年龄。

【问题讨论】:

我使用的是 2.1.5 django 版本 【参考方案1】:

user 始终是当前登录用户。您的视图使用 Profile 模型,因此您可以访问 profileobject

 profile.user.get_full_name 
 profile.age 

请注意,您的 get_username_field 方法永远不会被调用并且不会执行任何操作;你应该删除它。

另请注意,将age 作为整数存储在数据库中确实不是一个好主意。这意味着您必须以某种方式每年更新它,因为人们有变老的奇怪习惯......最好存储出生日期,并有一种显示年龄的方法。

【讨论】:

不是必须是 profile.user.get_full_name 吗? 感谢您提供的非常有用的好信息,但即使在我输入 profile.age 之后,它也没有显示我使用 2.1.5 django 版本的年龄【参考方案2】:

首先你的 get_username_field 没有用。

在你的views.py中,

class UserPostListView(ListView):
    model = Profile
    template_name = 'website/user_posts.html'
    context_object_name = 'user_content'  
    allow_empty = False  #this will show 404 if the username does not exists

    def get_queryset(self):
        return User.objects.filter(username=self.kwargs['username']) 
        # you can do it in one line now 

现在用 html 显示这个,

% for user in user_content %
user.get_full_name
# rest of your code
% endfor %

您还可以按照上述相同的方式显示该特定用户的帖子。

【讨论】:

'找不到带有参数'('',)'的'用户帖子'的反向。尝试了 1 种模式:['user/(?P[^/]+)$']' 我收到此错误

以上是关于如何编写C语言程序使得输入编号就可以显示其他的个人信息的主要内容,如果未能解决你的问题,请参考以下文章

excel中,有一列是公司名称,如果我在其他单元格里面输入公司的简称立即就可以显示公司全称,怎么实现?

高手啊 求救求救啊帮我用c语言编写个先进先出的算法 急需啊

怎样用c语言编写以年月日的格式输入一个人的生日和当前日期,来计算这个人的年龄

用C语言如何编写"键盘输入一个多位数,然后倒序输出"

C语言设计个人通讯录管理系统

用c语言写一个倒计时关机程序