Compare commits
No commits in common. '3db6a85c34ee77f685432e3cebab107cbedd2178' and 'c0d413ace8887d643c09423a1b0a508349be1748' have entirely different histories.
3db6a85c34
...
c0d413ace8
@ -1,267 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
// ¶¨ÒåѧÉú½á¹¹Ìå
|
|
||||||
typedef struct Student {
|
|
||||||
char id[20];
|
|
||||||
char clas[20];
|
|
||||||
char name[20];
|
|
||||||
double score1, score2, score3, totalScore;
|
|
||||||
} Student;
|
|
||||||
|
|
||||||
#define MAX_STUDENTS 100
|
|
||||||
Student students[MAX_STUDENTS];
|
|
||||||
int count = 0;
|
|
||||||
|
|
||||||
void menu();
|
|
||||||
void input();
|
|
||||||
void delete();
|
|
||||||
void select();
|
|
||||||
void sort();
|
|
||||||
void output();
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
char option;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
menu();
|
|
||||||
printf("please input your option: ");
|
|
||||||
scanf(" %c", &option);
|
|
||||||
|
|
||||||
switch (option) {
|
|
||||||
case '1':
|
|
||||||
input();
|
|
||||||
break;
|
|
||||||
case '2':
|
|
||||||
delete();
|
|
||||||
break;
|
|
||||||
case '3':
|
|
||||||
select();
|
|
||||||
break;
|
|
||||||
case '4':
|
|
||||||
sort();
|
|
||||||
break;
|
|
||||||
case '5':
|
|
||||||
output();
|
|
||||||
break;
|
|
||||||
case '6':
|
|
||||||
printf("Exiting.\n");
|
|
||||||
return 0;
|
|
||||||
default:
|
|
||||||
printf("Invalid option.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void menu() {
|
|
||||||
printf("\n");
|
|
||||||
printf("1.input\n");
|
|
||||||
printf("2.delete\n");
|
|
||||||
printf("3.select\n");
|
|
||||||
printf("4.order\n");
|
|
||||||
printf("5.output\n");
|
|
||||||
printf("6.quit\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void input() {
|
|
||||||
while (1) {
|
|
||||||
if (count >= MAX_STUDENTS) {
|
|
||||||
printf("Maximum number of students reached.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Student buffer;
|
|
||||||
printf("Id: ");
|
|
||||||
scanf("%s", buffer.id);
|
|
||||||
printf("Class: ");
|
|
||||||
scanf("%s", buffer.clas);
|
|
||||||
printf("Name: ");
|
|
||||||
scanf("%s", buffer.name);
|
|
||||||
printf("Score1: ");
|
|
||||||
scanf("%lf", &buffer.score1);
|
|
||||||
printf("Score2: ");
|
|
||||||
scanf("%lf", &buffer.score2);
|
|
||||||
printf("Score3: ");
|
|
||||||
scanf("%lf", &buffer.score3);
|
|
||||||
|
|
||||||
buffer.totalScore = buffer.score1 + buffer.score2 + buffer.score3;
|
|
||||||
students[count++] = buffer;
|
|
||||||
|
|
||||||
char cont[4];
|
|
||||||
printf("continue? (yes/no): ");
|
|
||||||
scanf("%s", cont);
|
|
||||||
if (cont[0] == 'n') break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void delete() {
|
|
||||||
if (count == 0) {
|
|
||||||
printf("No students.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
char key[20];
|
|
||||||
printf("Enter student ID or name to delete: ");
|
|
||||||
scanf("%s", key);
|
|
||||||
|
|
||||||
int i, boo1 = 0;
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
if (strcmp(students[i].id, key) == 0 || strcmp(students[i].name, key) == 0) {
|
|
||||||
boo1 = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int j;
|
|
||||||
if (boo1) {
|
|
||||||
for (j = i; j < count - 1; j++) {
|
|
||||||
students[j] = students[j + 1];
|
|
||||||
}
|
|
||||||
count--;
|
|
||||||
printf("Student deleted successfully.\n");
|
|
||||||
output();
|
|
||||||
} else {
|
|
||||||
printf("Student not found.\n");
|
|
||||||
output();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// void select() {
|
|
||||||
// char key[20];
|
|
||||||
// printf("Enter student ID, name, or class to search: ");
|
|
||||||
// scanf("%s", key);
|
|
||||||
|
|
||||||
// int boo1 = 0;
|
|
||||||
// int i;
|
|
||||||
// for (i = 0; i < count; i++) {
|
|
||||||
// if (strcmp(students[i].id, key) == 0 || strcmp(students[i].name, key) == 0 || strcmp(students[i].clas, key) == 0) {
|
|
||||||
// printf("%s %s %s %.1f %.1f %.1f %.1f\n", students[i].id, students[i].clas, students[i].name,
|
|
||||||
// students[i].score1, students[i].score2, students[i].score3, students[i].totalScore);
|
|
||||||
// boo1 = 1;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (!boo1) {
|
|
||||||
// printf("No eligible student found.\n");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
void select() {
|
|
||||||
char input[50];
|
|
||||||
printf("Enter your query (e.g., 1 classNum-classNum, 2 idNum-idNum, 3 namePrefix*, 4 minScore, 5 classNum.idNum-idNum): ");
|
|
||||||
scanf(" %[^\n]", input);
|
|
||||||
|
|
||||||
int type = input[0] - '0';
|
|
||||||
char condition[50];
|
|
||||||
strcpy(condition, input + 2);
|
|
||||||
|
|
||||||
int boo1 = 0;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case 1: {
|
|
||||||
int startClass, endClass;
|
|
||||||
sscanf(condition, "%d-%d", &startClass, &endClass);
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
int class = atoi(students[i].clas);
|
|
||||||
if (class >= startClass && class <= endClass) {
|
|
||||||
printf("%s %s %s %.1f %.1f %.1f %.1f\n", students[i].id, students[i].clas, students[i].name,
|
|
||||||
students[i].score1, students[i].score2, students[i].score3, students[i].totalScore);
|
|
||||||
boo1 = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2: {
|
|
||||||
int startId, endId;
|
|
||||||
sscanf(condition, "%d-%d", &startId, &endId);
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
int id = atoi(students[i].id);
|
|
||||||
if (id >= startId && id <= endId) {
|
|
||||||
printf("%s %s %s %.1f %.1f %.1f %.1f\n", students[i].id, students[i].clas, students[i].name,
|
|
||||||
students[i].score1, students[i].score2, students[i].score3, students[i].totalScore);
|
|
||||||
boo1 = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3: {
|
|
||||||
char prefix[20];
|
|
||||||
sscanf(condition, "%s", prefix);
|
|
||||||
int prefixLen = strlen(prefix) - 1;
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
if (strncmp(students[i].name, prefix, prefixLen) == 0) {
|
|
||||||
printf("%s %s %s %.1f %.1f %.1f %.1f\n", students[i].id, students[i].clas, students[i].name,
|
|
||||||
students[i].score1, students[i].score2, students[i].score3, students[i].totalScore);
|
|
||||||
boo1 = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4: {
|
|
||||||
double minScore;
|
|
||||||
sscanf(condition, "%lf", &minScore);
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
if (students[i].totalScore >= minScore) {
|
|
||||||
printf("%s %s %s %.1f %.1f %.1f %.1f\n", students[i].id, students[i].clas, students[i].name,
|
|
||||||
students[i].score1, students[i].score2, students[i].score3, students[i].totalScore);
|
|
||||||
boo1 = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 5: {
|
|
||||||
int class, startId, endId;
|
|
||||||
sscanf(condition, "%d.%d-%d", &class, &startId, &endId);
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
int studentClass = atoi(students[i].clas);
|
|
||||||
int studentId = atoi(students[i].id);
|
|
||||||
|
|
||||||
if (studentClass == class && studentId >= startId && studentId <= endId) {
|
|
||||||
printf("%s %s %s %.1f %.1f %.1f %.1f\n", students[i].id, students[i].clas, students[i].name,
|
|
||||||
students[i].score1, students[i].score2, students[i].score3, students[i].totalScore);
|
|
||||||
boo1 = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
printf("Invalid query type.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!boo1) {
|
|
||||||
printf("No eligible student found.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sort() {
|
|
||||||
int i, j;
|
|
||||||
for (i = 0; i < count - 1; i++) {
|
|
||||||
for (j = i + 1; j < count; j++) {
|
|
||||||
if (strcmp(students[i].clas, students[j].clas) > 0 ||
|
|
||||||
(strcmp(students[i].clas, students[j].clas) == 0 && students[i].totalScore < students[j].totalScore)) {
|
|
||||||
Student temp = students[i];
|
|
||||||
students[i] = students[j];
|
|
||||||
students[j] = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printf("Students sorted successfully.\n");
|
|
||||||
output();
|
|
||||||
}
|
|
||||||
|
|
||||||
void output() {
|
|
||||||
if (count == 0) {
|
|
||||||
printf("No students to display.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
printf("%s %s %s %.1f %.1f %.1f %.1f\n", students[i].id, students[i].clas, students[i].name,
|
|
||||||
students[i].score1, students[i].score2, students[i].score3, students[i].totalScore);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in new issue