在C语言环境下,键盘输入学生信息(包括学号和成绩),学号为0作为结束标志,建立其对应的线性表并输出数据,实现增、删、改、查的基本功能。并实现菜单功能
时间: 2024-03-16 14:47:38 浏览: 75
基于C语言实现的顺序表操作范例,包括增删查和插入修改操作可在此基础上实现各种简单的信息管理系统,比如学生信息管理系统
好的,这是一个比较完整的程序要求,我可以给你提供一个示例代码,你可以参考一下。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct student {
int id;
int score;
} Student;
typedef struct {
Student data[MAX_SIZE];
int length;
} List;
void initList(List *list) {
list->length = 0;
}
void printList(List list) {
for (int i = 0; i < list.length; i++) {
printf("学号:%d\t成绩:%d\n", list.data[i].id, list.data[i].score);
}
}
int locate(List list, int id) {
for (int i = 0; i < list.length; i++) {
if (list.data[i].id == id) {
return i;
}
}
return -1;
}
void insert(List *list, int id, int score) {
if (list->length >= MAX_SIZE) {
printf("线性表已满,无法插入!\n");
return;
}
int index = locate(*list, id);
if (index != -1) {
printf("学号已存在,无法插入!\n");
return;
}
Student student = {id, score};
list->data[list->length] = student;
list->length++;
}
void removeById(List *list, int id) {
int index = locate(*list, id);
if (index == -1) {
printf("学号不存在,无法删除!\n");
return;
}
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
void updateScore(List *list, int id, int score) {
int index = locate(*list, id);
if (index == -1) {
printf("学号不存在,无法更新成绩!\n");
return;
}
list->data[index].score = score;
}
void searchById(List list, int id) {
int index = locate(list, id);
if (index == -1) {
printf("学号不存在!\n");
return;
}
printf("学号:%d\t成绩:%d\n", list.data[index].id, list.data[index].score);
}
void menu() {
printf("***************\n");
printf("* 1. 插入学生信息 *\n");
printf("* 2. 删除学生信息 *\n");
printf("* 3. 更新学生成绩 *\n");
printf("* 4. 查找学生信息 *\n");
printf("* 5. 输出所有学生信息 *\n");
printf("* 0. 退出程序 *\n");
printf("***************\n");
}
int main() {
List list;
initList(&list);
int choice, id, score;
do {
menu();
printf("请选择菜单:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入学号和成绩(空格隔开):");
scanf("%d %d", &id, &score);
insert(&list, id, score);
break;
case 2:
printf("请输入要删除学生的学号:");
scanf("%d", &id);
removeById(&list, id);
break;
case 3:
printf("请输入要更新学生的学号和成绩(空格隔开):");
scanf("%d %d", &id, &score);
updateScore(&list, id, score);
break;
case 4:
printf("请输入要查找学生的学号:");
scanf("%d", &id);
searchById(list, id);
break;
case 5:
printList(list);
break;
case 0:
printf("程序已退出!\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
```
这个程序实现了建立学生的线性表,并且实现了增、删、改、查的基本功能,同时还实现了菜单功能,方便用户的操作。当然,这只是一个示例,你可以根据自己的需要进行修改和完善。
阅读全文