报刊订阅管理系统数据库

来源:互联网 发布:数据分析的算法 编辑:程序博客网 时间:2024/05/02 21:26

1、   前言(课程设计的目的、意义、要求) 

本系统主要有以下功能模块: 

1)登陆功能:登陆系统为身份验证登录。分为管理员登录和一般用户登录。分别通过不同的用户名和密码进入报刊订阅管理界面,新的用户需要注册。 

2)录入新信息功能:对于管理员,包括新用户信息和新报刊信息的录入功能,信息一旦提交就存入到后台数据库中;普通用户自行注册进行可以修改个人信息。 

3)订阅功能:用户可以订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不可订阅报刊,必须以用户身份订阅报刊。 

4)查询功能:用户可以查询并显示自己所订阅的信息;管理员可以按人员、报刊、部门分类查询。查询出的信息显示在界面上,并且可以预览和打印出结果。 

5)统计功能:管理员可以按用户、部门、报刊统计报刊的销售情况,并对一些重要的订阅信息进行统计;普通用户可以统计出自己的订阅情况,并且可以预览和打印出结果。 

6)系统维护功能:数据的安全管理,主要是依靠管理员对数据库里的信息进行备份和恢复,数据库备份后,如果出了什么意外可以恢复数据库到当时备份的状态,这提高了系统和数据的安全性,有利于系统的维护  

 

2 需求分析 

参考如下: 

报刊订阅管理系统包括如下功能:(结构图如下) 

 

流程图: 过程: 登录和注册流程图: 过程: 统计信息流程图: 过程: 管理员录入新信息流程图: 过程: 用户修改自身信息流程图: 过程: 查询信息 

 

 

 

 

 

 

 

 

 


(1) 登录和注册:登录判断帐号为管理员或普通用户,注册新的普通用户

(2) 管理员录入新信息:管理员登录后,可以录入新的报刊信息

(3) 用户修改自身信息:普通用户登录后可以查看自身信息,并进行资料修改

(4) 查询信息:普通用户可以查询报刊信息,并进行订阅。管理员可以分类查询报刊信息,用户信息

(5) 用户可以查阅自己的订阅信息;管理员可以查阅销售信息。

3 数据库概念结构设计 

参考如下: 

报刊管理:

管理员(Adminuser):管理员名,密码;

部门(Department):部门号,部门名;

用户表(User):用户帐号UserID,密码,真实姓名,身份证、联系号码、联系地址、部门号;

报刊类别表(NewspaperClass):分类编号、分类名称;

报刊信息表(Newspaper):报刊号、报刊名称、出版社、出版周期、季度报价、内容介绍、分类编号;

订单表(Order):订单编号、用户编号(UsrID)、报刊号、订阅数、订阅月数;

 (2) 实体间的联系:  

 部门与用户之间是1:n的联系;     

 报刊类别与报刊之间也是1:m(m0)的联系;      

订单与用户之间也是m:n的联系;  

订单与报刊之间则是m:n的关系。 

(3) 人事管理子系统的E-R图:

 


         1            n

  

 


                              1                          1

 

                              m          m        n       n

 

 

4 数据库逻辑结构设计 

参考如下: 

(1) 逻辑结构设计图型描述:

 

2)逻辑结构设计列表描述

序号

表名

中文名

作用

1

Adminuser

管理员信息

记录管理员的帐号和密码

2

Department

部门信息

部门分类

3

ForUsers

用户表

存储用户信息

4

NewspaperClass

报刊类别

存储报刊类别

5

Newspaper

报刊

存储报刊信息

6

Order

订单

用户订阅信息

5 数据库实现 

参考如下:

5.1建立数据库、数据表、视图、索引

5.1.1建立数据库

        create database Newspaper;

5.1.2建立数据表

1)管理员信息表的建立:

