cize課程表
① C語言中,編寫一個課程表查詢程序,那個星期用什麼來定義
用結構類型來定義!
裡面的星期用enum類型!把所有的星期都列出來
② 求用c語言寫一個課程表
需要的可以私聊
③ Student 學生表 ,Course 課程表 ,SC成績表 ,Teacher 教師表,sql操作運用
建表語句
CREATE TABLE student
(
s# INT,
sname nvarchar(32),
sage INT,
ssex nvarchar(8)
)
CREATE TABLE course
(
c# INT,
cname nvarchar(32),
t# INT
)
CREATE TABLE sc
(
s# INT,
c# INT,
score INT
)
CREATE TABLE teacher
(
t# INT,
tname nvarchar(16)
)
插入測試數據語句
insert into Student select 1,N'劉一',18,N'男' union all
select 2,N'錢二',19,N'女' union all
select 3,N'張三',17,N'男' union all
select 4,N'李四',18,N'女' union all
select 5,N'王五',17,N'男' union all
select 6,N'趙六',19,N'女'
insert into Teacher select 1,N'葉平' union all
select 2,N'賀高' union all
select 3,N'楊艷' union all
select 4,N'周磊'
insert into Course select 1,N'語文',1 union all
select 2,N'數學',2 union all
select 3,N'英語',3 union all
select 4,N'物理',4
insert into SC
select 1,1,56 union all
select 1,2,78 union all
select 1,3,67 union all
select 1,4,58 union all
select 2,1,79 union all
select 2,2,81 union all
select 2,3,92 union all
select 2,4,68 union all
select 3,1,91 union all
select 3,2,47 union all
select 3,3,88 union all
select 3,4,56 union all
select 4,2,88 union all
select 4,3,90 union all
select 4,4,93 union all
select 5,1,46 union all
select 5,3,78 union all
select 5,4,53 union all
select 6,1,35 union all
select 6,2,68 union all
select 6,4,71
問題
問題: 1、查詢「001」課程比「002」課程成績高的所有學生的學號; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查詢平均成績大於60分的同學的學號和平均成績; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查詢所有同學的學號、姓名、選課數、總成績; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查詢姓「李」的老師的個數; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查詢沒學過「葉平」老師課的同學的學號、姓名; select Student.S#,Student.Sname from Student where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='葉平'); 6、查詢學過「001」並且也學過編號「002」課程的同學的學號、姓名; select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002'); 7、查詢學過「葉平」老師所教的所有課的同學的學號、姓名; select S#,Sname from Student where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='葉平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='葉平')); 8、查詢課程編號「002」的成績比課程編號「001」課程低的所有同學的學號、姓名; Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score; 9、查詢所有課程成績小於60分的同學的學號、姓名; select S#,Sname from Student where S# not in (select S.S# from Student AS S,SC where S.S#=SC.S# and score>60); 10、查詢沒有學全所有課的同學的學號、姓名; select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course); 11、查詢至少有一門課與學號為「1001」的同學所學相同的同學的學號和姓名; select distinct S#,Sname from Student,SC where Student.S#=SC.S# and SC.C# in (select C# from SC where S#='1001'); 12、查詢至少學過學號為「001」同學所有一門課的其他同學學號和姓名; select distinct SC.S#,Sname from Student,SC where Student.S#=SC.S# and C# in (select C# from SC where S#='001'); 13、把「SC」表中「葉平」老師教的課的成績都更改為此課程的平均成績; update SC set score=(select avg(SC_2.score) from SC SC_2 where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='葉平'); 14、查詢和「1002」號的同學學習的課程完全相同的其他同學學號和姓名; select S# from SC where C# in (select C# from SC where S#='1002') group by S# having count(*)=(select count(*) from SC where S#='1002'); 15、刪除學習「葉平」老師課的SC表記錄; Delect SC from course ,Teacher where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='葉平'; 16、向SC表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號「003」課程的同學學號、2、 號課的平均成績; Insert SC select S#,'002',(Select avg(score) from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002'); 17、按平均成績從高到低顯示所有學生的「資料庫」、「企業管理」、「英語」三門的課程成績,按如下形式顯示: 學生ID,,資料庫,企業管理,英語,有效課程數,有效平均分 SELECT S# as 學生ID ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 資料庫 ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企業管理 ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英語 ,COUNT(*) AS 有效課程數, AVG(t.score) AS 平均成績 FROM SC AS t GROUP BY S# ORDER BY avg(t.score) 18、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分 SELECT L.C# As 課程ID,L.score AS 最高分,R.score AS 最低分 FROM SC L ,SC AS R WHERE L.C# = R.C# and L.score = (SELECT MAX(IL.score) FROM SC AS IL,Student AS IM WHERE L.C# = IL.C# and IM.S#=IL.S# GROUP BY IL.C#) AND R.Score = (SELECT MIN(IR.score) FROM SC AS IR WHERE R.C# = IR.C# GROUP BY IR.C# );
自己寫的:select c# ,max(score)as 最高分 ,min(score) as 最低分 from dbo.sc group by c# 19、按各科平均成績從低到高和及格率的百分數從高到低順序 SELECT t.C# AS 課程號,max(course.Cname)AS 課程名,isnull(AVG(score),0) AS 平均成績 ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分數 FROM SC T,Course where t.C#=course.C# GROUP BY t.C# ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC 20、查詢如下課程平均成績和及格率的百分數(用"1行"顯示): 企業管理(001),馬克思(002),OO&UML (003),資料庫(004) SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企業管理平均分 ,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企業管理及格百分數 ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 馬克思平均分 ,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 馬克思及格百分數 ,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分 ,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分數 ,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 資料庫平均分 ,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 資料庫及格百分數 FROM SC
21、查詢不同老師所教不同課程平均分從高到低顯示
SELECT max(Z.T#) AS 教師ID,MAX(Z.Tname) AS 教師姓名,C.C# AS 課程ID,MAX(C.Cname) AS 課程名稱,AVG(Score) AS 平均成績
FROM SC AS T,Course AS C ,Teacher AS Z
where T.C#=C.C# and C.T#=Z.T#
GROUP BY C.C#
ORDER BY AVG(Score) DESC
22、查詢如下課程成績第 3 名到第 6 名的學生成績單:企業管理(001),馬克思(002),UML (003),資料庫(004)
[學生ID],[學生姓名],企業管理,馬克思,UML,資料庫,平均成績
SELECT DISTINCT top 3
SC.S# As 學生學號,
Student.Sname AS 學生姓名 ,
T1.score AS 企業管理,
T2.score AS 馬克思,
T3.score AS UML,
T4.score AS 資料庫,
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 總分
FROM Student,SC LEFT JOIN SC AS T1
ON SC.S# = T1.S# AND T1.C# = '001'
LEFT JOIN SC AS T2
ON SC.S# = T2.S# AND T2.C# = '002'
LEFT JOIN SC AS T3
ON SC.S# = T3.S# AND T3.C# = '003'
LEFT JOIN SC AS T4
ON SC.S# = T4.S# AND T4.C# = '004'
WHERE student.S#=SC.S# and
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
NOT IN
(SELECT
DISTINCT
TOP 15 WITH TIES
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
FROM sc
LEFT JOIN sc AS T1
ON sc.S# = T1.S# AND T1.C# = 'k1'
LEFT JOIN sc AS T2
ON sc.S# = T2.S# AND T2.C# = 'k2'
LEFT JOIN sc AS T3
ON sc.S# = T3.S# AND T3.C# = 'k3'
LEFT JOIN sc AS T4
ON sc.S# = T4.S# AND T4.C# = 'k4'
ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);
23、統計列印各科成績,各分數段人數:課程ID,課程名稱,[100-85],[85-70],[70-60],[ <60]
SELECT SC.C# as 課程ID, Cname as 課程名稱
,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]
,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]
,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]
,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]
FROM SC,Course
where SC.C#=Course.C#
GROUP BY SC.C#,Cname;
24、查詢學生平均成績及其名次
SELECT 1+(SELECT COUNT( distinct 平均成績)
FROM (SELECT S#,AVG(score) AS 平均成績
FROM SC
GROUP BY S#
) AS T1
WHERE 平均成績 > T2.平均成績) as 名次,
S# as 學生學號,平均成績
FROM (SELECT S#,AVG(score) 平均成績
FROM SC
GROUP BY S#
) AS T2
ORDER BY 平均成績 desc;
原文地址:http://www.cnblogs.com/qixuejia/p/3637735.html
④ 資料庫中包含學生表、課程表、學生選課表3個表,分別是什麼
1、SELECT 課程號, 課程名, 課程學分
FROM 課程 WHERE 課程號 IN(SELECT 課程號
FROM 選課
GROUP BY 課程號
HAVING COUNT(學生號) BETWEEN 2 AND 4 )
2、SELECT MAX(成績) - MIN(成績) AS 分數之差
FROM 選課
倘若要每門課程相差
SELECT 課程, MAX(成績) - MIN(成績) AS 分數之差
FROM 選課
GROUP BY 課程
⑤ 給定資料庫中,包括「學生表」,「課程表」,「選課表」等三個數據表,表結構如下: 學生表:學號(C,6),姓
用LINQ(語言集成查詢)完成你說的這些任務很方便,具體的細節問題還得你自己做。下面舉出兩個例子供你參考,這兩個例子用數組代替資料庫,對資料庫也可用同樣的方法。
例1,用bool值作關鍵字區分兩組的結果,注意group子句中的表達式產生的結果。
public class Student
{
public string Name { get; set; }
public int ID { get; set; }
public List<int> Scores;
}
public static List<Student> GetStudents()
{
//實例化數據源,注意各成員內部成績序列的初始化
List<Student> students = new List<Student>
{
new Student {Name="張勇", ID=1, Scores= new List<int> {97, 72, 81, 60}},
new Student {Name="王磊", ID=2 Scores= new List<int> {75, 84, 91, 39}},
new Student {Name="孫敏", ID=3, Scores= new List<int> {88, 94, 65, 85}},
new Student {Name="劉曉", ID=4, Scores= new List<int> {97, 89, 85, 82}},
new Student {Name="揚帆", ID=5, Scores= new List<int> {35, 72, 91, 70}}
};
return students;
}
static void Main()
{
List<Student> students = GetStudents();
//用true或false分組,查詢變數是IEnumerable<IGrouping<bool, Student>>類型
var booleanGroupQuery = from student in students
group student by student.Scores.Average() >= 80;
foreach (var studentGroup in booleanGroupQuery)
{
Console.WriteLine(studentGroup.Key == true ? "平均分高於80" : "平均分低於80");
foreach (var student in studentGroup)
Console.WriteLine("{0,4} {1} {2}", student.ID, student.Name, student.Scores.Average());
}
}
輸出:
平均分低於80
1 張勇 77.5
2 王磊 72.25
5 揚帆 67
平均分高於80
3 孫敏 83
4 劉曉 88.25
例2,查詢人名先排序再分組,可以用姓作為分組關鍵字。
string[] Name = {"張明","劉新","王宏","劉洋","張媛","張寶","王金貴","劉東","王凱","劉芳"};
var sortedGroups = from name in Name
orderby name
group name by name[0] into newGroup
select newGroup;
foreach (var nameGroup in sortedGroups)
{
Console.WriteLine(nameGroup.Key);
foreach (var name in nameGroup)
Console.WriteLine(" "+name);
}
輸出:
劉
劉東 劉芳 劉新 劉洋
王
王宏 王金貴 王凱
張
張寶 張明 張媛
輸出結果按姓分類,組內排序。
《C#編程指南》(清華大學出版社2011年1月出版,可網購)第5章和第17章專門討論LINQ查詢更新資料庫。
⑥ 求救!!!用C語言編一個課程表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain()
{
char*p[8][5],*a;
inti=0,j=0,n;
a=(char*)malloc(sizeof(char));
for(j=0;j<5;j++)
for(i=0;i<8;i++)
{
printf("周%d第%d節",j+1,i+1);
scanf("%s",a);
p[j][i]=a;
a=(char*)malloc(sizeof(char));
}
printf("周一 周二 周三 周四版權 周五 ");
for(j=0;j<5;j++){
for(i=0;i<8;i++)
{
printf("%s ",p[j][i]);
}
printf(" ");
}
}
⑦ 誰能給個C++的課程表
ITjob C++班 課程表
第一階段 C語言(1-4周,共4周)
第二版階段權 C++語言(5-7周,共3周)
第三階段 Win32編程(8-8周,共1周)
第四階段 MFC編程(9-11周,共3周)
第五階段 Windows下的項目實戰(12-12周,共1周)
第六階段 Linux操作系統(13-13周,共1周)
第七階段 Linux下的C/C++編程(14-16周,共3周)
第八階段 Linux下的QT編程(17-17周,共1周)
第九階段 Linux和Windows下的混合項目實戰(18-19周,共2周)
第十階段 就業指導,製作簡歷,模擬面試(20-20周,共1周)
⑧ 用C語言怎麼編出來課程表
一、功能模塊概要說明:
1.輸入函數:
char* uscanf(int,int,int) //圖形模式下輸入函數,大小寫26個字母0-9數字外加空格鍵為有效輸入,可以使用BACKSPACE。
2.開始界面,退出界面和主界面:
void starting() //開始界面
void end() //結束界面
char* index() //主選擇界面函數,返回選擇信息(字元串);
3.數據輸入、創建鏈表模塊
char* tinkey(char*,int,int) //輸入切換處理
char* recourse(char*,int,int) //課程輸入
int wdetect(struct person*,char*) //課程輸入檢測,檢測課表一星期同一天同一時間段內課程安排是否重復,如果重復給出修改提示信息
char* infuse(char*,char*,int) //課表輸入
struct course *ccreat(char*) //創建課程單向鏈表
struct person* pcreat(char *) //創建個人課表節點
char *infcreat(char**,struct person**,struct person**,char*)
//創建課表雙向鏈表
4.課表輸出
char *print(char*) //課表輸出背景界面
char *pkey() //課表輸出按紐界面及處理
int table(int,int,struct person*) //在指定區域一表格形式輸出一個人的課表
int forebox(struct person*) //初略顯示下三個人的課表提示
5.文件存儲和裝載
char* save(char *,struct person *) //保存為磁碟文件,在圖形模式下進行文件讀寫操作之後,程序出現莫名其妙的異常顯示情形
6.課表查詢:
struct person *pdemand(struct person *,char *) //按人名字查詢其課表安排。
struct person* wddemand(struct person*,int) //按星期幾查詢課程安排情況。
struct person *cdemand(struct person *,char *) //按課程查詢老師或學生課程安排情況。
char *demand(struct person *) // 查詢切換,並顯示查詢結果,按名字查詢一次只能一個。按星期幾和課程查詢可以查詢到多個,如查詢到多個接果,按任意鍵可依次輸出。
7.排序。
struct course *csort(struct course *) //按課程編號排序課表節點中課程鏈表
struct person *psort(struct person *) //按人學號或老師編號排序課表鏈表
char sort(struct person*) //排序切換,並提示排序結果
8.插入。
char *insert(char *,struct person **,struct person **)
//擦入課表節點
9.刪除。
char *delete(struct person **,char *)
//按人名刪除其課表節點
二、操作說明:
1. Infuse:選定這個鍵後按Enter進入學生輸入菜單,你可以輸入學生的學號,姓名,學生在一學期內的所學課程的課程名,課程號,學時,以及在一周內上課的地址。如果當輸入某課程上課地址有重復時,系統自動發出報警信息,並提示出錯的地方,以便修改,
當選定couse時,表明此學生所學的該課程的信息輸入完成再輸入另外所學課程的信息,如上所寫照樣輸入,
當選定finish時,並按回車鍵後,表明此學生在這一學期內所學的課程信息輸入完成。如要繼續輸入學生的信息如前所述。
當選定back時,並按下回車鍵後,返回TIME TABLE主菜單,選擇主菜單里的功能對所輸入的信息進行處理。
當選定exit時,並按下回車鍵後,返回程序。結束程序。
2.SAVE/LOAD 選定此並按回車。此鍵作用對所輸入的信息進行格式輸出/載入。輸入你要保存信息的文件名,文件格式系統自動生成。利用鍵盤上的方向鍵和TAB鍵進行控制。
3.DEMAND:按ENTER鍵開始輸入,按反向鍵進行查詢切換。當按星期幾和課程查詢時候,如遇到查詢到多個結果,按任意鍵可依次輸出直到完。
4.INSERT:按ENTER鍵開始輸入,按反向鍵進行查詢切換。輸入同INFURE項。
5. DELETE: 按ENTER鍵顯示輸入框開始輸入。其他同上。
6.SORT:當提示框中SORT變為紅色時候,表示被選中,按ENTER鍵開始插入,如成功給出提示信息。
7.PRINT:依次輸出鏈表,如果輸出鏈表為空則不進仍輸出頁面。NEXT為下一個,PRO為上一個。下面FORENOTICE 框顯示後三個節點。
8.EXIT:退出系統。效果同按ESC。
三、常式:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain()
{
char*p[8][5],*a;
inti=0,j=0,n;
a=(char*)malloc(sizeof(char));
for(j=0;j<5;j++)
for(i=0;i<8;i++)
{
printf("周%d第%d節",j+1,i+1);
scanf("%s",a);
p[j][i]=a;
a=(char*)malloc(sizeof(char));
}
printf("周一 周二 周三 周四 周五 ");
for(j=0;j<5;j++){
for(i=0;i<8;i++)
{
printf("%s ",p[j][i]);
}
printf(" ");
}
}
⑨ 希賽程序員在線培訓課程表
課時1主講:計算機基礎
課時2主講:操作系統
課時3主講:多媒體技術
課時4主講:計算機應用基礎
課時5主講:網路與信息安全
課時6主講:法律法規與標准化
課時7主講:資料庫系統(一)
課時8主講:資料庫系統(二)
課時9主講:軟體工程
課時10主講:程序設計語言
課時11主講:數據結構
課時12主講:C程序設計
課時13主講:C++/Java
⑩ c語言怎樣編寫課程表,請問程序怎樣寫
鏈表存,
沒學鏈表就數組+結構體完成。還沒學結構體的話你就再啃啃C語言吧