学生通讯录管理课题设计相关的c语言知识
时间: 2024-02-04 11:03:01 浏览: 18
学生通讯录管理系统的设计需要用到以下的C语言知识:
1. 结构体:可以用于存储学生的基本信息,如姓名、学号、电话、邮箱等。
2. 文件操作:可以用于将学生信息存储在文件中,并且可以读取文件中的信息。
3. 动态内存分配:可以用于动态地分配内存空间,以便存储不同数量的学生信息。
4. 函数:可以用于将不同功能的代码块封装成函数,以便实现模块化的设计。
5. 数组:可以用于存储多个学生的信息,以便进行排序和查找等操作。
6. 指针:可以用于指向动态分配的内存空间,以便进行数据的读取和写入操作。
以上是学生通讯录管理系统设计中所需的一些C语言知识,当然还有其他的一些知识,如条件语句、循环语句等等。
相关问题
通讯录管理系统 数据结构c语言
以下是一个基于链表数据结构的通讯录管理系统的C语言实现,包括增加、删除、修改、查找和显示全部信息等功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义通讯录结构体
typedef struct AddressBook {
char name[20]; // 姓名
char phone[12]; // 电话号码
struct AddressBook *next; // 指向下一个节点的指针
} AddressBook;
// 添加联系人
void add(AddressBook **head) {
AddressBook *p = (AddressBook *)malloc(sizeof(AddressBook));
printf("请输入姓名:");
scanf("%s", p->name);
printf("请输入电话号码:");
scanf("%s", p->phone);
p->next = *head;
*head = p;
printf("添加成功!\n");
}
// 删除联系人
void del(AddressBook **head) {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
AddressBook *p = *head;
AddressBook *pre = NULL;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
if (pre == NULL) {
*head = p->next;
} else {
pre->next = p->next;
}
free(p);
printf("删除成功!\n");
return;
}
pre = p;
p = p->next;
}
printf("未找到该联系人!\n");
}
// 修改联系人
void modify(AddressBook *head) {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
AddressBook *p = head;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
printf("请输入新的电话号码:");
scanf("%s", p->phone);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该联系人!\n");
}
// 查找联系人
void search(AddressBook *head) {
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
AddressBook *p = head;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
printf("姓名:%s,电话号码:%s\n", p->name, p->phone);
return;
}
p = p->next;
}
printf("未找到该联系人!\n");
}
// 显示全部联系人
void show(AddressBook *head) {
AddressBook *p = head;
while (p != NULL) {
printf("姓名:%s,电话号码:%s\n", p->name, p->phone);
p = p->next;
}
}
int main() {
AddressBook *head = NULL;
int choice;
while (1) {
printf("请选择操作:\n");
printf("1.添加联系人\n");
printf("2.删除联系人\n");
printf("3.修改联系人\n");
printf("4.查找联系人\n");
printf("5.显示全部联系人\n");
printf("6.退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add(&head);
break;
case 2:
del(&head);
break;
case 3:
modify(head);
break;
case 4:
search(head);
break;
case 5:
show(head);
break;
case 6:
printf("谢谢使用!\n");
return 0;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
通讯录管理系统带报告c语言
通讯录管理系统可以采用C语言编写,实现基本的增删改查功能,并生成报告。
以下是一个简单的通讯录管理系统的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
char phone[20];
char email[30];
} Contact;
int menu();
void add_contact(Contact *contacts, int *count);
void del_contact(Contact *contacts, int *count);
void update_contact(Contact *contacts, int *count);
void search_contact(Contact *contacts, int count);
void print_report(Contact *contacts, int count);
int main() {
Contact contacts[100]; // 最多存储100个联系人
int count = 0; // 当前联系人数量
while (1) {
int choice = menu();
switch (choice) {
case 1:
add_contact(contacts, &count);
break;
case 2:
del_contact(contacts, &count);
break;
case 3:
update_contact(contacts, &count);
break;
case 4:
search_contact(contacts, count);
break;
case 5:
print_report(contacts, count);
break;
case 6:
printf("退出程序\n");
exit(0);
default:
printf("无效的选项\n");
break;
}
}
return 0;
}
int menu() {
printf("请选择操作:\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 修改联系人\n");
printf("4. 查找联系人\n");
printf("5. 生成报告\n");
printf("6. 退出\n");
int choice;
scanf("%d", &choice);
return choice;
}
void add_contact(Contact *contacts, int *count) {
if (*count >= 100) {
printf("已达到最大联系人数量\n");
return;
}
printf("请输入姓名:");
scanf("%s", contacts[*count].name);
printf("请输入电话:");
scanf("%s", contacts[*count].phone);
printf("请输入Email:");
scanf("%s", contacts[*count].email);
(*count)++;
}
void del_contact(Contact *contacts, int *count) {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int i;
for (i = 0; i < *count; i++) {
if (strcmp(name, contacts[i].name) == 0) {
int j;
for (j = i; j < *count - 1; j++) {
contacts[j] = contacts[j+1];
}
(*count)--;
printf("删除成功\n");
return;
}
}
printf("未找到该联系人\n");
}
void update_contact(Contact *contacts, int *count) {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int i;
for (i = 0; i < *count; i++) {
if (strcmp(name, contacts[i].name) == 0) {
printf("请输入新的电话:");
scanf("%s", contacts[i].phone);
printf("请输入新的Email:");
scanf("%s", contacts[i].email);
printf("修改成功\n");
return;
}
}
printf("未找到该联系人\n");
}
void search_contact(Contact *contacts, int count) {
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
int i;
for (i = 0; i < count; i++) {
if (strcmp(name, contacts[i].name) == 0) {
printf("姓名:%s,电话:%s,Email:%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);
return;
}
}
printf("未找到该联系人\n");
}
void print_report(Contact *contacts, int count) {
FILE *fp = fopen("report.txt", "w");
if (fp == NULL) {
printf("无法打开文件\n");
return;
}
int i;
for (i = 0; i < count; i++) {
fprintf(fp, "姓名:%s,电话:%s,Email:%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);
}
fclose(fp);
printf("报告已生成\n");
}
```
该程序实现了添加联系人、删除联系人、修改联系人、查找联系人和生成报告等功能。在生成报告时,程序会将联系人信息输出到一个名为report.txt的文件中。