学生选课系统数据库设计「建议收藏」

学生选课系统数据库设计「建议收藏」1.1需求分析数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库和关系数据库。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,如记录、域等。SQLserver2005就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。SQL的优点在于它集

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1.1需求分析

数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库和关系数据库。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,如记录、域等。

SQLserver 2005就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。SQL 的优点在于它集数据查询、数据操纵、数据定义和数据控制功能于一体。

通过调查本地的学校,根据学校的具体情况设计学生选课信息管理系统。主要功能有:

1. 学生管理:学生信息查询、插入、删除、修改等

2. 选课管理:选课信息查询、插入、删除、修改等

3.成绩管理:成绩的查询。

4. 系统管理:操作员信息的管理

5. 系统维护:如数据安全管理(含备份与恢复)、操作员管理、权限设置等

学生选课系统数据库设计「建议收藏」

1.2数据字典

数据流图表达了数据与处理的关系,数据流图作为直观了解系统运行机理的手段,并没有具体描述个类数据的细节,只有通过数据字典进一步细化才能对系统的需求得到具体而确切的了解。数据字典用来说明数据流图中出现的所有元素的详细定义和描述,包括数据流、加工处理、数据存储、数据的起点和终点或外部实体等。

数据字典包括的项目有数据项、数据结构、数据流、数据存储、加工逻辑和外部实体。可使用一些符号来表示数据结构、数据流和数据存储的组成。

数据元素 数据类型 长度 数据来源
学号 char 9 学生表
学生姓名 char 20 学生表
性别 char 2 学生表
年龄 smalldatetime default 学生表
所在系 char 20 学生表
课程号 char 4 课程表
课程名 char 40 课程表
选修课 char 4 课程表
学分 char 4 课程表
学号 char 5 成绩表
课程号 char 3 成绩表
成绩 char 3 成绩表
管理员ID char 4 管理员表
管理员姓名 char 12 管理员表
权限 char 20 管理员表

(1)学号={学号,唯一标识学生,类型:char,长度:9,与课程号唯一标识这门课成绩}。

 2.1 系统E-R图

学生选课系统数据库设计「建议收藏」

学生选课系统数据库设计「建议收藏」

表2-1 学生信息表Student的表结构

主码

列    名

数据类型

宽度

小数位

空否

备  注

Pk

Sno

Char

9

 

N

学号

 

Sname

Char

20

 

N

姓名

 

Ssex

Char

2

 

Y

性别

 

Ssage

SmallDatetime

 

 

Y

出生日期

 

Sdept

Char

20

 

Y

所在系

表2-2 课程信息表Course的表结构

主码

列    名

数据类型

宽度

小数位

空否

备  注

Pk

Cno

Char

4

 

N

课程代码

 

Cname

Char

40

 

N

课程名称

 

Cpno

char

4

 

Y

先修课程

 

Credit

Decimal

4

1

Y

学分

表2-3 选课成绩表SC的表结构

主码

列    名

数据类型

宽度

小数位

空否

备  注

Pk

Sno

Char

5

 

N

学号

Cno

Char

3

 

N

课程代码

 

Grade

Decimal

3

1

Y

成绩

表2-4 管理员表Admin的表结构

主码

列    名

数据类型

宽度

小数位

空否

备  注

Pk

Admin_id

Char

4

 

N

操作员编号

 

Admin_name

Char

12

 

N

操作员姓名

 

Permission

Char

20

 

Y

权限

2.2初始关系模式

Student(Sno,Sname,Ssex,Ssage,Sdept)

其中各项含义分别为:学生(学号,姓名,性别,年龄,所在系)

Course(Cno,Cname,Cpno,Credit)

其中各项含义分别为:课程(课程代码,课程名称,先修课程,学分)

SC(Sno,Cno,Grade)

其中各项含义分别为:选修(学号,课程代码,成绩)

Admin(Amin_id,Admin_name, Permission)

其中各项含义分别为:操作员(操作员编号,操作员姓名,权限)

2.3规范化处理

