parent
d24cf6a1f5
commit
3de285a9c6
@ -0,0 +1,201 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define MAX_STUDENT_NUM 100
|
||||||
|
|
||||||
|
struct Student {
|
||||||
|
char* id;
|
||||||
|
char* clas;
|
||||||
|
char* name;
|
||||||
|
double score1;
|
||||||
|
double score2;
|
||||||
|
double score3;
|
||||||
|
double score;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Student stu[MAX_STUDENT_NUM];
|
||||||
|
int stu_num = 0;
|
||||||
|
|
||||||
|
void print_menu() {
|
||||||
|
printf("1.input\n");
|
||||||
|
printf("2.delete\n");
|
||||||
|
printf("3.select\n");
|
||||||
|
printf("4.order\n");
|
||||||
|
printf("5.output\n");
|
||||||
|
printf("6.quit\n");
|
||||||
|
printf("please input your option\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_student() {
|
||||||
|
while (1) {
|
||||||
|
printf("Id ");
|
||||||
|
stu[stu_num].id = (char*)malloc(sizeof(char) * 20);
|
||||||
|
scanf("%s", stu[stu_num].id);
|
||||||
|
printf("class ");
|
||||||
|
stu[stu_num].clas = (char*)malloc(sizeof(char) * 20);
|
||||||
|
scanf("%s", stu[stu_num].clas);
|
||||||
|
printf("name ");
|
||||||
|
stu[stu_num].name = (char*)malloc(sizeof(char) * 20);
|
||||||
|
scanf("%s", stu[stu_num].name);
|
||||||
|
printf("score1 ");
|
||||||
|
scanf("%lf", &stu[stu_num].score1);
|
||||||
|
printf("score2 ");
|
||||||
|
scanf("%lf", &stu[stu_num].score2);
|
||||||
|
printf("score3 ");
|
||||||
|
scanf("%lf", &stu[stu_num].score3);
|
||||||
|
stu[stu_num].score = stu[stu_num].score1 + stu[stu_num].score2 + stu[stu_num].score3;
|
||||||
|
stu_num++;
|
||||||
|
printf("continue? ");
|
||||||
|
char answer[10];
|
||||||
|
scanf("%s", answer);
|
||||||
|
if (strcmp(answer, "no") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void delete_student() {
|
||||||
|
int i, j;
|
||||||
|
while (1) {
|
||||||
|
printf("input student id or name to delete\n");
|
||||||
|
char query[20];
|
||||||
|
scanf("%s", query);
|
||||||
|
int deleted = 0;
|
||||||
|
for (i = 0; i < stu_num; i++) {
|
||||||
|
if (strcmp(query, stu[i].id) == 0 || strcmp(query, stu[i].name) == 0) {
|
||||||
|
free(stu[i].id);
|
||||||
|
free(stu[i].clas);
|
||||||
|
free(stu[i].name);
|
||||||
|
for (j = i; j < stu_num - 1; j++) {
|
||||||
|
stu[j] = stu[j + 1];
|
||||||
|
}
|
||||||
|
stu_num--;
|
||||||
|
deleted = 1;
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!deleted) {
|
||||||
|
printf("no such student\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (i = 0; i < stu_num; i++) {
|
||||||
|
printf("%s,%s,%s,%.1lf,%.1lf,%.1lf,%.1lf\n", stu[i].id, stu[i].clas, stu[i].name, stu[i].score1, stu[i].score2, stu[i].score3, stu[i].score);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("continue? ");
|
||||||
|
char answer[10];
|
||||||
|
scanf("%s", answer);
|
||||||
|
if (strcmp(answer, "no") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void select_student() {
|
||||||
|
int i;
|
||||||
|
while (1) {
|
||||||
|
printf("input student id or class to select\n");
|
||||||
|
char query[20];
|
||||||
|
scanf("%s", query);
|
||||||
|
double sum_score1 = 0.0, sum_score2 = 0.0, sum_score3 = 0.0, sum_score = 0.0;
|
||||||
|
int count = 0;
|
||||||
|
for (i = 0; i < stu_num; i++) {
|
||||||
|
if (strcmp(query, stu[i].id) == 0 || strcmp(query, stu[i].clas) == 0) {
|
||||||
|
sum_score1 += stu[i].score1;
|
||||||
|
sum_score2 += stu[i].score2;
|
||||||
|
sum_score3 += stu[i].score3;
|
||||||
|
sum_score += stu[i].score;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count == 0) {
|
||||||
|
printf("no such student\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("average score1: %.1lf\n", sum_score1 / count);
|
||||||
|
printf("average score2: %.1lf\n", sum_score2 / count);
|
||||||
|
printf("average score3: %.1lf\n", sum_score3 / count);
|
||||||
|
printf("average score: %.1lf\n", sum_score / count);
|
||||||
|
}
|
||||||
|
printf("continue? ");
|
||||||
|
char answer[10];
|
||||||
|
scanf("%s", answer);
|
||||||
|
if (strcmp(answer, "no") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void order_student() {
|
||||||
|
int i, j;
|
||||||
|
while (1) {
|
||||||
|
printf("input 1 to order by id or 2 to order by score\n");
|
||||||
|
int order_type;
|
||||||
|
scanf("%d", &order_type);
|
||||||
|
if (order_type != 1 && order_type != 2) {
|
||||||
|
printf("invalid order type\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (i = 0; i < stu_num; i++) {
|
||||||
|
for (j = i + 1; j < stu_num; j++) {
|
||||||
|
if ((order_type == 1 && strcmp(stu[i].id, stu[j].id) > 0) ||
|
||||||
|
(order_type == 2 && stu[i].score < stu[j].score)) {
|
||||||
|
struct Student temp = stu[i];
|
||||||
|
stu[i] = stu[j];
|
||||||
|
stu[j] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i = 0; i < stu_num; i++) {
|
||||||
|
printf("%s,%s,%s,%.1lf,%.1lf,%.1lf,%.1lf\n", stu[i].id, stu[i].clas, stu[i].name, stu[i].score1, stu[i].score2, stu[i].score3, stu[i].score);
|
||||||
|
}
|
||||||
|
printf("continue? ");
|
||||||
|
char answer[10];
|
||||||
|
scanf("%s", answer);
|
||||||
|
if (strcmp(answer, "no") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void output_student() {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; i < stu_num; i++) {
|
||||||
|
printf("%s,%s,%s,%.1lf,%.1lf,%.1lf,%.1lf\n", stu[i].id, stu[i].clas, stu[i].name, stu[i].score1, stu[i].score2, stu[i].score3, stu[i].score);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
while (1) {
|
||||||
|
print_menu();
|
||||||
|
int option;
|
||||||
|
scanf("%d", &option);
|
||||||
|
switch (option) {
|
||||||
|
case 1:
|
||||||
|
add_student();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
delete_student();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
select_student();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
order_student();
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
output_student();
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
printf("goodbye!\n");
|
||||||
|
exit(0);
|
||||||
|
default:
|
||||||
|
printf("invalid option\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in new issue