假定某校有N各学生,系统可以根据学生每次上机时记录学号和上机时间,下机时自动计算费用。要求: (1)系统以菜单方式工作 (2)系统可以设置上机每小时的价格,默认为每小时1元, (3)系统可以输入功能N名学生的学号、专业,年级、姓名。 (4)计算功能:计算每个下机学生的上机费用,每小时1元。 (上机费用=上机时间* 价格 ,不足半小时按1小时的价格减半计算,超过半小时但不足一小时的按1小时计算) (5)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。 (6)机器使用情况的显示(显示方式不限但要一目了然)用c语言简单表达
时间: 2023-12-23 15:02:07 浏览: 64
好的,我会根据您的要求进行回答。以下是一个简单的C语言程序,实现了您所要求的功能:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
char id[10];
char name[20];
char major[20];
char grade[10];
int time;
};
int main() {
// 定义变量
int choice, price = 1, n = 0;
struct Student students[100];
// 主菜单
while (1) {
printf("\n--------------\n");
printf("1. 设置上机价格\n");
printf("2. 录入学生信息\n");
printf("3. 计算学生上机费用\n");
printf("4. 查询学生上机时间\n");
printf("5. 显示机器使用情况\n");
printf("6. 退出系统\n");
printf("请选择功能:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入每小时价格:");
scanf("%d", &price);
printf("设置成功!\n");
break;
case 2:
printf("请输入学生学号:");
scanf("%s", students[n].id);
printf("请输入学生姓名:");
scanf("%s", students[n].name);
printf("请输入学生专业:");
scanf("%s", students[n].major);
printf("请输入学生年级:");
scanf("%s", students[n].grade);
students[n].time = 0;
n++;
printf("录入成功!\n");
break;
case 3:
printf("请输入学生学号:");
char id[10];
scanf("%s", id);
for (int i = 0; i < n; i++) {
if (strcmp(students[i].id, id) == 0) {
int hours = students[i].time / 60;
int minutes = students[i].time % 60;
int cost = hours * price;
if (minutes >= 30 && minutes < 60) {
cost += price;
}
printf("%s的上机费用为%d元\n", students[i].name, cost);
students[i].time = 0;
break;
}
}
break;
case 4:
printf("请输入查询条件(班级、学号、姓名):");
char keyword[20];
scanf("%s", keyword);
printf("学号\t姓名\t专业\t年级\t上机时间\n");
for (int i = 0; i < n; i++) {
if (strstr(students[i].id, keyword) != NULL ||
strstr(students[i].name, keyword) != NULL ||
strstr(students[i].major, keyword) != NULL ||
strstr(students[i].grade, keyword) != NULL) {
int hours = students[i].time / 60;
int minutes = students[i].time % 60;
printf("%s\t%s\t%s\t%s\t%d小时%d分\n",
students[i].id, students[i].name, students[i].major,
students[i].grade, hours, minutes);
}
}
break;
case 5:
printf("机器使用情况如下:\n");
printf("学号\t姓名\t专业\t年级\t上机时间\n");
for (int i = 0; i < n; i++) {
int hours = students[i].time / 60;
int minutes = students[i].time % 60;
printf("%s\t%s\t%s\t%s\t%d小时%d分\n",
students[i].id, students[i].name, students[i].major,
students[i].grade, hours, minutes);
}
break;
case 6:
printf("谢谢使用!\n");
return 0;
default:
printf("输入有误,请重新选择!\n");
break;
}
}
}
```
该程序使用了结构体来存储学生的信息,通过菜单方式实现了上机价格的设置、学生信息的录入、学生上机费用的计算、学生上机时间的查询以及机器使用情况的显示等功能。
阅读全文