CREATETABLE[dbo].[Adminstor](

   [AdID][int]IDENTITY(1,1)NOTNULL,

   [AdName][nchar](10)NOTNULL,

   [AdPassword][nchar](50)NOTNULL,

 CONSTRAINT[PK_Adminstor]PRIMARYKEYCLUSTERED

(

   [AdID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

2)用户信息表的建立:

CREATETABLE[dbo].[ForUsers](

   [UID][int]IDENTITY(1,1)NOTNULL,

   [UName][nvarchar](50)NOTNULL,

   [UPassword][nchar](10)NOTNULL,

   [RealName][nchar](10)NULL,

   [IDCard][nvarchar](50)NULL,

   [Telephone][nvarchar](50)NULL,

   [Address][nvarchar](50)NULL,

   [DepartmentID][int]NULL,

 CONSTRAINT[PK_ForUsers]PRIMARYKEYCLUSTERED

(

   [UID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

3)部门信息表的建立

CREATETABLE[dbo].[Department](

   [DepartmentID][int]NOT NULL,

   [DepartmentName][nchar](10)NOTNULL

)ON[PRIMARY]

4)报刊类别的建立

CREATETABLE[dbo].[NewspaperClass](

   [ClassID][int]IDENTITY(1,1)NOTNULL,

   [ClassName][nvarchar](50)NOTNULL,

 CONSTRAINT[PK_NewspaperClass]PRIMARYKEYCLUSTERED

(

   [ClassID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

5)报刊信息的建立

CREATETABLE[dbo].[Newspaper](

   [NewspaperID][int]NOT NULL,

   [NewspaperName][nvarchar](50)NOTNULL,

   [Public][nvarchar](50)NULL,

   [PublicTime][date]NULL,

   [Cost][money]NOT NULL,

   [About][nvarchar](max)NULL,

   [ClassID][int]NOT NULL

)ON[PRIMARY]

6)订单信息表的建立

CREATETABLE[dbo].[Order1](

   [OrderID][int]IDENTITY(1,1)NOTNULL,

   [UserName][nchar](10)NOTNULL,

   [NewspaperName][nchar](10)NULL,

   [Count][int]NULL,

   [Month][int]NULL,

 CONSTRAINT[PK_Order]PRIMARYKEYCLUSTERED

(

   [OrderID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

5.2数据入库

        系统包括登录注册,录入信息,管理自身信息,查询和订阅报刊信息,统计订阅信息五大功能模块,共有6张基本表,牵涉到大量数据的录入。在这里采用少数用例进行演示。

5.3创建各个功能的存储过程  

        

6 运行结果(包括系统测试)

     登录(管理员登录和普通用户)

 

 

录入报刊信息

查询报刊信息:

用户查询订阅信息:

管理员查询信息:

 

 

 

7 数据库设计经验教训总结

   本次课程设计,我是用C#结合SQL server来完成的。

制作期间,我遇到了很多的问题,比如Mysql的语法与SQL serveer的不同,之前的Natural join在这边不适用了;数据库定义中关键字Order的使用,让我久久不能找出Bug……不过SQL server的视图化的运用,使得工作变得更加有效率。

通过本次实验,我学习了SQL server的新的语法和其数据库的使用,与C#结合,在VS2010的平台上进行了实践,对数据库的掌握有了进一步的了解,对C#也有了更进一步的学习。

附录1数据库逻辑结构定义

参考如下:

1.      管理员、用户基本信息表,用于记录其基本信息:

2.      报刊(Newspaper)基本信息表,用于记录报刊的基本信息:

 

3.      订单(Order)基本信息表,用于记录订单的基本信息:

附录2存储过程定义

参考如下:

 

1.p1Adminuser_Insert的定义:

INSERTINTO[Newspaper].[dbo].[Adminstor]

          ([AdName]

          ,[AdPassword])

    VALUES

          (<AdName,nchar(10),>

          ,<AdPassword,nchar(50),>)

2.ForUser_Insert的定义:

INSERTINTO[Newspaper].[dbo].[ForUsers]

          ([UName]

          ,[UPassword]

          ,[RealName]

          ,[IDCard]

          ,[Telephone]

          ,[Address]

          ,[DepartmentID])

    VALUES

          (<UName,nvarchar(50),>

          ,<UPassword,nchar(10),>

          ,<RealName,nchar(10),>

          ,<IDCard,nvarchar(50),>

          ,<Telephone,nvarchar(50),>

          ,<Address,nvarchar(50),>

          ,<DepartmentID,int,>)

4.    Newspaper_insert的定义

INSERTINTO[Newspaper].[dbo].[Newspaper]

          ([NewspaperID]

          ,[NewspaperName]

          ,[Public]

          ,[PublicTime]

          ,[Cost]

          ,[About]

          ,[ClassID])

    VALUES

          (<NewspaperID,int,>

          ,<NewspaperName,nvarchar(50),>

          ,<Public,nvarchar(50),>

          ,<PublicTime,date,>

          ,<Cost,money,>

          ,<About,nvarchar(max),>

          ,<ClassID,int,>)

 

 

附录3数据查看和存储过程功能的验证

1.基本表的数据查看(基于视图查询,以SQL Server为例)

1)        查看Adminuser表中的数据:

 

2)        查看用户表中的数据:

2.存储过程功能的验证:

1)        存储过程Newspaper_Insert功能的验证:

 

附录4所有的SQL运行语句

1)管理员信息表的建立:

CREATETABLE[dbo].[Adminstor](

   [AdID][int]IDENTITY(1,1)NOTNULL,

   [AdName][nchar](10)NOTNULL,

   [AdPassword][nchar](50)NOTNULL,

 CONSTRAINT[PK_Adminstor]PRIMARYKEYCLUSTERED

(

   [AdID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

2)用户信息表的建立:

CREATETABLE[dbo].[ForUsers](

   [UID][int]IDENTITY(1,1)NOTNULL,

   [UName][nvarchar](50)NOTNULL,

   [UPassword][nchar](10)NOTNULL,

   [RealName][nchar](10)NULL,

   [IDCard][nvarchar](50)NULL,

   [Telephone][nvarchar](50)NULL,

   [Address][nvarchar](50)NULL,

   [DepartmentID][int]NULL,

 CONSTRAINT[PK_ForUsers]PRIMARYKEYCLUSTERED

(

   [UID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

3)部门信息表的建立

CREATETABLE[dbo].[Department](

   [DepartmentID][int]NOT NULL,

   [DepartmentName][nchar](10)NOTNULL

)ON[PRIMARY]

4)报刊类别的建立

CREATETABLE[dbo].[NewspaperClass](

   [ClassID][int]IDENTITY(1,1)NOTNULL,

   [ClassName][nvarchar](50)NOTNULL,

 CONSTRAINT[PK_NewspaperClass]PRIMARYKEYCLUSTERED

(

   [ClassID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

5)报刊信息的建立

CREATETABLE[dbo].[Newspaper](

   [NewspaperID][int]NOT NULL,

   [NewspaperName][nvarchar](50)NOTNULL,

   [Public][nvarchar](50)NULL,

   [PublicTime][date]NULL,

   [Cost][money]NOTNULL,

   [About][nvarchar](max)NULL,

   [ClassID][int]NOT NULL

)ON[PRIMARY]

6)订单信息表的建立

CREATETABLE[dbo].[Order1](

   [OrderID][int]IDENTITY(1,1)NOTNULL,

   [UserName][nchar](10)NOTNULL,

   [NewspaperName][nchar](10)NULL,

   [Count][int]NULL,

   [Month][int]NULL,

 CONSTRAINT[PK_Order]PRIMARYKEY CLUSTERED

(

   [OrderID]ASC

)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS  =ON) ON [PRIMARY]

)ON[PRIMARY]

 

1.p1Adminuser_Insert的定义:

INSERTINTO[Newspaper].[dbo].[Adminstor]

          ([AdName]

          ,[AdPassword])

    VALUES

          (<AdName,nchar(10),>

          ,<AdPassword,nchar(50),>)

2.ForUser_Insert的定义:

INSERTINTO[Newspaper].[dbo].[ForUsers]

          ([UName]

          ,[UPassword]

          ,[RealName]

          ,[IDCard]

          ,[Telephone]

          ,[Address]

          ,[DepartmentID])

    VALUES

          (<UName,nvarchar(50),>

          ,<UPassword,nchar(10),>

          ,<RealName,nchar(10),>

          ,<IDCard,nvarchar(50),>

          ,<Telephone,nvarchar(50),>

          ,<Address,nvarchar(50),>

          ,<DepartmentID,int,>)

5.    Newspaper_insert的定义

INSERTINTO[Newspaper].[dbo].[Newspaper]

          ([NewspaperID]

          ,[NewspaperName]

          ,[Public]

          ,[PublicTime]

          ,[Cost]

          ,[About]

          ,[ClassID])

    VALUES

          (<NewspaperID,int,>

          ,<NewspaperName,nvarchar(50),>

          ,<Public,nvarchar(50),>

          ,<PublicTime,date,>

          ,<Cost,money,>

          ,<About,nvarchar(max),>

          ,<ClassID,int,>)

 

0 0
原创粉丝点击