多表查询-学生表,班级表,课程表,班级课程表

多表查询:
学生表、班级表、课程表、班级课程表
 
 

-- 多对多
-- 班级表
CREATE  TABLE  banji(
     id  INT  PRIMARY  KEY  AUTO_INCREMENT,
     ` name VARCHAR (10)  NOT  NULL
);
INSERT  INTO  banji(` name `)  VALUES ( 'java1807' ),( 'java1812' );
SELECT  FROM  banji;
-- 学生表
CREATE  TABLE  student(
     id  INT  PRIMARY  KEY  AUTO_INCREMENT,
     ` name VARCHAR (10)  NOT  NULL ,
     age  INT ,
     gender  CHAR (1),
     banji_id  INT ,
     FOREIGN  KEY (banji_id)  REFERENCES  banji(id)
);
INSERT  INTO  student(` name `,age,gender,banji_id) 
VALUES ( '张三' ,20, '男' ,1),( '李四' ,21, '男' ,2),( '王五' ,20, '女' ,1);
-- Cannot add or update a child row: a foreign key constraint fails (`java1812`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`banji_id`) REFERENCES `banji` (`id`))
INSERT  INTO  student(` name `,age,gender,banji_id) 
VALUES ( '张三' ,20, '男' ,3);
SELECT  FROM  student;
-- 课程表
CREATE  TABLE  course(
     id  INT  PRIMARY  KEY  AUTO_INCREMENT,
     ` name VARCHAR (10)  NOT  NULL ,
     credit  INT  COMMENT  '学分'
);
INSERT  INTO  course(` name `,credit)  VALUES ( 'Java' ,5),( 'UI' ,4),( 'H5' ,4);
SELECT  FROM  course;
-- 班级课程表
CREATE  TABLE  banji_course(
     -- id int PRIMARY KEY AUTO_INCREMENT,
     banji_id  INT ,
     course_id  INT ,
     PRIMARY  KEY (banji_id,course_id),  -- 联合主键
     FOREIGN  KEY (banji_id)  REFERENCES  banji(id),  -- banji_id既是联合主键又是外键
     FOREIGN  KEY (course_id)  REFERENCES  course(id)  -- course_id既是联合主键又是外键
);
INSERT  INTO  banji_course(banji_id,course_id)  VALUES (1,1),(1,3),(2,1),(2,2),(2,3);
SELECT  FROM  banji_course;

-- 子查询:嵌套查询,一个查询语句是另一个查询语句的条件
-- 查询班级是java1812班所有学生信息
SELECT  FROM  student  WHERE  banji_id=2;
SELECT  id  FROM  banji  WHERE  ` name `= 'java1812' ;
SELECT  FROM  student  WHERE  banji_id=( SELECT  id  FROM  banji  WHERE  ` name `= 'java1812' );
-- 班级是java1807班或者java1812班所有学生信息
SELECT  FROM  student  WHERE  banji_id=1  OR  banji_id=2;
SELECT  FROM  student  WHERE  banji_id  IN (1,2);
SELECT  id  FROM  banji  WHERE  ` name `= 'java1807'  OR  ` name `= 'java1812' -- 1,2
SELECT  FROM  student  WHERE  banji_id  IN ( SELECT  id  FROM  banji  WHERE  ` name `= 'java1807'  OR  ` name `= 'java1812' );
-- "=":要求子查询只有一个结果。 "in":子查询可以有多个结果

关联查询:inner join
 
多表查询:
学生表、班级表、课程表、班级课程表
 
 

-- 多对多
-- 班级表
CREATE  TABLE  banji(
     id  INT  PRIMARY  KEY  AUTO_INCREMENT,
     ` name VARCHAR (10)  NOT  NULL
);
INSERT  INTO  banji(` name `)  VALUES ( 'java1807' ),( 'java1812' );
SELECT  FROM  banji;
-- 学生表
CREATE  TABLE  student(
     id  INT  PRIMARY  KEY  AUTO_INCREMENT,
     ` name VARCHAR (10)  NOT  NULL ,
     age  INT ,
     gender  CHAR (1),
     banji_id  INT ,
     FOREIGN  KEY (banji_id)  REFERENCES  banji(id)
);
INSERT  INTO  student(` name `,age,gender,banji_id) 
VALUES ( '张三' ,20, '男' ,1),( '李四' ,21, '男' ,2),( '王五' ,20, '女' ,1);
-- Cannot add or update a child row: a foreign key constraint fails (`java1812`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`banji_id`) REFERENCES `banji` (`id`))
INSERT  INTO  student(` name `,age,gender,banji_id) 
VALUES ( '张三' ,20, '男' ,3);
SELECT  FROM  student;
-- 课程表
CREATE  TABLE  course(
     id  INT  PRIMARY  KEY  AUTO_INCREMENT,
     ` name VARCHAR (10)  NOT  NULL ,
     credit  INT  COMMENT  '学分'
);
INSERT  INTO  course(` name `,credit)  VALUES ( 'Java' ,5),( 'UI' ,4),( 'H5' ,4);
SELECT  FROM  course;
-- 班级课程表
CREATE  TABLE  banji_course(
     -- id int PRIMARY KEY AUTO_INCREMENT,
     banji_id  INT ,
     course_id  INT ,
     PRIMARY  KEY (banji_id,course_id),  -- 联合主键
     FOREIGN  KEY (banji_id)  REFERENCES  banji(id),  -- banji_id既是联合主键又是外键
     FOREIGN  KEY (course_id)  REFERENCES  course(id)  -- course_id既是联合主键又是外键
);
INSERT  INTO  banji_course(banji_id,course_id)  VALUES (1,1),(1,3),(2,1),(2,2),(2,3);
SELECT  FROM  banji_course;