经过对初始关系模式的规范化处理以下关系模式中不存在部分函数依赖和传递函数依赖,已经达到3NF。(下划线代表主码,斜体外码)

Student(Sno,Sname,Ssex,Ssage,Sdept)

Course(Cno,Cname,Cpno,Credit)

SC(Sno,Cno,Grade)

Admin(Admin_id,Admin_name,Permission)

3.1物理结构

数据库在物理上的存储结构与存储方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是物理结构设计。

数据库的物理结构设计通常分为两步:

(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;

(2)对物理结构进行评价,评价的中的是时间和空间效率。

表2-5 学生信息表Student的表索引表

索引

列    名

数据类型

宽度

Sno

Char

9

Sname

Char

20

无 

Ssex

Char

2

无 

Sage

SmallDatetime

 

无 

Sdept

Char

20

表2-6 课程信息表Course的索引表

索引

列    名

数据类型

宽度

Cno

Char

4

Cname

Char

40

Cpno

Char

4

无 

Credit

Decimal

4

表2-7 选课成绩表SC的索引表

索引

列    名

数据类型

宽度

Sno

Char

9

Cno

Char

4

 无

Grade

Decimal

5

表2-8 操作员表Admin的索引表

索引

列    名

数据类型

宽度

Admin_id

Char

4

无 

Admin_name

Char

12

无 

Permission

Char

20

3.2视图

用SQL管理工具建立常用的一个视图,即学生_成绩视图。

菜单栏中单击工具→ 向导→ 数据库→ 创建视图向导,选择你所要建的试图的对象,选择列名,按照提示,最后单击完成即可。

使用SQL语句建立视图的命令如下:

ps(此处本该数据表建成以后再创建视图,为啦清楚表达物理结构设计所以提前)

create view 学生_成绩
as
select sc.sno,sname,course.cno,cname,grade
from student join sc on student.sno= sc.sno
join course on course.cno=sc.cno

 

4.1数据库物理设计完成之后,需要用RDBMS提供的数据定义语言和其他使用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,在经调试产生目标文件。

用SQL语言建数据库和表代码如下:

学生选课信息管理系统数据库代码如下:

Create database 学生选课管理系统
  On
   (Name=mydatabase1,
Filename='d:\数据库\mydatabase.mdf',
Size=3,
Maxsize=10,
Filegrowth=1),
(Name=mydatabase2,
Filename='d:\数据库\mydatabase.ndf',
Size=5,
Maxsize=15,
Filegrowth=2)
Log on
  (Name=mydatabase_log,
Filename='d:\数据库\mydatabase_log.ldf',
Size=5,
Maxsize=10,
Filegrowth=1)
 

学生选课信息管理系统数据表代码如下:

 

create table Student(
Sno char(9)primary key,
Sname char (20) not null,
Sex char(2)check (sex in('','')),
Sbirth smalldatetime,
Sdept char(20)
);
go
create table Course(
Cno char(3)primary key,
Cname char(40)not null,
Cpno   char(4),
 
Credit Decimal(3,1)
)
go
create table SC(
Sno char(9)references Student(Sno),
Cno char(4)references Course(Cno),
Grade decimal(5,1),
constraint pk primary key(Sno,Cno)
)
go
create table Admin(
Admin_id char(9)primary key,
Admin_name char(12)not null,
Permission char(20)default '0'
)
go

数据的载入

INSERT

    INTO <表名>[(<属性列1>[,<属性列2>…)]

   VALUES(<常量1>[,<常量2>]);

以学生表为例插入输入如下:PS(学号是主码,故不可以相同)

   
insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215121','李勇','','20','CS'); insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215122','刘晨','','19','CS'); insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215123','王敏','','18','MA'); insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('200215125','张立','','19','IS');insert into Student(Sno,Sname,Ssex,Sage,Sdept)

 

数据库的修改操作

UPDATE <表名>

   SET<列名>=<表达式>

   [WHERE<条件>];

 

例如:在学生表中修改学号为’200215121’的所在系为’IS’。

update student
set sdept='IS'
where sno='200215121'
 

数据库的删除操作

DELETE

  FROM<表名>

[WHERE<条件>];

 

例如:删除学号为’200215124’的相关信息

delete
from student
where sno='200215124'
 
 

连接数据库和添加课程de代码如下:

private  void button1_Click(object sender,  EventArgs e) 
{
     
     string s =  "server=.;database=学生选课管理系统;integrated security=true;";
            SqlConnection conn =new SqlConnection();
            conn.ConnectionString = s;
            SqlCommand cmd =  new SqlCommand();
              string sql =  string.Format("insert into Course (Cno,Cname,Cpno,Ccredit) values('{0}','{1}','{2}','{3}')",textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text);
              cmd.CommandText = sql;
              cmd.Connection = conn;
              conn.Open();
              cmd.ExecuteNonQuery();
              conn.Close();
              MessageBox.Show("添加成功!");
           }

 

删除代码如下:

修改课程信息

private  void button1_Click(object sender,  EventArgs e)
        {
            DialogResult r =  MessageBox.Show("你确实要删除吗?","提示", MessageBoxButtons.YesNo);
            if (r ==  DialogResult.No) return;
            string s =  "server=.;database=学生选课管理系统;integrated security=true;";
            SqlConnection conn =new SqlConnection();
            conn.ConnectionString = s;
            SqlCommand cmd =  new SqlCommand();
            string sql;
            sql = string.Format("delete from Course where Cno='{0}'", textBox1.Text);
            cmd.CommandText = sql;
            cmd.Connection = conn;
            conn.Open();
            int n = cmd.ExecuteNonQuery();
            conn.Close();
            MessageBox.Show("删除" + n +"条数据");
        

 

 

 







版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181788.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 献给初学者:谈谈如何学习Linux操作系统

    献给初学者:谈谈如何学习Linux操作系统本文出自“技术成就梦想”博客,请务必保留此出处http://ixdba.blog.51cto.com/2895551/569329。为了能把这篇不错的文章分享给大家。所以请允许我暂时用原创的形式展现给大家一、选择适合自己的linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行,面对这么多的Linux发行版,打

    2022年6月12日
    28
  • 2019银川职工“春晚”为劳动者唱赞歌

    2019银川职工“春晚”为劳动者唱赞歌2019银川职工“春晚”为劳动者唱赞歌

    2022年4月21日
    57
  • Map有序输出_在线反序输出

    Map有序输出_在线反序输出ListOrderedMap位于commons-collections的jar包里,与普通的map相比,ListOrderedMap的key可保持原有顺序。packageutil;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;importorg.apache.commons.collections.map.ListOrderedMap;publicclassListOrderMapTest{pub

    2022年9月15日
    0
  • 16天记住7000考研单词

    16天记住7000考研单词16天记住7000考研单词(第一天)1.WithmyownearsIclearlyheardtheheartbeatofthenuclearbomb.我亲耳清楚地听到原子弹的心脏的跳动。2.Nextyearthebeardedbearwillbearadearbabyintherear.明年,长胡子的熊将在后方产一头可爱的小崽.

    2022年5月29日
    33
  • ASSERT 和 ASSERT_VALID[通俗易懂]

    ASSERT 和 ASSERT_VALID[通俗易懂]这个宏都是MFC的调试宏.ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。事实上,ASSERT_VALID宏就是转化为对象的成员函数AssertValid()的调用,只是这种方法更安全。它的参数是一个对象指针,通过这个指针来调用它的AssertValid()成员…

    2022年9月6日
    3
  • 关于电角度的理解[通俗易懂]

    关于电角度的理解[通俗易懂]从电磁分布的角度来看,永磁体(或励磁)产生的磁场空间分布呈现周期性变化,一个周期为电角度的360度。显然从任意N极出发沿着某圆周方向经过S极再到下一个N极为一个周期的电角度。此过程中永磁体经过了级对数p个电极,即电周期进行了p个,那么p极对数转一圈的电角度则为p*360度…

    2025年6月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号