户籍管理系统中,需要记录每一个人的个人信息以及父母还孩子的亲缘关系。 每一个人的主要信息包括:姓名,身份证号,生日,性别。 请给出E-R图,以及对应的关系模式,标明主码和外码
时间: 2023-06-14 17:06:38 浏览: 58
以下是户籍管理系统的E-R图:
![户籍管理系统E-R图](https://i.imgur.com/7bbZyN5.png)
对应的关系模式如下:
- 个人信息(PersonalInfo):(姓名, 身份证号*),生日,性别
- 亲缘关系(Relationship):(身份证号1*, 身份证号2*, 关系类型),其中关系类型包括:父子,母子,父女,母女,夫妻,兄弟姐妹
- 性别(Sex):(性别ID*),性别名称
其中,主码用 * 表示,外码分别为:
- 个人信息(PersonalInfo)表中,无外码
- 亲缘关系(Relationship)表中,身份证号1和身份证号2分别为PersonalInfo表中的身份证号,均为外码
- 性别(Sex)表中,无外码。
相关问题
代码生成(写一个户籍管理系统)
好的,以下是一个简单的户籍管理系统的 Python 代码示例:
```python
class Person:
def __init__(self, name, age, gender, address, id_number):
self.name = name
self.age = age
self.gender = gender
self.address = address
self.id_number = id_number
class Household:
def __init__(self, holder, members):
self.holder = holder
self.members = members
def add_member(self, person):
self.members.append(person)
class Register:
def __init__(self):
self.households = {}
def add_household(self, household):
self.households[household.holder.id_number] = household
def remove_household(self, id_number):
del self.households[id_number]
def get_household(self, id_number):
return self.households.get(id_number)
def get_household_members(self, id_number):
household = self.get_household(id_number)
if household:
return household.members
return []
# 示例用法
person1 = Person("张三", 35, "男", "北京市海淀区", "110101198001010011")
person2 = Person("李四", 33, "女", "北京市朝阳区", "110101198301010022")
household1 = Household(person1, [person1, person2])
register = Register()
register.add_household(household1)
print(register.get_household_members("110101198001010011")) # 输出 [张三, 李四]
```
这个系统有三个类:`Person` 表示一个人,`Household` 表示一个户,包括户主和成员,`Register` 表示户籍登记系统。用户可以向 `Register` 中添加 `Household`,并可以根据身份证号码查询户籍信息。
代码生成 利用C语言写一个户籍管理系统,
好的,我可以给你提供一份简单的C语言代码示例,实现一个基本的户籍管理系统。这个系统包括以下几个功能:添加人员信息、修改人员信息、查询人员信息和删除人员信息。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100 // 最大人员数量
// 定义一个结构体,表示一个人员的信息
struct Person {
char name[20]; // 姓名
char sex[5]; // 性别
int age; // 年龄
char id[20]; // 身份证号
};
// 定义一个全局变量,表示当前系统中的人员数量
int person_num = 0;
// 定义一个数组,用来存储所有人员的信息
struct Person person_list[MAXSIZE];
// 添加人员信息
void add_person() {
if (person_num >= MAXSIZE) {
printf("人员数量已达到上限,无法添加新的人员信息!\n");
return;
}
struct Person p;
printf("请输入人员姓名:");
scanf("%s", p.name);
printf("请输入人员性别:");
scanf("%s", p.sex);
printf("请输入人员年龄:");
scanf("%d", &p.age);
printf("请输入人员身份证号:");
scanf("%s", p.id);
person_list[person_num] = p;
person_num++;
printf("人员信息添加成功!\n");
}
// 修改人员信息
void modify_person() {
char id[20];
printf("请输入要修改的人员身份证号:");
scanf("%s", id);
int index = -1;
for (int i = 0; i < person_num; i++) {
if (strcmp(person_list[i].id, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到指定的人员信息!\n");
return;
}
struct Person p;
printf("请输入修改后的人员姓名:");
scanf("%s", p.name);
printf("请输入修改后的人员性别:");
scanf("%s", p.sex);
printf("请输入修改后的人员年龄:");
scanf("%d", &p.age);
printf("请输入修改后的人员身份证号:");
scanf("%s", p.id);
person_list[index] = p;
printf("人员信息修改成功!\n");
}
// 查询人员信息
void query_person() {
char id[20];
printf("请输入要查询的人员身份证号:");
scanf("%s", id);
int index = -1;
for (int i = 0; i < person_num; i++) {
if (strcmp(person_list[i].id, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到指定的人员信息!\n");
return;
}
printf("姓名:%s\n", person_list[index].name);
printf("性别:%s\n", person_list[index].sex);
printf("年龄:%d\n", person_list[index].age);
printf("身份证号:%s\n", person_list[index].id);
}
// 删除人员信息
void delete_person() {
char id[20];
printf("请输入要删除的人员身份证号:");
scanf("%s", id);
int index = -1;
for (int i = 0; i < person_num; i++) {
if (strcmp(person_list[i].id, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到指定的人员信息!\n");
return;
}
for (int i = index; i < person_num - 1; i++) {
person_list[i] = person_list[i + 1];
}
person_num--;
printf("人员信息删除成功!\n");
}
int main() {
while (1) {
int choice;
printf("1. 添加人员信息\n");
printf("2. 修改人员信息\n");
printf("3. 查询人员信息\n");
printf("4. 删除人员信息\n");
printf("5. 退出系统\n");
printf("请选择功能:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_person();
break;
case 2:
modify_person();
break;
case 3:
query_person();
break;
case 4:
delete_person();
break;
case 5:
printf("感谢使用本系统,再见!\n");
return 0;
default:
printf("无效的选择,请重新选择!\n");
break;
}
}
}
```
以上就是一个简单的户籍管理系统的C语言代码示例,可以根据需要进行修改和完善。