如何编写C语言程序使得输入编号就可以显示其他的个人信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编写C语言程序使得输入编号就可以显示其他的个人信息相关的知识,希望对你有一定的参考价值。
1、写一个结构体数组用来记录信息
这里我写了一个可以存储一个人的姓名、电话、邮箱的结构体。
struct notechar 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 模型,因此您可以访问 profile
或 object
。
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中,有一列是公司名称,如果我在其他单元格里面输入公司的简称立即就可以显示公司全称,怎么实现?