数据库查询--统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比

lliu26 2012-05-16 03:12:31
create table Student(S# varchar(10),Sname varchar(10),Sage date,Ssex varchar(10));
create table Course(C# varchar(10),Cname varchar(10),T# varchar(10));
create table Teacher(T# varchar(10),Tname varchar(10));
create table SC(S# varchar(10),C# varchar(10),score decimal(18,1));

有以上4个表,要求得到下面的数据:
统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比

除了最后的百分比,剩下的信息都能通过下面的sql语句获得:

select m.C# , m.Cname , (
case when n.score >= 85 then '85-100'
when n.score >= 70 and n.score < 85 then '70-85'
when n.score >= 60 and n.score < 70 then '60-70'
else '0-60'
end) as px,
count(1)
from Course m , sc n
where m.C# = n.C#
group by m.C# , m.Cname , (
case when n.score >= 85 then '85-100'
when n.score >= 70 and n.score < 85 then '70-85'
when n.score >= 60 and n.score < 70 then '60-70'
else '0-60'
end)
order by m.C# , m.Cname , px


请教:如何修改上面的sql,以得到包括百分比在内的所有数据?
...全文
3430 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lliu26 2012-05-17
  • 打赏
  • 举报
回复
Course:
insert into Course values('01' , 'language' , '02');
insert into Course values('02' , 'maths' , '01');
insert into Course values('03' , 'english' , '03');

SC:
insert into SC values('01' , '01' , 80);
insert into SC values('01' , '02' , 90);
insert into SC values('01' , '03' , 99);
insert into SC values('02' , '01' , 70);
insert into SC values('02' , '02' , 60);
insert into SC values('02' , '03' , 80);
insert into SC values('03' , '01' , 80);
insert into SC values('03' , '02' , 80);
insert into SC values('03' , '03' , 80);
insert into SC values('04' , '01' , 50);
insert into SC values('04' , '02' , 30);
insert into SC values('04' , '03' , 20);
insert into SC values('05' , '01' , 76);
insert into SC values('05' , '02' , 87);
insert into SC values('06' , '01' , 31);
insert into SC values('06' , '03' , 34);
insert into SC values('07' , '02' , 89);
insert into SC values('07' , '03' , 98);
byhsh 2012-05-17
  • 打赏
  • 举报
回复
不知道是不是要这样的效果:
1 01 language 70-85 4 66.67%
2 01 language 0-60 2 33.33%
3 02 maths 85-100 3 50%
4 02 maths 70-85 1 16.67%
5 02 maths 60-70 1 16.67%
6 02 maths 0-60 1 16.67%
7 03 english 85-100 2 33.33%
8 03 english 70-85 2 33.33%
9 03 english 0-60 2 33.33%
select t1.*,round(t1.num/t2.all_num*100,2) || '%' 百分比
from
(select m.C# , m.Cname , (
case when n.score >= 85 then '85-100'
when n.score >= 70 and n.score < 85 then '70-85'
when n.score >= 60 and n.score < 70 then '60-70'
else '0-60'
end) as px,
count(1) num
from Course m , sc n
where m.C# = n.C#
group by m.C# , m.Cname , (
case when n.score >= 85 then '85-100'
when n.score >= 70 and n.score < 85 then '70-85'
when n.score >= 60 and n.score < 70 then '60-70'
else '0-60'
end)
order by m.C# , m.Cname , px) t1,

(select m.C# , m.Cname ,
count(1) all_num
from Course m , sc n
where m.C# = n.C#
group by m.C# , m.Cname
order by m.C# , m.Cname) t2
where t1.c#=t2.c#
a494910091 2012-05-16
  • 打赏
  • 举报
回复
能贴出下 测试数据吗 sql?
lliu26 2012-05-16
  • 打赏
  • 举报
回复
两个都能单独查出来,但是不能直接/,因为不是单行操作。
请问怎么解决?
  • 打赏
  • 举报
回复
count按 课程类别 和 分数阶段统计数量
然后 /总数 就是百分比了
  • 打赏
  • 举报
回复
你用count把每种课程每个分数段的数量查出来。。然后总数查出来。。
然后直接用/做除法运算。。就是百分比。。。
你把这个结果 乘以100后面的数都不要了 拼接个%符号就OK了
--Student(S#,Sname,Sage,Ssex) 学生表 --SC(S#,C#,score) 成绩表 --Course(C#,Cname,T#) 课程表 --Teacher(T#,Tname) 教师表 --问题: 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 课程成绩小于60分的同学的学号、姓名; select S#,Sname from Student where S# not in (select Student.S# from Student,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 S#,Sname from Student,SC where Student.S#=SC.S# and 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”课程的同学学号,号课的平均成绩; 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# ); 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; 25、--查询各科成绩前三名的记录:(不考虑成绩并列情况) SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 FROM SC t1 WHERE score IN (SELECT TOP 3 score FROM SC WHERE t1.C#= C# ORDER BY score DESC ) ORDER BY t1.C#; 26、--查询每门课程被选修的学生数 select c#,count(S#) from sc group by C#; 27、--查询出只选修了一门课程的全部学生的学号和姓名 select SC.S#,Student.Sname,count(C#) AS 选课数 from SC ,Student where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1; 28、--查询男生、女生人数 Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男'; Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女'; 29、--查询姓“张”的学生名单 SELECT Sname FROM Student WHERE Sname like '张%'; 30、--查询同名同性学生名单,并统计同名人数 select Sname,count(*) from Student group by Sname having count(*)>1;; 31、--1981年出生的学生名单(注:Student表中Sage列的类型是datetime) select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age from student where CONVERT(char(11),DATEPART(year,Sage))='1981'; 32、--查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列 Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ; 33、--查询平均成绩大于85的所有学生的学号、姓名和平均成绩 select Sname,SC.S# ,avg(score) from Student,SC where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85; 34、--查询课程名称为“数据库”,且分数低于60的学生姓名和分数 Select Sname,isnull(score,0) from Student,SC,Course where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='数据库'and score <60; 35、--查询所有学生的选课情况; SELECT SC.S#,SC.C#,Sname,Cname FROM SC,Student,Course where SC.S#=Student.S# and SC.C#=Course.C# ; 36、--查询任何一门课程成绩70分以上的姓名、课程名称和分数; SELECT distinct student.S#,student.Sname,SC.C#,SC.score FROM student,Sc WHERE SC.score>=70 AND SC.S#=student.S#; 37、--查询不及格的课程,并按课程号从大到小排列 select c# from sc where scor e <60 order by C# ; 38、--查询课程编号为003且课程成绩在80分以上的学生的学号和姓名; select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003'; 39、--求选了课程的学生人数 select count(*) from sc; 40、--查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩 select Student.Sname,score from Student,SC,Course C,Teacher where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# ); 41、--查询各个课程及相应的选修人数 select count(*) from sc group by C#; 42、--查询不同课程成绩相同的学生的学号、课程号、学生成绩 select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ; 43、--查询每门功成绩最好的前两名 SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 FROM SC t1 WHERE score IN (SELECT TOP 2 score FROM SC WHERE t1.C#= C# ORDER BY score DESC ) ORDER BY t1.C#; 44、--统计每门课程的学生选修人数(超过10人的课程统计)。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列 select C# as 课程号,count(*) as 人数 from sc group by C# order by count(*) desc,c# 45、--检索至少选修两门课程的学生学号 select S# from sc group by s# having count(*) > = 2 46、--查询全部学生都选修的课程课程号和课程名 select C#,Cname from Course where C# in (select c# from sc group by c#) 47、--查询没学过“叶平”老师讲授的任一门课程的学生姓名 select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平'); 48、--查询两门以上不及格课程的同学的学号及其平均成绩 select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#; 49、--检索“004”课程分数小于60,按分数降序排列的同学学号 select S# from SC where C#='004'and score <60 order by score desc; 50、--删除“002”同学的“001”课程成绩 delete from Sc where S#='001'and C#='001';
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 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 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、查询至
软件工程实践报告 教务管理系统 第一章 问题定义 随着学校规模的扩大,人员的不断增加、复杂程度逐渐增强,学校中,教务是一项繁 琐的事,每年都有新生入学、老生毕业,以及其他各种人事变动。每学期的考试成绩都 需要分析,纵、横向比较,能及时反应信息,还要对教师的教学成绩考核提供数据。如 何有效地管理、分析、处理这些信息,帮助学校和教师掌握学生的情况,这就是教学信 息管理系统需要完成的功能。以前简单的用Excel来打印几X报表的人机作坊再也无法适 应当今学校的教学管理了,比方用Excel虽然能简单管理学生的学籍、成绩等,但用户界 面简单,管理起来难度大,修改和查找学生的信息都比较麻烦,并且在操作过程中没有 用户权限,只要能翻开计算机的人就能翻开数据进展任意的修改,大大的降低了信息的 平安性和XX性,效率低,,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对 于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟 ,其强大的功能已为人们深刻认识,它已进入各个领域并发挥着来越重要的作用。 作为计算机应用的一局部,使用计算机对学校的各类信息进展管理,具有着手工管理所 无法比较的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、XX性好、 寿命长、本钱低等。这些优点能够极大地提高学校信息管理的效率。 1.1问题定义 1.所需资源: 硬盘>80G,内存>256,处理器一般以上水平即可。 2.系统名为:教务管理系统 〔1〕,本处理的信息主要有三大类:学生信息、教师信息、成绩数据。本系统主要着 手于以上三大局部,建立数据库以及对数据的各种操作功能。 对于学生信息,由于需要经常性地进展各种查询。例如:查询一个班级中团员的人数 ,男女生的人数等等。教诲处在每一届学生进校时必须进展分班,设置学号;每一届学 生毕业,要进展学生信息备份; 对于教师信息,学校教诲处跟据教师所教班的成绩对教师的成绩成行考核,可以进展 同科的纵横向比较。〔由于对教师方面不太了解只有这些〕 对于成绩管理,课任教师要进展本科目成绩登记,计算平均分、优秀率、及格率;教 诲处要分段统计学生人数及所比列,每学期进展学生成绩备份;学校领导那么可通过 查询工具来了解学生成绩情况。 〔2〕,以上各类信息目前还处于手工或半手工的管理状态,效率低,可靠性差。如 果采用计算机进展以上各类信息的管理,必将大大提高工作效率,对各类信息的维护及 了解起到积极的作用。因此一个功能完备的学校信息管理系统的开发都非常有必要。 第二章 可行性研究 2.1系统概述 本系统将采用面向对象的软件开发方法,以SQL 2000作为后台数据库,配合功能强大的SQL查询语句,用Delphi便捷地开发教学管理信息 系统的应用程序。 2.2.1可行性分析 A 技术可行性:对Delphi能够运用自如,对SQL语句熟练掌握运用。 B 经济可行性:开发费用合理 C 操作可行性:能够良好的解决用户需要的问题 第三章 总体设计 3.1系统功能描述 本系统的主要任务是实现对学校的学生信息管理、成绩管理、教师考核信息管理、课 程信息管理及相关查询。其主要功能包括: 1.学生信息管理功能 添加学生.以班级为单位,进展学生入库。其中分为单个添加和成批添加。单个添 加学生供数量较少的学生信息入库;学籍变更。提供学生转学、休学、复学、退学、留 级及毕业信息。 删除学生。当学生毕业后,学生信息转移备份数据库中,系统的根本数据库中需要 删除学生信息。该功能主要进展成批地删除学生信息,如连续学号区段的多位学生信息 删除,整个班级的删除,所有学生信息的删除。 学生信息备份。在学生信息删除前,将其按班级为单位保存到备份数据库 2.学生成绩管理功能 分数录入。以班级为单位,录入成绩分数段统计。以班为单位,根据成绩统计各科分数段人数,总分各分数段人数成绩备份。为指定班级及指定的学期数的学生成绩保存到备份数据库中。 3.教师信息管理功能 添加新教师。 教师信息的修改。 教师成绩考核。 4.课程信息管理功能 1.课程管理。提供本学期各年级各专业所开课程名称的录入、修改、删除。它是学生 成绩管理的根底。用以保证数据库中一致性原那么。 2.教师与课程。供录入课任教师与课程、班级的联系情况。是排课系统的根底。 5.查询功能。 学生信息查询。根据用户的要求,查询学生数据库的所有可能的信息,其中包括成绩查 询。 教师信息查询。根据用户的要求,查询相关教师信息。 备份成绩查询。按班级为单位查询备份数据库的学生信息。 3.2 数据流图与数据字典 3.2.1数据流图 根据以上的系统功能描述,设计出数据流图如下: 1. 根本数据流图与功能级数据流图〔图3-1至图3-2〕 3.2.2查询功能流程图 总分表成绩表 学生信息查询要求查询

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