求助
@FishC用c语言写一个个人通讯录管理系统
建立一个通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
功能要求
(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
(2) 输入功能:可以一次完成若干条信息的输入。
(3) 显示功能:完成全部通讯录信息的显示
(4) 查找功能:可以按姓名等多种方式查找通讯信息
(5) 增加、删除、修改功能:完成通讯录信息的多种更新 当然可以帮你写一个通讯录管理系统。首先,我们需要定义一个结构体来表示每一条通讯录信息:
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 100 // 定义通讯录最大容量
typedef struct {
char name; // 姓名
char company; // 单位
char telephone;// 固定电话
char mobile; // 移动手机
char category; // 分类
char email; // EMAIL
char qq; // QQ
} AddressBook;
接下来,我们可以定义一个存储通讯录信息的数组,并定义一个变量count来表示通讯录当前的数量:
AddressBook contacts; // 存储通讯录信息的数组
int count = 0;// 当前通讯录数量
接下来,我们可以实现输入功能。可以使用一个循环来多次输入通讯录信息,直到用户输入结束。在循环内部,我们可以通过strcpy函数来将用户输入的信息复制到对应的成员中,然后将count加1。
void input() {
char choice = 'y';
while (choice == 'y' || choice == 'Y') {
printf("请输入姓名:");
scanf("%s", contacts.name);
// 输入其他信息...
count++;// 当前通讯录数量加1
printf("是否继续输入(Y/N)?");
scanf(" %c", &choice);// 注意空格的作用,防止读取上一个字符
}
printf("输入完成!\n");
}
接下来,我们可以实现显示功能。遍历通讯录数组,逐个打印出每一条通讯录信息。
void display() {
if (count == 0) {
printf("通讯录为空!\n");
return;
}
for (int i = 0; i < count; i++) {
printf("姓名:%s\n", contacts.name);
// 显示其他信息...
}
}
接下来,我们可以实现查找功能。用户可以选择按照姓名或其他信息进行查找,我们可以通过比较字符串是否相等来判断是否找到匹配的结果。
void search() {
char keyword;
printf("请输入要查找的关键字:");
scanf("%s", keyword);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, keyword) == 0) {
printf("找到匹配的结果:\n");
printf("姓名:%s\n", contacts.name);
// 显示其他信息...
found = 1;
}
}
if (!found) {
printf("未找到匹配的结果!\n");
}
}
接下来,我们可以实现添加功能。在添加功能中,我们可以直接在数组的末尾增加一条通讯录信息,然后将count加1。
void add() {
if (count >= MAX_SIZE) {
printf("通讯录已满,无法添加!\n");
return;
}
printf("请输入姓名:");
scanf("%s", contacts.name);
// 输入其他信息...
count++;// 当前通讯录数量加1
printf("添加成功!\n");
}
接下来,我们可以实现删除功能。删除功能需要先找到要删除的通讯录信息,然后将后面的所有信息往前移动一个位置,并将count减1。
void remove() {
char keyword;
printf("请输入要删除的关键字:");
scanf("%s", keyword);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, keyword) == 0) {
found = 1;
// 将后面的所有信息往前移动一个位置
for (int j = i; j < count - 1; j++) {
contacts = contacts;
}
count--;// 当前通讯录数量减1
printf("删除成功!\n");
break;
}
}
if (!found) {
printf("未找到匹配的结果!\n");
}
}
最后,我们可以实现修改功能。修改功能需要先找到要修改的通讯录信息,然后用户可以输入新的信息进行替换。
void modify() {
char keyword;
printf("请输入要修改的关键字:");
scanf("%s", keyword);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, keyword) == 0) {
found = 1;
printf("请输入新的姓名:");
scanf("%s", contacts.name);
// 输入其他信息...
printf("修改成功!\n");
break;
}
}
if (!found) {
printf("未找到匹配的结果!\n");
}
}
以上就是一个简单的通讯录管理系统的实现。你可以根据自己的需求进一步完善其中的功能,增加错误处理等。希望对你有帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 这段代码没有定义主函数 coder20020723 发表于 2023-12-18 21:50
这段代码没有定义主函数
对不起,我在给出代码的时候忘记添加主函数了。下面是包含主函数的完整代码:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
char name; // 姓名
char company; // 单位
char telephone;// 固定电话
char mobile; // 移动手机
char category; // 分类
char email; // EMAIL
char qq; // QQ
} AddressBook;
AddressBook contacts; // 存储通讯录信息的数组
int count = 0;// 当前通讯录数量
void input() {
char choice = 'y';
while (choice == 'y' || choice == 'Y') {
printf("请输入姓名:");
scanf("%s", contacts.name);
printf("请输入单位:");
scanf("%s", contacts.company);
printf("请输入固定电话:");
scanf("%s", contacts.telephone);
printf("请输入移动手机:");
scanf("%s", contacts.mobile);
printf("请输入分类:");
scanf("%s", contacts.category);
printf("请输入EMAIL:");
scanf("%s", contacts.email);
printf("请输入QQ:");
scanf("%s", contacts.qq);
count++;// 当前通讯录数量加1
printf("是否继续输入(Y/N)?");
scanf(" %c", &choice);// 注意空格的作用,防止读取上一个字符
}
printf("输入完成!\n");
}
void display() {
if (count == 0) {
printf("通讯录为空!\n");
return;
}
for (int i = 0; i < count; i++) {
printf("姓名:%s\n", contacts.name);
printf("单位:%s\n", contacts.company);
printf("固定电话:%s\n", contacts.telephone);
printf("移动手机:%s\n", contacts.mobile);
printf("分类:%s\n", contacts.category);
printf("EMAIL:%s\n", contacts.email);
printf("QQ:%s\n", contacts.qq);
printf("\n");
}
}
void search() {
char keyword;
printf("请输入要查找的关键字:");
scanf("%s", keyword);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, keyword) == 0) {
printf("找到匹配的结果:\n");
printf("姓名:%s\n", contacts.name);
printf("单位:%s\n", contacts.company);
printf("固定电话:%s\n", contacts.telephone);
printf("移动手机:%s\n", contacts.mobile);
printf("分类:%s\n", contacts.category);
printf("EMAIL:%s\n", contacts.email);
printf("QQ:%s\n", contacts.qq);
printf("\n");
found = 1;
}
}
if (!found) {
printf("未找到匹配的结果!\n");
}
}
void add() {
if (count >= MAX_SIZE) {
printf("通讯录已满,无法添加!\n");
return;
}
printf("请输入姓名:");
scanf("%s", contacts.name);
printf("请输入单位:");
scanf("%s", contacts.company);
printf("请输入固定电话:");
scanf("%s", contacts.telephone);
printf("请输入移动手机:");
scanf("%s", contacts.mobile);
printf("请输入分类:");
scanf("%s", contacts.category);
printf("请输入EMAIL:");
scanf("%s", contacts.email);
printf("请输入QQ:");
scanf("%s", contacts.qq);
count++;// 当前通讯录数量加1
printf("添加成功!\n");
}
void remove() {
char keyword;
printf("请输入要删除的关键字:");
scanf("%s", keyword);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, keyword) == 0) {
found = 1;
// 将后面的所有信息往前移动一个位置
for (int j = i; j < count - 1; j++) {
strcpy(contacts.name, contacts.name);
strcpy(contacts.company, contacts.company);
strcpy(contacts.telephone, contacts.telephone);
strcpy(contacts.mobile, contacts.mobile);
strcpy(contacts.category, contacts.category);
strcpy(contacts.email, contacts.email);
strcpy(contacts.qq, contacts.qq);
}
count--;// 当前通讯录数量减1
printf("删除成功!\n");
break;
}
}
if (!found) {
printf("未找到匹配的结果!\n");
}
}
void modify() {
char keyword;
printf("请输入要修改的关键字:");
scanf("%s", keyword);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts.name, keyword) == 0) {
found = 1;
printf("请输入新的姓名:");
scanf("%s", contacts.name);
printf("请输入新的单位:");
scanf("%s", contacts.company);
printf("请输入新的固定电话:");
scanf("%s", contacts.telephone);
printf("请输入新的移动手机:");
scanf("%s", contacts.mobile);
printf("请输入新的分类:");
scanf("%s", contacts.category);
printf("请输入新的EMAIL:");
scanf("%s", contacts.email);
printf("请输入新的QQ:");
scanf("%s", contacts.qq);
printf("修改成功!\n");
break;
}
}
if (!found) {
printf("未找到匹配的结果!\n");
}
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 输入通讯录信息\n");
printf("2. 显示通讯录信息\n");
printf("3. 查找通讯录信息\n");
printf("4. 添加通讯录信息\n");
printf("5. 删除通讯录信息\n");
printf("6. 修改通讯录信息\n");
printf("0. 退出程序\n");
printf("请输入选择:");
scanf("%d", &choice);
switch(choice) {
case 1:
input();
break;
case 2:
display();
break;
case 3:
search();
break;
case 4:
add();
break;
case 5:
remove();
break;
case 6:
modify();
break;
case 0:
printf("程序已退出。\n");
return 0;
default:
printf("无效的选择,请重新输入!\n");
break;
}
printf("\n");
}
}
该代码包含了主函数,可以实现通讯录管理系统的各种功能。你可以根据需要进行测试和使用。希望能对你有所帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 高级程序猿 于 2023-12-18 23:02 编辑
1 高级程序猿 发表于 2023-12-18 23:00
@FishC
各位学委,大家好,关于心理健康教育课程作业 ...
嗨,同学们!听说你们有一个关于个人成长的作业,我来给你们一些提示吧。
首先,题目是可以自己选的,所以要挑一个和你个人成长有关的话题。比如说,你可以选择回顾你的学习历程、感受家庭的变化、或者是探讨你在某个重要事件中的成长经历。
在写报告的时候,要注重内省,也就是从内心深处去体验和分析。例如,你可以描述你在某个阶段的心理状态、遇到的困扰和困难,以及你是如何逐渐克服它们的。记住,不要只是简单罗列事实,而是要展示你的思考和感受。
另外,要注意的是不要进行价值判断。这意味着不要去评论或评价你的家人、教育方式或其他人。你的报告应该关注于自己的成长和反思,通过了解自己来提出自我完善的方案。
在写作格式上,记得按照老师要求的字数、字体和格式来进行排版。标题要用黑体三号字,正文要用宋体小四号字,行间距设置为1.25倍。尽量使用电子word版,最后在文末标注清楚年级、专业、班级、姓名和学号,并且将文件名命名为“姓名学号+成长报告”。
最后,记得要保护隐私,不要将他人的信息私传给别人。尊重别人也是尊重自己,这一点很重要。
希望我的回答对你有帮助,祝你顺利完成作业!如果还有其他问题,随时来问我哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 高级程序猿 发表于 2023-12-18 23:00
@FishC
各位学委,大家好,关于心理健康教育课程作业,辛苦大家通知本班同学们。
个人成长报告(15%)
? 这段代码中整型Found的作用是什么?@FishC coder20020723 发表于 2023-12-19 20:17
这段代码中整型Found的作用是什么?@FishC
嗨!感谢你的提问。
在你提到的代码中,整型变量Found的作用是用来表示是否找到了目标值。通常,在需要确定某个条件是否满足时,我们会使用一个变量来表示这个条件的状态。如果条件满足,则将这个变量设置为True(或1),否则设置为False(或0)。
在代码中,Found的值初始设置为False,表示没有找到目标值。当找到目标值时,将Found设置为True,以表明已经找到了。这样,代码可以根据Found的值来进行相应的操作,比如输出提示信息,或者执行特定的逻辑。
下面是一个简单的示例代码:
numbers =
target = 7
Found = False
for num in numbers:
if num == target:
Found = True
break
if Found:
print("找到了目标值!")
else:
print("未找到目标值!")
在这个例子中,我们通过遍历列表numbers来查找目标值target。当找到目标值时,将Found设置为True,并使用break语句提前结束循环。最后,根据Found的值输出对应的提示信息。
希望这个解答能帮到你!如有任何问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]