机房收费管理系统c语言顺序表
时间: 2023-10-04 19:04:40 浏览: 61
下面是一个简单的机房收费管理系统的顺序表实现,使用了结构体嵌套和动态内存分配。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_RECORDS 1000 // 最大记录数
// 学生信息结构体
typedef struct {
char name[MAX_NAME_LEN];
int id;
int minutes;
} Student;
// 学生记录结构体
typedef struct {
Student *students;
int count;
int capacity;
} Record;
// 初始化学生记录
void initRecord(Record *record) {
record->students = malloc(MAX_RECORDS * sizeof(Student));
record->count = 0;
record->capacity = MAX_RECORDS;
}
// 添加学生记录
void addStudent(Record *record, char *name, int id, int minutes) {
if (record->count == record->capacity) {
printf("Error: record is full.\n");
return;
}
Student *student = &record->students[record->count];
strncpy(student->name, name, MAX_NAME_LEN);
student->id = id;
student->minutes = minutes;
record->count++;
}
// 删除学生记录
void deleteStudent(Record *record, int id) {
int i, j;
for (i = 0; i < record->count; i++) {
if (record->students[i].id == id) {
for (j = i; j < record->count - 1; j++) {
record->students[j] = record->students[j + 1];
}
record->count--;
return;
}
}
printf("Error: student not found.\n");
}
// 查询学生记录
void queryStudent(Record *record, int id) {
int i;
for (i = 0; i < record->count; i++) {
if (record->students[i].id == id) {
printf("Name: %s\n", record->students[i].name);
printf("ID: %d\n", record->students[i].id);
printf("Minutes: %d\n", record->students[i].minutes);
return;
}
}
printf("Error: student not found.\n");
}
// 主函数
int main() {
Record record;
initRecord(&record);
int choice, id, minutes;
char name[MAX_NAME_LEN];
do {
printf("1. Add student record\n");
printf("2. Delete student record\n");
printf("3. Query student record\n");
printf("4. Quit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter name: ");
scanf("%s", name);
printf("Enter ID: ");
scanf("%d", &id);
printf("Enter minutes: ");
scanf("%d", &minutes);
addStudent(&record, name, id, minutes);
break;
case 2:
printf("Enter ID: ");
scanf("%d", &id);
deleteStudent(&record, id);
break;
case 3:
printf("Enter ID: ");
scanf("%d", &id);
queryStudent(&record, id);
break;
case 4:
break;
default:
printf("Error: invalid choice.\n");
break;
}
} while (choice != 4);
return 0;
}
```
该程序实现了三个基本操作:添加、删除和查询学生记录,以及一个退出选项。其中学生信息包括姓名、学号和使用机房的时间(分钟)。顺序表记录了所有学生的信息,最多可以保存1000个记录。在添加、删除和查询学生记录时,程序会搜索顺序表,根据学号进行操作。