《点歌管理系统数据库设计(11页).doc》由会员分享,可在线阅读,更多相关《点歌管理系统数据库设计(11页).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-点歌管理系统数据库设计-第 11 页点歌管理系统数据库设计1 需求分析1.1 整体功能描述点歌管理系统能够存储歌曲,并按多种不同方式查找歌曲,如歌曲名,歌手名,歌曲类型,歌曲语言等等,并能够方便的对歌曲库进行管理,如歌曲的增加和删除。具体的功能需求如下。歌曲管理:(1) 添加歌曲:用户可以在系统中增加歌曲,在增加之前必须填写完整歌曲的属性。(2) 删除歌曲:用户可以删除系统中已经存在的歌曲。(3) 修改歌曲属性:用户可以自由修改系统中已经存在的歌曲的属性。歌曲的属性包括:歌曲的存放的位置,歌曲名字,歌手名字,曲风类型,歌曲语言。歌手信息管理:(4) 添加歌手:用户可以向系统增加歌手的信息。(
2、5) 删除歌手:用户可以删除系统中的歌手信息。(6) 修改歌手信息:用户可以修改歌手的信息。歌手信息包括:歌手名字,所属地区,性别。查找歌曲方面的:(7) 按歌曲名查找:用户给定歌曲的名字,系统返回歌曲的信息。(8) 按歌手名查找:用户给定歌手的名字,系统返回该歌手的所有歌曲。(9) 按歌曲类型查找:用户给定歌曲的类型,系统返回该类型所有歌曲。(10) 按歌曲语言类型查找:用户给定歌曲的语言类型,系统返回该语言类型的所有歌曲。查找歌手方面:(11) 按性别查找:用户给定歌手的性别(男或女),系统返回符合条件的歌手信息。(12) 按地区查找:用户给定歌手的所属地区,系统返回符合条件的歌手信息。(
3、13) 按名字查找:用户给定歌手的名字,系统返回符合条件的歌手信息。系统安全性:(14) 登录系统:系统对用户的身份进行验证,授权用户才能操作系统。 数据流图(1) 根据系统的功能需求,可以画出系统的第1层数据流图。业务信息歌手查找参数歌手歌曲歌曲查找参数查找参数查找参数业务信息业务信息用户歌手管理歌手信息歌曲管理查找歌曲查找歌手歌曲信息图1 点歌管理系统第1层数据流图业务信息(2) 在系统的第1层数据流图之后,再画出系统的第2层数据流图。 歌曲 歌曲 歌曲 歌曲 歌曲不存在 歌曲已存在,添加失败 添加成功信息 歌曲 删除歌曲 歌曲 歌曲 歌曲存在 歌曲不存在,删除歌曲失败信息 删除成功信息
4、歌曲 歌曲 歌曲 歌曲 歌曲 歌曲不存在,修改失败信息 修改成功信息 歌曲 查找歌曲的参数 查找参数 歌曲 歌曲不存在信息 歌曲(3) 以上只是给出了一部分功能的数据流图,其它的数据图和给出的数据流图的流程大体相似。名字帐号别名无描述用于系统的身份验证定义帐号 = 帐号编号 + 密码 + 用户名位置帐号记录表名字帐号编号别名无描述唯一确定一个帐号定义帐号编号 = 正整数位置帐号记录表名字密码别名无描述帐号的密码定义密码 = 字符串位置帐号记录表名字用户名别名无描述帐号的用户名字定义用户名 = 字符串位置帐号记录表名字歌曲别名无描述描述歌曲的属性定义歌曲 = 歌曲编号 + 歌曲的存放路径+歌曲名
5、字 + 歌手编号 + 歌曲类型 + 歌曲语言位置歌曲信息记录表 图10 歌曲数据定义名字歌曲编号别名无描述确定唯一首歌曲定义歌曲编号 = 正整数位置歌曲记录 图11 歌曲编号数据定义名字歌曲的存放位置别名无描述描述歌曲所在的文件夹定义歌曲的存放位置= 磁盘中的路径格式位置歌曲记录图12 歌曲存放位置数据定义名字歌曲名字别名无描述描述歌曲的名字定义歌曲名字 = 字符串 +.+ 音频文件扩展名位置歌曲记录 图13 歌曲名字数据定义名字曲风类型别名无描述描述歌曲的曲风类型定义曲风类型= 流行音乐 | 民族音乐 | 摇滚音乐 | 爵士音乐位置歌曲记录 图14 曲风类型数据定义名字歌曲语言别名无描述描述
6、歌曲的演唱语言种类定义歌曲类型= 粤语 | 国语 | 英语 | 日语 | 韩语位置歌曲记录 图15 歌曲语言数据定义名字歌手别名无描述描述歌手的信息定义歌手 = 歌手编号 + 歌手名字 + 所属地区 + 性别位置歌手信息记录表图16 歌手数据定义名字歌手编号别名无描述唯一确定一个歌手的标识符定义歌手编号 = 字符串位置歌手记录 图17 歌手编号数据定义名字歌手名字别名无描述描述歌手的名字定义歌手名字 = 字符串位置歌手记录 图18 歌手名字数据定义名字所属地区别名无描述描述歌手工作的地方定义所属地区 = 字符串位置歌手记录 图19 所属地区数据定义名字性别别名无描述描述歌手的性别定义性别 =
7、男 | 女 位置歌手记录 图20 性别数据定义2 概念设计2.1 局部视图设计对需求分析阶段收集到的数据按照E-R模型的要求进行分类,组织,形成实体,实体的属性,标识实体的码,确定实体之间的联系类型(1:1,1:n,m:n),设计分E-R图。 n 1歌曲歌曲编号歌曲存放位置歌手编号歌曲名字曲风类型歌曲语言图22 歌曲属性图歌手歌手编号所属地区性别歌手名字图23 歌手属性图帐号帐号编号密码用户名图 24 帐号属性图3 逻辑设计3.1 E-R图向关系模型的转换在这个阶段,逻辑设计的主要任务就是要将上一步得到的E-R图向关系模型转换,将实体和实体型间的联系转换为关系模式,确定这些模式属性和码。将E-
8、R图转换后,得到的关系模式如下,画有下划线的为主码:歌曲(歌曲编号,歌曲名字,歌曲存放位置,曲风类型编号,歌曲语言编号)曲风类型(曲风类型编号,名字)歌曲语言(歌曲语言编号,名字)歌手(歌手编号,歌手名字,所属地区,性别)演唱(歌曲编号,歌手编号)帐号(帐号编号,用户名,密码)一个视图:视图_歌曲(歌曲名字,歌曲存放位置,曲风类型名字,歌曲语言名字,歌手名字)3.2 设计DBMS的数据字典将得到的关系模式转换为MS SQL 2000 所支持的数据模型,所得到的表格如下。图25 帐号记录表图26 歌手记录表图27 歌曲记录表图28 曲风类型记录表图29 歌曲语言种类记录表图30 演唱关系表图31
9、 “视图_歌曲” 视图3.2 约束条件本系统选择的数据库管理系统为MS SQL 2005。(1) 演唱关系表的主键为(songid,singerid)同时songid为SONG (songid)的外码,singerid为SINGER(singerid)的外码。(2) 所有的关系表的主键都为自动递增的正整数,演唱关系表的主键例外。(3) SONG(style)为SONGSTYLE(sytleid)的外码,SONG(lanStyle)为SONGLANGUANGE(languageid)的外码。(4) SONG(sex)只能为M或者F。(5) SONGLANGUAGE(name)的值唯一。(6) S
10、ONGSTYLE(name)的值唯一。4 物理设计本系统选择的数据库管理系统为MS SQL 2000。数据库的存取方法,存取路径没有特殊要求,按照系统的默认值来设置。索引,聚族,日志,备份等参数,因为本数据库没有特殊要求,都没设置。5 数据库实施阶段由于时间上的限制,本人只是实现了系统的两个功能,一个是“系统的登录”,另一个是就是“添加歌手”.“添加歌手”功能的 代码#pragma once/ CSingerMan 命令目标#include class CSingerMan : public CObjectpublic:CSingerMan();CSingerMan(CString name,
11、 CString address, CString sex);static bool AddSinger(CSingerMan& singer , CDatabase& db);virtual CSingerMan();public:CString m_singerName;CString m_address;CString m_sex;CString m_singerId;/ SingerMan.cpp : 实现文件#include stdafx.h#include SingSong.h#include SingerMan.h/ CSingerManCSingerMan:CSingerMan
12、()CSingerMan:CSingerMan( CString name, CString address, CString sex )m_singerName=name;m_address=address;m_sex=sex;CSingerMan:CSingerMan()bool CSingerMan:AddSinger( CSingerMan& singer , CDatabase& db )if(!db.IsOpen()/ failAfxMessageBox(_T(数据库的连接已经断开,无法执行操作!n请重新登录!);return false;CRecordset rs(&db);CS
13、tring strSql;strSql.Format(_T(insert into SINGER (name,address,sex ) values (%s,%s,%s),singer.m_singerName, singer.m_address, singer.m_sex);db.ExecuteSQL(strSql);return true;/ SingerAddDlg.cpp : 实现文件#include stdafx.h#include SingSong.h#include SingerAddDlg.h#include SingerMan.h#include extern CDatab
14、ase gal_db;/ CSingerAddDlg 对话框IMPLEMENT_DYNAMIC(CSingerAddDlg, CDialog)CSingerAddDlg:CSingerAddDlg(CWnd* pParent /*=NULL*/): CDialog(CSingerAddDlg:IDD, pParent), m_singerId(_T(), m_singerName(_T(), m_address(_T()CSingerAddDlg:CSingerAddDlg()void CSingerAddDlg:DoDataExchange(CDataExchange* pDX)CDialo
15、g:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT_SINGERID, m_singerId);DDX_Text(pDX, IDC_EDIT_SINGERNAME, m_singerName);DDX_Text(pDX, IDC_EDIT_ADDRESS, m_address);BEGIN_MESSAGE_MAP(CSingerAddDlg, CDialog)ON_BN_CLICKED(IDOK, &CSingerAddDlg:OnBnClickedOk)END_MESSAGE_MAP()/ CSingerAddDlg 消息处理程序void CSinger
16、AddDlg:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码UpdateData(true);CButton* p=(CButton*)GetDlgItem(IDC_RADIO_MALE);if(!p-GetState()m_sex=_T(F);CSingerMan singer(m_singerName,m_address,m_sex);if(CSingerMan:AddSinger(singer, gal_db)MessageBox(_T(成功添加歌曲!),_T(成功信息);OnOK();elseMessageBox(_T(添加歌曲失败!),_T(失败信息);B
17、OOL CSingerAddDlg:OnInitDialog()CDialog:OnInitDialog();/ TODO: 在此添加额外的初始化CButton* p=(CButton*)(GetDlgItem(IDC_RADIO_MALE);p-SetCheck(TRUE);m_sex=_T(M);return TRUE; / return TRUE unless you set the focus to a control/ 异常: OCX 属性页应返回FALSE程序运行图图32 系统初始界面图33系统登录图34 添加歌手5 自我评价与总结总的来说,这次的课程设计的难度比较大。一个课程设计
18、,是对该们课程的一次实践,是一次具体的动手能力的考验,是理论联系实践的一个过程。数据库系统原理是一门比较难的课程,课程设计自然而然的就比较难了。做这个课程设计时,老师只是给了我一个题目和一些简短的需求描述,但是要完成一个系统的设计,这些需求是远远不够的。通过在网上搜索资料,去图书馆翻阅文献,最终把功能需求确定下来了。有了需求描述,接下来的几个阶段都是比较好实现的,但是到了数据库实施这一步时,就出现问题了。原因是本人对具体数据库的实施不是很了解,是第一次做这个工作。对其中的某些名词不是很明白,例如,聚族索引,也不知道如何科学的确定存取方法,确定数据库的存储结构。这些知识都是实践上的知识,感觉课本上学到的理论不知如何才能运用到实践当中。总的来说,这次的课程设计锻炼了我的理论结合实践的能力,尽管效果不是很好,但是这种能力确实提高了,并且我得到了很多实践的经验。6 参考文献 1王珊编著 【数据库系统简明教程】,高等教育出版社2王海龙,董智勇等编著 【Visual C+ 6.0设计师之路】,电子工业出版社