c语言机房收费管理系统 (1输入功能:输入30名学生的学号、班级、姓名、上机起始时间。 (2)计算功能:计算每个下机学生的上机费用,每小时1元。(上机费用一上机时间水,不足-小时按一小时计算) (3)查询功能:按条件(班级、学号、姓名)是示学生的上机时间。 (4)机器使用情况的显示
时间: 2024-03-29 21:39:42 浏览: 24
好的,我了解了您的问题。您的问题是关于C语言机房收费管理系统的功能,需要实现输入学生信息、计算上机费用、查询学生上机时间和显示机器使用情况等功能。
对于您的问题,我可以为您提供一些思路和建议:
1. 学生信息的输入可以使用结构体数组来实现,每个结构体包含学号、班级、姓名和上机起始时间等信息。
2. 计算上机费用可以先计算出每个学生的上机时间,然后按照每小时1元的标准来计算上机费用。需要注意的是,如果上机时间不足1小时,则按照1小时计算。
3. 查询学生上机时间可以根据条件(班级、学号、姓名)来实现,可以使用循环遍历结构体数组来查找符合条件的学生信息。
4. 显示机器使用情况可以统计出每个机器的使用时间,然后按照一定的格式进行显示。
希望以上建议能够帮助您完成C语言机房收费管理系统的开发。如果您还有其他问题或需要更详细的帮助,欢迎随时向我提问。
相关问题
c语言实现 输入功能:输入 30 名学生的学号、班级、姓名、上机起始时间。(2)计算功能:计算每个下机学生的上机费用,每小时1元。 (上机费用=上机时间*1.0/h,不足一小时按一小时计算) (3)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。(4)机器使用情况的显示(显示方式不限但要一目了然)
好的,以下是一个简单的C语言实现,实现了输入学生信息、计算每个下机学生的上机费用、按条件查询学生的上机时间和机器使用情况显示的功能。这里只是一个简单的示例,可以根据实际情况进行修改和完善。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 30
#define MAX_NAME_LEN 20
#define MAX_CLASS_LEN 10
#define MAX_ID_LEN 10
// 学生结构体
typedef struct {
char id[MAX_ID_LEN]; // 学号
char name[MAX_NAME_LEN]; // 姓名
char class[MAX_CLASS_LEN]; // 班级
int start_time; // 上机起始时间
int end_time; // 下机时间
float cost; // 上机费用
} Student;
// 机器状态结构体
typedef struct {
int id; // 机器编号
int status; // 使用状态(0:空闲,1:使用中)
int start_time; // 使用起始时间
} Machine;
// 学生数组和机器状态数组
Student students[MAX_STUDENTS];
Machine machines[10];
// 学生数量
int num_students = 0;
// 添加学生信息
void add_student() {
if (num_students >= MAX_STUDENTS) {
printf("学生数量已达到上限,无法添加!\n");
return;
}
Student s;
printf("请输入学号:");
scanf("%s", s.id);
printf("请输入姓名:");
scanf("%s", s.name);
printf("请输入班级:");
scanf("%s", s.class);
printf("请输入上机起始时间:");
scanf("%d", &s.start_time);
students[num_students++] = s;
printf("学生信息添加成功!\n");
}
// 计算上机费用
float calc_cost(int start_time, int end_time) {
int time = end_time - start_time;
if (time % 60 == 0) {
return time / 60.0;
} else {
return (time / 60.0) + 1;
}
}
// 计算每个下机学生的上机费用
void calc_all_costs() {
for (int i = 0; i < num_students; i++) {
if (students[i].end_time == 0) {
printf("学生 %s 上机中,无法计算费用!\n", students[i].name);
continue;
}
students[i].cost = calc_cost(students[i].start_time, students[i].end_time);
printf("学生 %s 的上机费用为 %.2f 元!\n", students[i].name, students[i].cost);
}
}
// 按条件查询学生的上机时间
void search_student() {
int option;
printf("请选择查询条件:\n");
printf("1. 学号\n");
printf("2. 姓名\n");
printf("3. 班级\n");
scanf("%d", &option);
char keyword[20];
printf("请输入查询关键词:");
scanf("%s", keyword);
printf("查询结果如下:\n");
printf("%-10s%-10s%-10s%-20s%-20s%-10s\n", "学号", "姓名", "班级", "起始时间", "下机时间", "上机时间");
for (int i = 0; i < num_students; i++) {
if ((option == 1 && strcmp(students[i].id, keyword) == 0) ||
(option == 2 && strcmp(students[i].name, keyword) == 0) ||
(option == 3 && strcmp(students[i].class, keyword) == 0)) {
printf("%-10s%-10s%-10s%-20d%-20d%-10.2f\n", students[i].id, students[i].name, students[i].class,
students[i].start_time, students[i].end_time, students[i].cost);
}
}
}
// 显示机器使用情况
void show_machine_status() {
printf("%-10s%-10s%-20s\n", "机器编号", "使用状态", "使用起始时间");
for (int i = 0; i < 10; i++) {
printf("%-10d%-10s%-20d\n", machines[i].id, machines[i].status == 0 ? "空闲" : "使用中", machines[i].start_time);
}
}
int main() {
// 初始化机器状态
for (int i = 0; i < 10; i++) {
machines[i].id = i + 1;
machines[i].status = 0;
machines[i].start_time = 0;
}
int option;
while (1) {
printf("\n请选择功能:\n");
printf("1. 添加学生信息\n");
printf("2. 计算每个下机学生的上机费用\n");
printf("3. 按条件查询学生的上机时间\n");
printf("4. 显示机器使用情况\n");
printf("5. 退出\n");
scanf("%d", &option);
switch (option) {
case 1:
add_student();
break;
case 2:
calc_all_costs();
break;
case 3:
search_student();
break;
case 4:
show_machine_status();
break;
case 5:
exit(0);
default:
printf("无效的选择,请重新输入!\n");
break;
}
}
return 0;
}
```
帮我编写一个C语言程序,机房收费管理系统 (1)输入功能:输入若干名学生的学号、班级、姓名、开始上机时间和结束上机时间。 (2)计算功能:计算每个学生的上机费用(计算公式:上机费用=(结束上机时间-开始上机时间)*收费标准,(以分钟为单位)) (3)修改功能:修改学生上机的个人档案(如:增添或删除) (4)查询功能:按条件(班级、学号、姓名)查询学生上机信息,并能显示查询学生的相应全部档案。
好的,以下是一个简单的C语言程序,实现机房收费管理系统的输入、计算、修改和查询功能,希望能够帮助到你:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 1000 // 最大学生数
#define FEE_RATE 0.1 // 收费标准(每分钟0.1元)
// 学生结构体
typedef struct {
char id[10]; // 学号
char class[10]; // 班级
char name[20]; // 姓名
int start_time; // 开始上机时间(以分钟为单位)
int end_time; // 结束上机时间(以分钟为单位)
double fee; // 上机费用
} Student;
// 学生数组
Student students[MAX_STUDENTS];
// 学生数
int student_count = 0;
// 输入学生信息
void input_student() {
char id[10], class[10], name[20];
int start_time, end_time;
printf("请输入学号、班级、姓名、开始上机时间和结束上机时间(以空格分隔):\n");
scanf("%s %s %s %d %d", id, class, name, &start_time, &end_time);
// 将输入的信息保存到学生数组中
strcpy(students[student_count].id, id);
strcpy(students[student_count].class, class);
strcpy(students[student_count].name, name);
students[student_count].start_time = start_time;
students[student_count].end_time = end_time;
student_count++;
}
// 计算学生上机费用
void calculate_fee(int index) {
int duration = students[index].end_time - students[index].start_time; // 上机时长
students[index].fee = duration * FEE_RATE; // 计算上机费用
}
// 修改学生信息
void modify_student() {
char id[10], class[10], name[20];
int start_time, end_time, index = -1;
printf("请输入要修改的学生学号:\n");
scanf("%s", id);
// 在学生数组中查找要修改的学生
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].id, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
return;
}
// 输入修改后的学生信息
printf("请输入学号、班级、姓名、开始上机时间和结束上机时间(以空格分隔):\n");
scanf("%s %s %s %d %d", id, class, name, &start_time, &end_time);
// 更新学生信息
strcpy(students[index].id, id);
strcpy(students[index].class, class);
strcpy(students[index].name, name);
students[index].start_time = start_time;
students[index].end_time = end_time;
calculate_fee(index); // 重新计算上机费用
printf("修改成功!\n");
}
// 查询学生信息
void query_student() {
char id[10], class[10], name[20];
int index = -1;
printf("请输入要查询的条件(学号、班级、姓名):\n");
scanf("%s", id);
// 在学生数组中查找符合条件的学生
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].id, id) == 0 ||
strcmp(students[i].class, id) == 0 ||
strcmp(students[i].name, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到符合条件的学生!\n");
return;
}
// 输出查询结果
printf("学号\t班级\t姓名\t开始时间\t结束时间\t上机费用\n");
printf("%s\t%s\t%s\t%d\t\t%d\t\t%.2f\n",
students[index].id, students[index].class, students[index].name,
students[index].start_time, students[index].end_time, students[index].fee);
}
int main() {
int choice;
while (1) {
printf("请选择功能:\n");
printf("1. 输入学生信息\n");
printf("2. 计算学生上机费用\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
input_student();
break;
case 2:
printf("请输入要计算费用的学生索引:\n");
int index;
scanf("%d", &index);
calculate_fee(index);
printf("计算成功!\n");
break;
case 3:
modify_student();
break;
case 4:
query_student();
break;
case 5:
exit(0);
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
这个程序实现了输入、计算、修改和查询四个功能,可以根据用户的选择执行相应的操作。希望能够满足你的需求,如有问题可以继续向我提问。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)