运用c语言解决
时间: 2023-10-26 17:16:51 浏览: 32
好的,这个需求可以通过使用C语言来实现。下面是一个简单的实现过程:
1. 定义结构体来存储学生信息,包括学号、专业、年级、姓名、上机时间和费用等字段。
```c
struct Student {
char id[20]; // 学号
char major[20]; // 专业
int grade; // 年级
char name[20]; // 姓名
int time; // 上机时间(单位:分钟)
float fee; // 上机费用
};
```
2. 定义一个数组来存储所有学生的信息,数组的大小为N。
```c
#define MAX_STUDENTS 100
struct Student students[MAX_STUDENTS];
int num_students = 0; // 当前学生数量
```
3. 定义一个函数来添加学生信息,该函数将会提示用户输入学号、专业、年级、姓名等信息。
```c
void addStudent() {
if (num_students >= MAX_STUDENTS) {
printf("系统已达到最大容量,无法添加更多学生!\n");
return;
}
struct Student s;
printf("请输入学号:");
scanf("%s", s.id);
printf("请输入专业:");
scanf("%s", s.major);
printf("请输入年级:");
scanf("%d", &s.grade);
printf("请输入姓名:");
scanf("%s", s.name);
s.time = 0;
s.fee = 0.0;
students[num_students++] = s;
printf("学生信息已添加成功!\n");
}
```
4. 定义一个函数来计算学生的上机费用,该函数将会提示用户输入学生的学号和上机时间。
```c
void calculateFee() {
printf("请输入学生的学号:");
char id[20];
scanf("%s", id);
int i;
for (i = 0; i < num_students; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("请输入上机时间(分钟):");
int time;
scanf("%d", &time);
float fee = time / 60.0;
if (time % 60 >= 30) {
fee += 0.5;
}
fee *= 1.0; // 价格默认为1元/小时
students[i].time += time;
students[i].fee += fee;
printf("学生 %s 的上机费用为 %.2f 元\n", students[i].name, fee);
return;
}
}
printf("未找到该学生的信息!\n");
}
```
5. 定义一个函数来查询学生的上机时间,该函数将会提示用户输入查询条件(班级、学号、姓名)。
```c
void queryTime() {
printf("请输入查询条件(班级、学号、姓名):");
char condition[20];
scanf("%s", condition);
int i;
for (i = 0; i < num_students; i++) {
if (strstr(students[i].id, condition) != NULL ||
strstr(students[i].major, condition) != NULL ||
strstr(students[i].name, condition) != NULL) {
printf("学生 %s 的上机时间为 %d 分钟\n", students[i].name, students[i].time);
}
}
}
```
6. 定义一个函数来打印机器使用情况的统计信息。
```c
void printUsage() {
int i;
printf("学号\t专业\t年级\t姓名\t上机时间(分钟)\t上机费用(元)\n");
for (i = 0; i < num_students; i++) {
printf("%s\t%s\t%d\t%s\t%d\t\t\t%.2f\n", students[i].id, students[i].major,
students[i].grade, students[i].name, students[i].time, students[i].fee);
}
}
```
7. 接下来,我们可以编写一个主函数来实现菜单功能,具体实现如下:
```c
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:
addStudent();
break;
case 2:
calculateFee();
break;
case 3:
queryTime();
break;
case 4:
printUsage();
break;
case 5:
printf("系统已退出!\n");
return 0;
default:
printf("无效的操作!\n");
break;
}
}
return 0;
}
```
这样,一个简单的学生上机计费系统就完成了。需要注意的是,上机费用的计算方式可能会因为具体的需求而有所不同,您可以根据自己的实际情况进行调整。