没头没尾

贪多的毛病又犯了。不会的基础知识点一大堆,却又拼命的找各种题库,一点效果都没有,仿佛看到了九月份之前还是什么都不会的我。

烦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【题目】建立参会人员管理系统,对参会人员相关信息进行管理。参会人员的相关信息 包括:姓名、电话号码、身份证号码、单位、房间号等。具体要求: (1)建立该存储结构。 (2)录入参会人员的相关信息。 (3)查找某个参会人员的房间号。 (4)修改某个参会人员的房间号。 (5)删除某个参会人员及相关信息。 (6)插入某个参会人员的相关信息。 (7)统计某指定单位的参会人员人数。 【编程提示】将每个参会人员当作一个结点,类型为结构体,结构体中包含参会人员的相关信息和结点指针。定义参会人员结点的结构为 struct node A char name [40]; char tele[201; char ID[181; char unit[60]; char no[6]; struct node*1ink; /*姓名*/ /*电话号码*/ /*身份证号码*/ /*单位*/ /*房间号/ /*指向下一结点的指针/ ; 编写查询函数,从第一条记录开始,将记录中的单位字段和待比较的字符串进行比较,若相等,则统计后继续循环,直至循环结束;若不相等,则继续循环直至结束。删除指定记录时,先根据输入的字段进行查找。如果没找到指定结点,输出没找到信息。果找到指定结点,则分三种情况讨论:该结点为结点时,修改原结点所指向的结点为新的结点;该结点为中间结点时,修改该结点的前一结点的指针使其指向该结点的后一结点;该结点为结点时,修改原结点的前一结点为新的结点;最后释放该结点。(使用c语言)
06-09
以下是代码实现: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> struct node { char name[40]; char tele[20]; char ID[18]; char unit[60]; char no[6]; struct node *link; }; // 全局变量,指向链表结点 struct node *head = NULL; // 函数声明 void insert_node(); void delete_node(); void modify_node(); void search_node(); void count_node(); void print_list(); int main() { int choice; do { printf("\n=== 参会人员管理系统 ===\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: insert_node(); break; case 2: delete_node(); break; case 3: modify_node(); break; case 4: search_node(); break; case 5: count_node(); break; case 6: print_list(); break; case 0: printf("程序已退出!\n"); break; default: printf("输入错误,请重新输入!\n"); break; } } while (choice != 0); return 0; } // 插入参会人员信息 void insert_node() { struct node *new_node; new_node = (struct node*)malloc(sizeof(struct node)); printf("请输入参会人员姓名:"); scanf("%s", new_node->name); printf("请输入参会人员电话号码:"); scanf("%s", new_node->tele); printf("请输入参会人员身份证号码:"); scanf("%s", new_node->ID); printf("请输入参会人员单位:"); scanf("%s", new_node->unit); printf("请输入参会人员房间号:"); scanf("%s", new_node->no); new_node->link = head; head = new_node; printf("参会人员信息录入成功!\n"); } // 删除参会人员信息 void delete_node() { char no[6]; struct node *ptr, *prev; printf("请输入要删除的参会人员房间号:"); scanf("%s", no); ptr = head; prev = NULL; while (ptr != NULL) { if (strcmp(ptr->no, no) == 0) { // 找到要删除的结点 if (prev == NULL) { // 要删除的结点是结点 head = ptr->link; } else { prev->link = ptr->link; } printf("参会人员信息删除成功!\n"); free(ptr); return; } prev = ptr; ptr = ptr->link; } printf("没有找到要删除的参会人员信息!\n"); } // 修改参会人员信息 void modify_node() { char no[6]; struct node *ptr; printf("请输入要修改的参会人员房间号:"); scanf("%s", no); ptr = head; while (ptr != NULL) { if (strcmp(ptr->no, no) == 0) { // 找到要修改的结点 printf("请输入新的参会人员房间号:"); scanf("%s", ptr->no); printf("参会人员信息修改成功!\n"); return; } ptr = ptr->link; } printf("没有找到要修改的参会人员信息!\n"); } // 查找参会人员信息 void search_node() { char no[6]; struct node *ptr; printf("请输入要查找的参会人员房间号:"); scanf("%s", no); ptr = head; while (ptr != NULL) { if (strcmp(ptr->no, no) == 0) { // 找到要查找的结点 printf("参会人员姓名:%s\n", ptr->name); printf("参会人员电话号码:%s\n", ptr->tele); printf("参会人员身份证号码:%s\n", ptr->ID); printf("参会人员单位:%s\n", ptr->unit); printf("参会人员房间号:%s\n", ptr->no); return; } ptr = ptr->link; } printf("没有找到要查找的参会人员信息!\n"); } // 统计单位参会人数 void count_node() { char unit[60]; struct node *ptr; int count = 0; printf("请输入要统计的单位:"); scanf("%s", unit); ptr = head; while (ptr != NULL) { if (strcmp(ptr->unit, unit) == 0) { // 找到要统计的单位 count++; } ptr = ptr->link; } printf("单位 %s 参会人数为:%d\n", unit, count); } // 显示全部参会人员信息 void print_list() { struct node *ptr; ptr = head; while (ptr != NULL) { printf("参会人员姓名:%s\n", ptr->name); printf("参会人员电话号码:%s\n", ptr->tele); printf("参会人员身份证号码:%s\n", ptr->ID); printf("参会人员单位:%s\n", ptr->unit); printf("参会人员房间号:%s\n", ptr->no); ptr = ptr->link; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值