查询出c语言课程成绩前5名的学生的学号姓名和所在系
时间: 2023-09-02 16:02:50 浏览: 101
要查询出C语言课程成绩前五名的学生的学号、姓名和所在系,首先需要有存储学生信息的数据库或数据表。在该数据库或数据表中,每个学生应该有相应的学号、姓名以及所在系的字段。
查询过程可以使用SQL语句来完成。假设学生信息存储在名为"students"的数据表中,其中包含字段"学号"、"姓名"和"所在系",成绩信息存储在名为"scores"的数据表中,其中包含字段"学号"和"C语言课程成绩"。
查询的SQL语句如下:
```
SELECT s.学号, s.姓名, s.所在系
FROM students s
JOIN scores c ON s.学号 = c.学号
WHERE c.课程名称 = 'C语言'
ORDER BY c.成绩 DESC
LIMIT 5;
```
以上SQL语句的含义是:从"students"数据表和"scores"数据表中选取学号、姓名和所在系字段的记录,通过学号字段进行连接操作。筛选条件为课程名称为"C语言",按照成绩字段降序排列,并取前五个结果。
执行以上SQL语句后,将会返回查询结果,包括学号、姓名和所在系的信息,这些信息是C语言课程成绩前五名学生的学号、姓名和所在系。
相关问题
用c语言设计和实现一个简单的学生管理系统,具有以下功能: 1. 学生信息录入:可以录入学生的基本信息,包括学号、姓名、性别、年龄、所在院系等信息。要求支持多名学生信息的录入。 2. 学生信息查询:可以按学号或姓名进行学生信息的查询,找到相应学生的基本信息。 3. 学生成绩录入:可以为每名学生录入多门课程的成绩,包括课程名称、学分、成绩等。 4. 学生成绩查询:可以按学号和课程名称查询某名学生的指定课程成绩。 5. 课程平均分查询:可以查询每门课程的平均成绩。 6. 学生总分统计:可以统计每名学生的总学分和总成绩,以及根据总成绩计算学生的平均分。 该系统需要提供一个菜单界面,让用户选择不同的功能;需要定义学生信息结构体和成绩结构体。
好的,以下是一个简单的学生管理系统的C语言实现,包括上述所述的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生信息结构体
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
char sex[5]; // 性别
int age; // 年龄
char department[20]; // 所在院系
} Student;
// 定义课程成绩结构体
typedef struct {
char course_name[20]; // 课程名称
int credit; // 学分
int score; // 成绩
} Course;
// 定义全局变量
int student_count = 0; // 学生数量
Student students[100]; // 学生信息数组
Course courses[100][10]; // 课程成绩数组, 最多10门课程
// 函数声明
void print_menu();
void add_student();
void search_student();
void add_score();
void search_score();
void print_course_average();
void print_student_statistics();
// 主函数
int main() {
int choice;
do {
print_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
search_student();
break;
case 3:
add_score();
break;
case 4:
search_score();
break;
case 5:
print_course_average();
break;
case 6:
print_student_statistics();
break;
case 0:
printf("感谢使用,再见!\n");
break;
default:
printf("无效选项,请重新选择!\n");
break;
}
} while (choice != 0);
return 0;
}
// 打印菜单
void print_menu() {
printf("\n===== 学生管理系统 =====\n");
printf("1. 学生信息录入\n");
printf("2. 学生信息查询\n");
printf("3. 学生成绩录入\n");
printf("4. 学生成绩查询\n");
printf("5. 课程平均分查询\n");
printf("6. 学生总分统计\n");
printf("0. 退出\n");
printf("========================\n");
printf("请选择:");
}
// 添加学生信息
void add_student() {
printf("请输入学生信息:\n");
printf("学号:");
scanf("%s", students[student_count].id);
printf("姓名:");
scanf("%s", students[student_count].name);
printf("性别:");
scanf("%s", students[student_count].sex);
printf("年龄:");
scanf("%d", &students[student_count].age);
printf("院系:");
scanf("%s", students[student_count].department);
student_count++;
printf("学生信息添加成功!\n");
}
// 查询学生信息
void search_student() {
int option;
printf("请选择查询方式:\n");
printf("1. 按学号查询\n");
printf("2. 按姓名查询\n");
printf("请选择:");
scanf("%d", &option);
switch (option) {
case 1:
printf("请输入要查询的学生学号:");
char id[20];
scanf("%s", id);
for (int i = 0; i < student_count; i++) {
if (strcmp(id, students[i].id) == 0) {
printf("学号\t姓名\t性别\t年龄\t所在院系\n");
printf("%s\t%s\t%s\t%d\t%s\n", students[i].id, students[i].name, students[i].sex, students[i].age, students[i].department);
return;
}
}
printf("未找到该学生!\n");
break;
case 2:
printf("请输入要查询的学生姓名:");
char name[20];
scanf("%s", name);
for (int i = 0; i < student_count; i++) {
if (strcmp(name, students[i].name) == 0) {
printf("学号\t姓名\t性别\t年龄\t所在院系\n");
printf("%s\t%s\t%s\t%d\t%s\n", students[i].id, students[i].name, students[i].sex, students[i].age, students[i].department);
return;
}
}
printf("未找到该学生!\n");
break;
default:
printf("无效选项,请重新选择!\n");
break;
}
}
// 添加学生成绩
void add_score() {
printf("请输入学生学号:");
char id[20];
scanf("%s", id);
int index = -1; // 记录该学生在数组中的下标
for (int i = 0; i < student_count; i++) {
if (strcmp(id, students[i].id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
return;
}
printf("请输入课程数目:");
int course_count;
scanf("%d", &course_count);
for (int i = 0; i < course_count; i++) {
printf("请输入第%d门课程的信息:\n", i+1);
printf("课程名称:");
scanf("%s", courses[index][i].course_name);
printf("学分:");
scanf("%d", &courses[index][i].credit);
printf("成绩:");
scanf("%d", &courses[index][i].score);
}
printf("学生成绩添加成功!\n");
}
// 查询学生成绩
void search_score() {
printf("请输入学生学号:");
char id[20];
scanf("%s", id);
int index = -1; // 记录该学生在数组中的下标
for (int i = 0; i < student_count; i++) {
if (strcmp(id, students[i].id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
return;
}
printf("请输入要查询的课程名称:");
char course_name[20];
scanf("%s", course_name);
for (int i = 0; i < 10; i++) {
if (strcmp(courses[index][i].course_name, course_name) == 0) {
printf("学号\t姓名\t课程\t学分\t成绩\n");
printf("%s\t%s\t%s\t%d\t%d\n", students[index].id, students[index].name, courses[index][i].course_name, courses[index][i].credit, courses[index][i].score);
return;
}
}
printf("未找到该课程!\n");
}
// 查询课程平均分
void print_course_average() {
printf("请输入要查询的课程名称:");
char course_name[20];
scanf("%s", course_name);
int count = 0; // 统计选修该课程的学生数目
int total_score = 0; // 统计选修该课程的学生总成绩
for (int i = 0; i < student_count; i++) {
for (int j = 0; j < 10; j++) {
if (strcmp(courses[i][j].course_name, course_name) == 0) {
count++;
total_score += courses[i][j].score;
break;
}
}
}
if (count == 0) {
printf("无学生选修该课程!\n");
return;
}
double average_score = (double)total_score / count;
printf("%s课程的平均成绩为:%.2f\n", course_name, average_score);
}
// 查询学生总分统计
void print_student_statistics() {
printf("请输入要查询的学生学号:");
char id[20];
scanf("%s", id);
int index = -1; // 记录该学生在数组中的下标
for (int i = 0; i < student_count; i++) {
if (strcmp(id, students[i].id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
return;
}
int total_credit = 0; // 统计学生总学分
int total_score = 0; // 统计学生总成绩
for (int i = 0; i < 10; i++) {
if (courses[index][i].score != 0) { // 成绩为0表示该门课程未选修
total_credit += courses[index][i].credit;
total_score += courses[index][i].score;
}
}
double average_score = (double)total_score / total_credit;
printf("该学生的总学分为:%d,总成绩为:%d,平均成绩为:%.2f\n", total_credit, total_score, average_score);
}
```
这个程序定义了 `Student` 结构体和 `Course` 结构体来存储学生基本信息和课程成绩信息。使用全局变量 `students` 和 `courses` 数组来存储所有学生的信息和课程成绩。程序通过菜单来提供不同的功能,例如添加学生信息、查询学生信息、添加学生成绩、查询学生成绩、查询课程平均分和查询学生总分统计。在每个功能函数中,程序通过遍历数组来查找学生和成绩信息,并进行相应的操作。
用c语言写:1.学生信息录入:可以录入学生的基本信息,包括学号、姓名、性别、年龄、所在院系等信息。要求支持多名学生信息的录入。2.学生信息查询:可以按学号或姓名进行学生信息的查询,找到相应学生的基本信息。3.学生成绩录入:可以为每名学生录入多门课程的成绩,包括课程名称、学分、成绩等。4.学生成绩查询:可以按学号和课程名称查询某名学生的指定课程成绩。5.课程平均分查询:可以查询每门课程的平均成绩。6.学生总分统计:可以统计每名学生的总学分和总成绩,以及根据总成绩计算学生的平均分。该系统需要提供一个菜单界面,让用户选择不同的功能;需要定义学生信息结构体和成绩结构体、考虑利用数据文件等存储数据
下面是用C语言实现学生信息管理系统的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
#define MAX_COURSE_NUM 10
#define MAX_NAME_LENGTH 20
#define MAX_DEPT_LENGTH 20
#define MAX_COURSE_LENGTH 20
typedef struct student_info {
char id[10];
char name[MAX_NAME_LENGTH];
char gender[5];
int age;
char dept[MAX_DEPT_LENGTH];
float score[MAX_COURSE_NUM];
} StudentInfo;
typedef struct course_info {
char name[MAX_COURSE_LENGTH];
int credit;
float score[MAX_STUDENT_NUM];
} CourseInfo;
int student_num = 0;
StudentInfo students[MAX_STUDENT_NUM];
int course_num = 0;
CourseInfo courses[MAX_COURSE_NUM];
void print_menu() {
printf("====================================\n");
printf("1. 学生信息录入\n");
printf("2. 学生信息查询\n");
printf("3. 学生成绩录入\n");
printf("4. 学生成绩查询\n");
printf("5. 课程平均分查询\n");
printf("6. 学生总分统计\n");
printf("0. 退出系统\n");
printf("====================================\n");
}
void add_student_info() {
if (student_num >= MAX_STUDENT_NUM) {
printf("学生信息已满,无法添加!\n");
return;
}
printf("请输入学生学号:");
scanf("%s", students[student_num].id);
printf("请输入学生姓名:");
scanf("%s", students[student_num].name);
printf("请输入学生性别:");
scanf("%s", students[student_num].gender);
printf("请输入学生年龄:");
scanf("%d", &students[student_num].age);
printf("请输入学生所在院系:");
scanf("%s", students[student_num].dept);
student_num++;
printf("学生信息添加成功!\n");
}
void query_student_info() {
int choice;
printf("请选择查询方式:\n");
printf("1. 按学号查询\n");
printf("2. 按姓名查询\n");
scanf("%d", &choice);
if (choice == 1) {
char id[10];
printf("请输入学生学号:");
scanf("%s", id);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("学号:%s 姓名:%s 性别:%s 年龄:%d 院系:%s\n",
students[i].id, students[i].name, students[i].gender,
students[i].age, students[i].dept);
return;
}
}
printf("未查询到学号为%s的学生!\n", id);
} else if (choice == 2) {
char name[MAX_NAME_LENGTH];
printf("请输入学生姓名:");
scanf("%s", name);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("学号:%s 姓名:%s 性别:%s 年龄:%d 院系:%s\n",
students[i].id, students[i].name, students[i].gender,
students[i].age, students[i].dept);
}
}
} else {
printf("输入有误,请重新选择!\n");
}
}
void add_course_info() {
if (course_num >= MAX_COURSE_NUM) {
printf("课程信息已满,无法添加!\n");
return;
}
printf("请输入课程名称:");
scanf("%s", courses[course_num].name);
printf("请输入课程学分:");
scanf("%d", &courses[course_num].credit);
for (int i = 0; i < student_num; i++) {
printf("请输入%s课程成绩:", courses[course_num].name);
scanf("%f", &courses[course_num].score[i]);
students[i].score[course_num] = courses[course_num].score[i];
}
course_num++;
printf("课程信息添加成功!\n");
}
void query_course_info() {
char id[10], name[MAX_COURSE_LENGTH];
printf("请输入学生学号:");
scanf("%s", id);
printf("请输入课程名称:");
scanf("%s", name);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, id) == 0) {
for (int j = 0; j < course_num; j++) {
if (strcmp(courses[j].name, name) == 0) {
printf("%s课程成绩为%.2f\n", courses[j].name,
courses[j].score[i]);
return;
}
}
printf("未查询到%s课程的成绩!\n", name);
return;
}
}
printf("未查询到学号为%s的学生!\n", id);
}
void query_course_avg() {
for (int i = 0; i < course_num; i++) {
float sum = 0;
int count = 0;
for (int j = 0; j < student_num; j++) {
if (courses[i].score[j] != 0) {
sum += courses[i].score[j];
count++;
}
}
printf("%s课程平均成绩为%.2f\n", courses[i].name, sum / count);
}
}
void query_student_total() {
for (int i = 0; i < student_num; i++) {
float total_score = 0;
int total_credit = 0;
for (int j = 0; j < course_num; j++) {
total_score += students[i].score[j] * courses[j].credit;
total_credit += courses[j].credit;
}
printf("学号:%s 姓名:%s 总学分:%d 总成绩:%.2f 平均成绩:%.2f\n",
students[i].id, students[i].name, total_credit, total_score,
total_score / total_credit);
}
}
int main() {
int choice;
while (1) {
print_menu();
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student_info();
break;
case 2:
query_student_info();
break;
case 3:
add_course_info();
break;
case 4:
query_course_info();
break;
case 5:
query_course_avg();
break;
case 6:
query_student_total();
break;
case 0:
printf("谢谢使用,再见!\n");
return 0;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
该程序实现了学生信息录入、学生信息查询、学生成绩录入、学生成绩查询、课程平均分查询和学生总分统计等功能。用户可以通过菜单界面选择不同的功能。学生信息和成绩信息分别存储在一个数组中,通过遍历数组实现查询和统计功能。同时,为了方便存储和读取数据,可以考虑使用文件来保存数据。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)