-- 子查询:嵌套查询,一个查询语句是另一个查询语句的条件
-- 查询班级是java1812班所有学生信息
SELECT  FROM  student  WHERE  banji_id=2;
SELECT  id  FROM  banji  WHERE  ` name `= 'java1812' ;
SELECT  FROM  student  WHERE  banji_id=( SELECT  id  FROM  banji  WHERE  ` name `= 'java1812' );
-- 班级是java1807班或者java1812班所有学生信息
SELECT  FROM  student  WHERE  banji_id=1  OR  banji_id=2;
SELECT  FROM  student  WHERE  banji_id  IN (1,2);
SELECT  id  FROM  banji  WHERE  ` name `= 'java1807'  OR  ` name `= 'java1812' -- 1,2
SELECT  FROM  student  WHERE  banji_id  IN ( SELECT  id  FROM  banji  WHERE  ` name `= 'java1807'  OR  ` name `= 'java1812' );
-- "=":要求子查询只有一个结果。 "in":子查询可以有多个结果

关联查询:inner join
 
 
-- 列出所有学生学习的课程名称
-- 学生姓名   班级名称   课程名称    学分
 
 
 

-- inner join on 只有左右两个表有关联的才查询出来
-- left join on 左表中都显示出来,右表没有显示空
-- right join on 右表都显示,左表没有显示空
 
  SELECT 
FROM  student  as  INNER  JOIN  banji  as  b
on  s.banji_id=b.id;
SELECT 
FROM  student  as  LEFT  JOIN  banji  as  b
on  s.banji_id=b.id;
 
SELECT 
FROM student  as s  RIGHT  JOIN banji  as b
on  s.banji_id=b.id;
 
-- 没有分配课程也显示出来。
-- 班级名称   课程名称   学分
SELECT b.` nameAS  '班级名称',c.` nameas  '课程名称',c.credit  as  '学分'
FROM banji  AS b  LEFT  JOIN banji_course  AS bc
ON b.id=bc.banji_id
LEFT  JOIN course  as c
ON  bc.course_id=c.id;
 
总结:多表查询主要是注意下面两点
1、整个查询涉及到几张表,涉及到几张表就连接这几张表。
2、如果涉及到这几张表的关系搞不清楚,画一下ER图,弄清楚表和表之间的关系(就是根据外键建立的关系)
-- 统计每个班有多少学生
-- 学生数量
SELECT  COUNT (id)  as  '学生数量' 
FROM  student  GROUP  BY  banji_id;
-- 班级名称    数量
SELECT 
FROM  student  as 
INNER  JOIN  banji  as  b
ON  s.banji_id=b.id;
 
把inner join之后查询的结果当成一张表来使用, 在这个结果集里面根据班级id统计每个班级下面学生数量。
 
-- 列出所有学生学习的课程名称
-- 学生姓名   班级名称   课程名称    学分
 
 
 

-- inner join on 只有左右两个表有关联的才查询出来
-- left join on 左表中都显示出来,右表没有显示空
-- right join on 右表都显示,左表没有显示空
 
  SELECT 
FROM  student  as  INNER  JOIN  banji  as  b
on  s.banji_id=b.id;
SELECT 
FROM  student  as  LEFT  JOIN  banji  as  b
on  s.banji_id=b.id;
 
