查询C表中(每)各种学分及相应的课程门数
时间: 2023-12-16 13:04:50 浏览: 47
可以使用如下的SQL查询语句:
```sql
SELECT 学分, COUNT(*) AS 课程门数
FROM C
GROUP BY 学分;
```
该查询语句会对表C中的每一种学分进行分组,并统计每种学分对应的课程门数。最终的查询结果会显示每种学分以及相应的课程门数。
相关问题
用C语言实现一个课程管理系统,主要实现课程编号、名称、学时、学分的录入、修改、删除、查询
好的,下面是一个简单的课程管理系统的C语言实现,包括课程的录入、修改、删除和查询操作。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COURSES 100 // 最大课程数
typedef struct course {
char id[10]; // 课程编号
char name[20]; // 课程名称
int hours; // 学时
float credit; // 学分
} Course;
Course courses[MAX_COURSES]; // 课程数组
int course_count = 0; // 当前课程数
// 课程录入
void add_course() {
Course c;
printf("请输入课程信息:\n");
printf("编号:");
scanf("%s", c.id);
printf("名称:");
scanf("%s", c.name);
printf("学时:");
scanf("%d", &c.hours);
printf("学分:");
scanf("%f", &c.credit);
courses[course_count++] = c;
printf("课程添加成功!\n");
}
// 课程修改
void update_course() {
char id[10];
int i;
printf("请输入要修改的课程编号:");
scanf("%s", id);
for (i = 0; i < course_count; i++) {
if (strcmp(id, courses[i].id) == 0) {
printf("请输入修改后的课程信息:\n");
printf("名称:");
scanf("%s", courses[i].name);
printf("学时:");
scanf("%d", &courses[i].hours);
printf("学分:");
scanf("%f", &courses[i].credit);
printf("课程修改成功!\n");
return;
}
}
printf("没有找到该课程!\n");
}
// 课程删除
void delete_course() {
char id[10];
int i, j;
printf("请输入要删除的课程编号:");
scanf("%s", id);
for (i = 0; i < course_count; i++) {
if (strcmp(id, courses[i].id) == 0) {
for (j = i; j < course_count - 1; j++) {
courses[j] = courses[j + 1];
}
course_count--;
printf("课程删除成功!\n");
return;
}
}
printf("没有找到该课程!\n");
}
// 课程查询
void search_course() {
char id[10];
int i;
printf("请输入要查询的课程编号:");
scanf("%s", id);
for (i = 0; i < course_count; i++) {
if (strcmp(id, courses[i].id) == 0) {
printf("编号\t名称\t学时\t学分\n");
printf("%s\t%s\t%d\t%.1f\n", courses[i].id, courses[i].name, courses[i].hours, courses[i].credit);
return;
}
}
printf("没有找到该课程!\n");
}
int main() {
int choice;
while (1) {
printf("请输入操作代码:\n");
printf("1. 录入课程\n");
printf("2. 修改课程\n");
printf("3. 删除课程\n");
printf("4. 查询课程\n");
printf("0. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_course();
break;
case 2:
update_course();
break;
case 3:
delete_course();
break;
case 4:
search_course();
break;
case 0:
printf("程序已退出!\n");
return 0;
default:
printf("无效的操作代码!\n");
}
}
return 0;
}
```
这个程序使用结构体来存储课程信息,使用数组来存储多个课程,然后通过循环和字符串比较来实现查询、修改和删除操作。需要注意的是,这个程序没有做任何的输入合法性检查,实际应用中需要根据具体情况来增加相应的检查和处理。
用sql sever首先创建学生信息表(学号,姓名,性别,年龄,院系)和课程信息表(课程号,课程名,课程学分)以及学生课程信息表(学号,课程号,成绩) 之后创建一个用户自定义函数,使用上述三个表,功能为产生一张有关学生成绩统计的报表。该报表显示每一门课程的课程号、课程名、选修人数、本门最高分、最低分和平均分。调用这个函数,生成相应的报表并给用户浏览。(多语句表值函数)
好的,我可以帮你解答这个问题。以下是 SQL Server 中创建该报表的用户自定义函数的示例代码:
```
CREATE FUNCTION fn_GenerateGradeReport()
RETURNS @ReportTable TABLE (
CourseID INT,
CourseName VARCHAR(50),
Enrollment INT,
MaxGrade DECIMAL(5,2),
MinGrade DECIMAL(5,2),
AvgGrade DECIMAL(5,2)
)
AS
BEGIN
INSERT INTO @ReportTable (CourseID, CourseName, Enrollment, MaxGrade, MinGrade, AvgGrade)
SELECT
c.CourseID,
c.CourseName,
COUNT(sc.StudentID) AS Enrollment,
MAX(sc.Grade) AS MaxGrade,
MIN(sc.Grade) AS MinGrade,
AVG(sc.Grade) AS AvgGrade
FROM
Course c
LEFT JOIN StudentCourse sc ON c.CourseID = sc.CourseID
GROUP BY
c.CourseID,
c.CourseName
RETURN
END
```
其中,上述代码假设已经创建了学生信息表 Student,课程信息表 Course 和学生课程信息表 StudentCourse,且它们之间的关系是:
- 学生信息表 Student:StudentID (学号), StudentName (姓名), Gender (性别), Age (年龄), Department (院系)
- 课程信息表 Course:CourseID (课程号), CourseName (课程名), Credit (课程学分)
- 学生课程信息表 StudentCourse:StudentID (学号), CourseID (课程号), Grade (成绩)
函数 fn_GenerateGradeReport() 利用多表联结和聚合函数,计算每门课程的选修人数、最高分、最低分和平均分,并将结果插入到表值变量 @ReportTable 中。最后,函数返回 @ReportTable,用户可以通过查询该表值变量来查看报表。
调用该函数的语句如下所示:
```
SELECT * FROM fn_GenerateGradeReport()
```
当你执行该语句时,将会生成一张包含每门课程的课程号、课程名、选修人数、本门最高分、最低分和平均分的报表,并将其返回给用户供其浏览。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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://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)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)