SELECT 
FROM student  as s  RIGHT  JOIN banji  as b
on  s.banji_id=b.id;
 
-- 没有分配课程也显示出来。
-- 班级名称   课程名称   学分
SELECT b.` nameAS  '班级名称',c.` nameas  '课程名称',c.credit  as  '学分'
FROM banji  AS b  LEFT  JOIN banji_course  AS bc
ON b.id=bc.banji_id
LEFT  JOIN course  as c
ON  bc.course_id=c.id;
 
总结:多表查询主要是注意下面两点
1、整个查询涉及到几张表,涉及到几张表就连接这几张表。
2、如果涉及到这几张表的关系搞不清楚,画一下ER图,弄清楚表和表之间的关系(就是根据外键建立的关系)
-- 统计每个班有多少学生
-- 学生数量
SELECT  COUNT (id)  as  '学生数量' 
FROM  student  GROUP  BY  banji_id;
-- 班级名称    数量
SELECT 
FROM  student  as 
INNER  JOIN  banji  as  b
ON  s.banji_id=b.id;
 
把inner join之后查询的结果当成一张表来使用, 在这个结果集里面根据班级id统计每个班级下面学生数量。
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
练手Lab课程表小程序源码是一个基于Thinkphp系统进行开发的前后端分离系统。 源码功能介绍 1、情侣功能 2、情侣间留言 3、情侣间互相设置课程表背景 4、自己日、周课程表背景设置 5、教务系统课程表导入 6、导入别人分享的课 7、导入别人分享的单课 8、多校支持 9、首页顶部氛围设置(管理员设置,节日氛围) 环境要求 1、服务端:php+mysql(基于fastadmin) 2、小程序端:原生+colorui 准备工作 1、需自备服务器和备案过的域名 2、申请https证书,dnspod网站可以免费申请一年的 3、安装PHP运行环境(PHP >= 7.1 且 < 7.3 (推荐PHP7.1版本),Mysql >= 5.5.0) 4、到微信公众平台,申请一个小程序,获取AppID和AppSecret 服务端部署教程 1、添加站点并上传代码至根目录 2、绑定到项目中的public目录为运行目录,伪静态选择thinkphp 3、输入你绑定的域名,会自动跳转至安装界面 4、根据提示安装(以上三步其实是安装fastadmin框架) 5、进入后台,插件管理里面,搜索“练手课”,安装 6、安装第三方登录插件 7、设置小程序AppID和AppSecret(微信公众平台获取),练手Lab秘钥(独立版部署的话,自己生成一个16位的字符串就行),站点id不要改!!! 8、服务端部署完毕 注:如果你没有服务器,可以使用我们的SaaS版,即用我们的服务器,小程序还是你自己的 小程序端部署教程 小程序端源码在wxapp文件夹下 在微信开发者工具里面,左上角选择项目,导入项目,选择这个文件夹 1、修改config.js文件下的cryptoKey,自己生成一个16位的字符串 2、修改baseUrl里面的域名,改成你自己的(注意在微信公众平台里面,添加白名单) 3、修改project.config.json文件里面的appid为自己的 4、微信开发者工具,右上角详情里面,勾选ES6转ES5 5、如果报错,请检查是否配置了白名单,配置之后,在项目配置里面(见上图右上角),点刷新 6、预览,没问题就可以上传了 使用手册 1、首页顶部氛围设置。因为课程表小程序太工具了,没有杂七杂八的功能,所以可运营空间不强,所以增加了这个功能,如端午,中秋换个背景之类的,甚至可以开放投稿,让学生拍校园风景并给其署名,每日更换一张。 2、可以分学校设置上课时间、冬、夏令时日期,互相之间不影响,到日期自动切换 3、导入教务系统课程表需要适配,目前支持正方和青果的教务系统 4、分享整个课程表,可以生成小程序码,适用于同一个班级课程表一致的情况,直接打印小程序码让同学扫就可以导入课程表 5、分享单课,适用于每个同学的课程表都不一致的情况,可以直接在教室门口贴单课的小程序码,只导入该课的课
目 录 概述 3 一、 课题介绍 3 二、 目的和要求 3 三、 任务计划 3 需求分析 5 一、 学生管理系统的发展现状 5 二、 系统功能分析 5 三、 系统结构框图 5 数据库设计 7 一、 创建数据的结构 7 二、 各功能及其关系 7 系统模块功能的实现与界面设计 8 一、 系统主要模块 8 二、 欢迎界面 9 三、 主菜单界面 9 四、 子菜单 10 五、 学生信息录入 11 六、 学生信息查找 12 七、 学生信息删除 13 八、 学生信息修改 14 课程设计心得 15 一、 程序结构设计培养 15 二、 书写习惯养成 15 三、 注意程序简洁 15 总结 16 参考文献 17 附录:项目源代码 18 一、 数据库连接(DbConnection.java) 18 二、 学生信息数据库管理(Student_Dao.java) 18 三、 欢迎界面(Welcome.java) 23 四、 主菜单界面(Menu.java) 24 五、 子菜单界面(Son_Menu.java) 27 六、 添加功能(Add_Menu.java) 31 七、 查找功能(Find_Menu.java) 34 八、 删除功能(Delet_Menu.java) 36 九、 修改功能(Change_Menu.java) 38 概述 课题介绍 本次课程设计要求实现一个面向学生信息的管理系统。学生信息系统是一个非常通用 的管理系统。很多大、中、小学校都需要拥有自己的学生档案管理系统,以便对本校学 生的基本信息和学习情况进行管理,另一方面,较完整的学校信息管理系统同样也需要 有学生信息管理系统的支持。 由通用的学生相关数据分析可知,系统包括院系管理、学生基本信息管理、课程管理 、学生从成绩管理等主要功能。 该系统要求使用JAVA和MySQL作为开发工具和数据库管理系统,因此,系统设计涉及 系统功能设计、数据库设计和系统界面等几个方面内容。 目的和要求 了解JAVA语言的特点及使用的范围,掌握开发软件平台的搭建。 要求使用JAVA和MySQL开发一个学生信息管理系统,系统主要功能如下: 1) 院系信息管理 院系系统信息的录入,包括院系编号、院系名称等信息; 院系信息的修改、删除、查询。 2) 学生基本信息管理 学生基本信息的录入,包括学号、姓名、性别、出生日期、所在院系、班级等信息; 学生基本信息的修改、删除、查询。 3) 课程设置管理 课程信息的录入,包括课程编号、课程名称、学分、课程内容等信息; 课程信息的修改、删除、查询。 4) 学生成绩管理 学生成绩的录入,包括课程编号、课程名称、学分、课程内容等信息; 学生信息的修改、删除、查询。 任务计划 考虑到本次课程设计是独立完成,所以,不需要进行细致的分工,只要对框架和时间 进行一定的规划就行。 " "时间 "计划 "执行结果 " "1 "12月13日 "查阅相关资料 "查阅了JAVA Swing,MySQL等方面的 " " " "准备好基础知识 "相关资料。 " "2 "12月14日 "进行需求分析 "得到需求分析总结。 " "3 "12月14日~21日 "正式设计 "完成代码设计及调试 " "5 "12月22日 "完成课程设计报告"整理文件,并完成书面报告 " 需求分析 学生管理系统的发展现状 经过了一段时间的发展,当今,各大高校普遍都有了相对完善的学生管理系统,但在 部分中小学中,这种高效的管理手段,仍未能全面普及。目前已有的学生管理系统存在 界面和操作相对繁琐,实现成本较高等缺点,仍需改进。 系统功能分析 由通用的学生相关数据分析可知,系统包括院系管理、学生基本信息管理、课程管理 、学生从成绩管理等主要功能[1]。 实现以上各模块的功能,需要以下子功能: 1数据库连接的建立与断开 2数据库的数据操作,包括插入、查询、删除、修改 系统操作界面与数据库操作相关联 系统结构框图 从系统功能述可以看出,该系统可以实现几个功能,根据这些功能设计出系统的功 能模块如 图 1所示: 数据库设计 创建数据的结构 (以学生基本信息管理系统为例) 主要数据项 学号、姓名、性别、出生年月、所在院系、所在班级 数据类型及要求 为操作方便,均定义为字符串。其中学号不得重复。 MySQL语句 各功能及其关系 本系统各分别存储相应数据。 涉及的数据之间相对独立,但仍有少量关联。 1) 学生成绩 包含对 学生基本信息 和 课程设置 的映射 5) 学生基本信息 包含对 院系信息 的映射 系统模块功能的实现与界面设计 系统主要模块 本次课程设计的主要目的,是通过实践,让我对所学到的知识进行考验和巩固。经过 一点时间的了解。设计出了系统的总体框架,参看图 1。 由于各模块的功能及原理基本相同,只是涉及的
JAVA程序设计 课程设计报告 课 题: 学生信息管理系统 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间:   目 录 一、系统描述 2 1、需要实现的功能 3 2、设计目的 3 二、分析与设计 3 1、功能模块划分 3 2、数据库结构描述 4 3、系统详细设计文档 6 4、各个模块的实现方法描述 9 5、测试数据及期望结果 11 三、系统测试 16 四、心得体会 23 五、参考文献 24 六、附录 24 一、系统描述 1、需求实现的功能 1.1、录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入 时,如果数据库已经存在该学号,则不能再插入该学号。 1.2、修改学生基本信息的功能 在管理员模式下,只要在格中选中某个学生,就可以对该学生信息进行修改。 1.3、查询学生基本信息的功能 可使用 "姓名"对已存有的学生资料进行查询。 1.4、删除学生基本信息的功能 在管理员模式下,只要选择格中的某个学生,就可以删除该学生。 1.5、用户登陆 用不同的登录权限可以进入不同的后台界面,从而实现权限操作。 1.6、用户登陆信息设置 可以修改用户登陆密码 2、设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息 管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者 和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快 捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据, 这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一 长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学 技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人 类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理无 法比拟的优点。例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好 、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科 学化、正规化管理,与世界接轨的重要条件。 本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流 程设计完成的。通过一个简化的学生信息管理系统,使学生信息管理工作系统化、规范 化、自动化,从而达到提高学生信息管理效率的目的。 二、分析与设计 1、功能模块划分 图1 功能模块划分图 2、数据库结构描述 2.1、数据库E-R模型 图2 登录用户管理E-R图 图3 实体学生E-R图 2.2、数据库关系模型——二维 1 学生(student) "字段 "数据类型 "说明 " "stuId "nvarchar(30) "学号 " "stuName "nvarchar(30) "姓名 " "stuSex "nvarchar(30) "性别 " "stuAge "int "年龄 " "stuJg "nvarchar(30) "籍贯 " "stuZy "nvarchar(30) "专业 " "classId "nvarchar(30) "班号 " "stuSourse "numeric(5,2) "总学分 " 图4 录入数据后的学生 2 登陆权限(login) "字段 "数据类型 "说明 " "userId "nvarchar(30) "用户名(账号),即登 " " " "陆Id " "password "nvarchar(30) "登陆密码 " "position "nvarchar(30) "职位,如班委,普通学 " " " "生 " 图5 录入数据后的登陆权限 3、系统详细设计文档 3.1、系统执行流程图 图6 系统执行流程图 3.2、类的划分 3 学生信息查询类 "类名 "类的成员属性与方法 "说明 " "StuQuery.jav"JPanel jp1 "定义一个面板 " "a " " " " "JLabel jp1_jl1 "定义两个标签 " " "JTextField jp1_jtf1 "定义一个文本输入框 " " "JButton "定义三个按钮 " " "jp1_jb1,jp1_jb2,jp1_jb3 " " " "JTable jtb "定义一个 " " "JScrollPane jsp "定义一个滚动面板,用于" " " "存放 " " "TableModel tm "自定义一个模型,用于" " " "更新数据 " " "public StuQuery(Frame "构造方法,通过传递三个" " "Main,String title ,boolean "参数
目 录 概述 3 一、 课题介绍 3 二、 目的和要求 3 三、 任务计划 3 需求分析 5 一、 学生管理系统的发展现状 5 二、 系统功能分析 5 三、 系统结构框图 5 数据库设计 7 一、 创建数据的结构 7 二、 各功能及其关系 7 系统模块功能的实现与界面设计 8 一、 系统主要模块 8 二、 欢迎界面 9 三、 主菜单界面 9 四、 子菜单 10 五、 学生信息录入 11 六、 学生信息查找 12 七、 学生信息删除 13 八、 学生信息修改 14 课程设计心得 15 一、 程序结构设计培养 15 二、 书写习惯养成 15 三、 注意程序简洁 15 总结 16 参考文献 17 附录:项目源代码 18 一、 数据库连接(DbConnection.java) 18 二、 学生信息数据库管理(Student_Dao.java) 18 三、 欢迎界面(Welcome.java) 23 四、 主菜单界面(Menu.java) 24 五、 子菜单界面(Son_Menu.java) 27 六、 添加功能(Add_Menu.java) 31 七、 查找功能(Find_Menu.java) 34 八、 删除功能(Delet_Menu.java) 36 九、 修改功能(Change_Menu.java) 38 概述 课题介绍 本次课程设计要求实现一个面向学生信息的管理系统。学生信息系统是一个非常通用 的管理系统。很多大、中、小学校都需要拥有自己的学生档案管理系统,以便对本校学 生的基本信息和学习情况进行管理,另一方面,较完整的学校信息管理系统同样也需要 有学生信息管理系统的支持。 由通用的学生相关数据分析可知,系统包括院系管理、学生基本信息管理、课程管理 、学生从成绩管理等主要功能。 该系统要求使用JAVA和MySQL作为开发工具和数据库管理系统,因此,系统设计涉及 系统功能设计、数据库设计和系统界面等几个方面内容。 目的和要求 了解JAVA语言的特点及使用的范围,掌握开发软件平台的搭建。 要求使用JAVA和MySQL开发一个学生信息管理系统,系统主要功能如下: 1) 院系信息管理 院系系统信息的录入,包括院系编号、院系名称等信息; 院系信息的修改、删除、查询。 2) 学生基本信息管理 学生基本信息的录入,包括学号、姓名、性别、出生日期、所在院系、班级等信息; 学生基本信息的修改、删除、查询。 3) 课程设置管理 课程信息的录入,包括课程编号、课程名称、学分、课程内容等信息; 课程信息的修改、删除、查询。 4) 学生成绩管理 学生成绩的录入,包括课程编号、课程名称、学分、课程内容等信息; 学生信息的修改、删除、查询。 任务计划 考虑到本次课程设计是独立完成,所以,不需要进行细致的分工,只要对框架和时间 进行一定的规划就行。 " "时间 "计划 "执行结果 " "1 "12月13日 "查阅相关资料 "查阅了JAVA Swing,MySQL等方面的 " " " "准备好基础知识 "相关资料。 " "2 "12月14日 "进行需求分析 "得到需求分析总结。 " "3 "12月14日~21日 "正式设计 "完成代码设计及调试 " "5 "12月22日 "完成课程设计报告"整理文件,并完成书面报告 " 需求分析 学生管理系统的发展现状 经过了一段时间的发展,当今,各大高校普遍都有了相对完善的学生管理系统,但在 部分中小学中,这种高效的管理手段,仍未能全面普及。目前已有的学生管理系统存在 界面和操作相对繁琐,实现成本较高等缺点,仍需改进。 系统功能分析 由通用的学生相关数据分析可知,系统包括院系管理、学生基本信息管理、课程管理 、学生从成绩管理等主要功能[1]。 实现以上各模块的功能,需要以下子功能: 1数据库连接的建立与断开 2数据库的数据操作,包括插入、查询、删除、修改 系统操作界面与数据库操作相关联 系统结构框图 从系统功能述可以看出,该系统可以实现几个功能,根据这些功能设计出系统的功 能模块如 图 1所示: 数据库设计 创建数据的结构 (以学生基本信息管理系统为例) 主要数据项 学号、姓名、性别、出生年月、所在院系、所在班级 数据类型及要求 为操作方便,均定义为字符串。其中学号不得重复。 MySQL语句 各功能及其关系 本系统各分别存储相应数据。 涉及的数据之间相对独立,但仍有少量关联。 1) 学生成绩 包含对 学生基本信息 和 课程设置 的映射 5) 学生基本信息 包含对 院系信息 的映射 系统模块功能的实现与界面设计 系统主要模块 本次课程设计的主要目的,是通过实践,让我对所学到的知识进行考验和巩固。经过 一点时间的了解。设计出了系统的总体框架,参看图 1。 由于各模块的功能及原理基本相同,只是涉及的
JAVA程序设计 课程设计报告 课 题: 学生信息管理系统 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间:   目 录 一、系统描述 2 1、需要实现的功能 3 2、设计目的 3 二、分析与设计 3 1、功能模块划分 3 2、数据库结构描述 4 3、系统详细设计文档 6 4、各个模块的实现法描述 9 5、测试数据及期望结果 11 三、系统测试 16 四、心得体会 23 五、参考文献 24 六、附录 24 一、系统描述 1、需现的功能 1.1、录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入 时,如果数据库已经存在该学号,则不能再插入该学号。 1.2、修改学生基本信息的功能 在管理员模式下,只要在格中选中某个学生,就可以对该学生信息进行修改。 1.3、查询学生基本信息的功能 可使用 "姓名"对已存有的学生资料进行查询。 1.4、删除学生基本信息的功能 在管理员模式下,只要选择格中的某个学生,就可以删除该学生。 1.5、用户登陆 用不同的登录权限可以进入不同的后台界面,从而实现权限操作。 1.6、用户登陆信息设置 可以修改用户登陆密码 2、设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息 管理系统不但能有效地减轻学校相关工作人员的工作负担,它的容对于学校的决策者和 管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷 的查询手段。但一直以来人们使用传统人工的式管理文件档案、统计和查询数据,这种 管理式存在着多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将产 生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不 断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的 各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理无 法比拟的优点。例如:检索迅速、查询便、效率高、可靠性好、存储量大、保密性好、 寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学 化、正规化管理,与世界接轨的重要条件。 本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流 程设计完成的。通过一个简化的学生信息管理系统,使学生信息管理工作系统化、规化 、自动化,从而达到提高学生信息管理效率的目的。 二、分析与设计 1、功能模块划分 图1 功能模块划分图 2、数据库结构描述 2.1、数据库E-R模型 图2 登录用户管理E-R图 图3 实体学生E-R图 2.2、数据库关系模型——二维 1 学生(student) "字段 "数据类型 "说明 " "stuId "nvarchar(30) "学号 " "stuName "nvarchar(30) "姓名 " "stuSex "nvarchar(30) "性别 " "stuAge "int "年龄 " "stuJg "nvarchar(30) "籍贯 " "stuZy "nvarchar(30) "专业 " "classId "nvarchar(30) "班号 " "stuSourse "numeric(5,2) "总学分 " 图4 录入数据后的学生 2 登陆权限(login) "字段 "数据类型 "说明 " "userId "nvarchar(30) "用户名(账号),即登 " " " "陆Id " "password "nvarchar(30) "登陆密码 " "position "nvarchar(30) "职位,如班委,普通学 " " " "生 " 图5 录入数据后的登陆权限 3、系统详细设计文档 3.1、系统执行流程图 图6 系统执行流程图 3.2、类的划分 3 学生信息查询类 "类名 "类的成员属性与法 "说明 " "StuQuery.jav"JPanel jp1 "定义一个面板 " "a " " " " "JLabel jp1_jl1 "定义两个标签 " " "JTextField jp1_jtf1 "定义一个文本输入框 " " "JButton "定义三个按钮 " " "jp1_jb1,jp1_jb2,jp1_jb3 " " " "JTable jtb "定义一个 " " "JScrollPane jsp "定义一个滚动面板,用于" " " "存放 " " "TableModel tm "自定义一个模型,用于" " " "更新数据 " " "public StuQuery(Frame "构造法,通过传递三个参" " "Main,String title ,boolean "数,实现对话 " " "
摘 要 随着计算机的应用变得越来越普遍和便捷,使得中学有条件使用软件来管理校园事务 。所以我设计学生信息管理系统来简化那些过去用手工实现的管理工作,并使管理更加 有效率。 本文首先介绍了采用的面向对象的语言和数据库基本知识。然后介绍了本体统的概要 设计,包括需求分析,模块的划分,程序的结构以及程序流程图。接着,详细介绍了系 统的具体实现过程,包括模块功能的各种实现,具体界面的设计以及程序具体的实现过 程。 本系统是采用C/S结构设计,用户的权限有2种,普通管理员和超级管理员。整个学生 管理系统分为几个模块:学生信息管理,个个资料管理,课程管理,活动奖励管理,就 业信息管理,规章制度管理,文件管理,学生成绩修改/删除,密码修改等。本文针对这 几个模块的功能,详细介绍了相关的面向对象的C#语言和对关系数据库数据库的设计访 问,以及模块的功能设计和具体实现。 关键词:面向对象的语言; 需求分析; ASP.NET; 概要设计 目 录 1 系统功能概述 1 1.1系统概述 1 1.2系统功能 1 1.3系统功能图 2 2 数据库设计 3 2.1需求分析 3 2.2数据库概念结构设计(E-R图) 3 2.3数据库设计 6 3 系统各功能模块的详细设计 9 3.1系统登陆管理 9 3.2个人信息管理 10 3.3学生信息管理 12 3.4课程信息管理 14 总 结 18 参考文献 20 1 系统功能概述 1.1系统概述 学生信息管理系统是为了方便、快捷、有效地管理学生信息而设计的。通过使用本系 统,可以改变过去靠人工方式管理学生信息时存在的耗费人力、难于查询和修改等缺点 。为更好的方便服务,本系统设有对学生的查询,如通过学号和姓名进行查询。同时还 可以方便的对学生的信息和成绩进行修改和删除。同时,本系统界面设计简单易懂,即 使没有计算机专业知识也可以很快的了解系统的使用。为了保证学生信息的安全性,还 设置了管理员密码,避免被没有使用权限的人修改,而且,管理员还可以修改密码。 1.2系统功能 本系统分为几个模块,分别是:系统用户管理、个人资料管理、学生信息管理、课程 管理、学生成绩管理、课程管理、学生成绩管理、活动奖励管理、就业信息管理、系统 数据管理。 1. 系统用户管理模块 功能描述:管理员添加、管理员查询。 2. 个人资料管理模块 功能描述:修改密码。 3. 学生信息管理模块 功能描述:学生信息添加、学生信息查询。 4. 课程管理模块 功能描述:课程添加、课程查询。 5. 学生成绩管理模块 功能描述:学生成绩添加、学生成绩查询。 6. 活动奖励管理模块 功能描述:活动奖励添加、活动奖励查询。 7. 就业信息管理模块 功能描述:就业信息登记、就业信息查询。 8. 系统数据管理模块 功能描述:数据备份。 1.3系统功能图 图1.1 系统功能图 2 数据库设计 2.1需求分析 21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用 及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的 发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现 代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方 便。 2.2数据库概念结构设计(E-R图)   在概念设计阶段中,从用户的角度看待数据是管理员的本职,这样的概念模式比较 能够反映出客户的关键。然后再将其转变成逻辑模式。从设计过程中将概念设计独立开 来,使得任务单一化,能够降低设计复杂程度。我先使用ER方法设计数据库的概念,由 三步组成:先建立局部ER模式,然后把各局部ER模式合成一个全局模式,最后通过优化 ,得到概念模式。 各实体和属性的实体图如下。 管理员(用户名,密码,权限),其实体图如下图2.1所示。 图2.1 管理员实体图 学生(学号,姓名,性别,班级,学院,入学时间,联系电话,专业等),其实体图 如下2.2所示。 图2.2 学生实体图 课程(课程号,课程名,类型等),其实体图如下图2.3所示。 图2.3 课程实体图 学生成绩(学号,课程,成绩),其实体图如下图2.4所示。 图2.4 学生成绩实体图 活动奖励(学号,奖励描述,奖励级别),其实体图如下图2.5所示。 图2.5 活动奖励实体图 就业信息(学号,自我评价,就业时间,就业单位等),其实体图如下图2.6所示。 图2.6 就业信息实体图 总体结构的E-R图如图2.7所示。 图2.7 总体结构E-R图 2.3数据库设计 本系统使用Microsoft SQL Server 2008数据库来进行数据库的逻辑设计。首先创建一个数据库,然后根据总体E- R图,创建几个基本数据库,并建立各个之间的联系。数据库的结构如下所示。 allusers为管理
假设我们需要创建三张学生(student)、班级(class)、课程表(course),并进行多表查询,具体步骤如下: 1. 创建学生 ``` CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(20), class_id INT REFERENCES class(id) ); ``` 2. 创建班级 ``` CREATE TABLE class ( id INT PRIMARY KEY, name VARCHAR(20), major VARCHAR(20) ); ``` 3. 创建课程表 ``` CREATE TABLE course ( id INT PRIMARY KEY, name VARCHAR(20), student_id INT REFERENCES student(id), score INT ); ``` 4. 插入数据 在学生中插入数据: ``` INSERT INTO student (id, name, class_id) VALUES (1, '张三', 1), (2, '李四', 2), (3, '王五', 1), (4, '赵六', 2); ``` 在班级中插入数据: ``` INSERT INTO class (id, name, major) VALUES (1, '一班', '计算机科学'), (2, '二班', '信息工程'); ``` 在课程表中插入数据: ``` INSERT INTO course (id, name, student_id, score) VALUES (1, '数据库', 1, 90), (2, '计算机网络', 1, 85), (3, '数据结构', 2, 95), (4, '算法分析', 2, 80), (5, '操作系统', 3, 88), (6, '人工智能', 4, 92); ``` 5. 多表查询 查询每个学生的姓名、班级名称和专业: ``` SELECT s.name AS '学生姓名', c.name AS '班级名称', c.major AS '专业' FROM student s JOIN class c ON s.class_id=c.id; ``` 查询每个学生的姓名、课程名称和成绩: ``` SELECT s.name AS '学生姓名', c.name AS '课程名称', co.score AS '成绩' FROM student s JOIN course co ON s.id=co.student_id JOIN class c ON s.class_id=c.id; ``` 以上是一个简单的学生信息的创建和多表查询的示例,具体的查询语句可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值