收藏 分销(赏)

点歌标准管理系统数据库设计.doc

上传人:快乐****生活 文档编号:3034687 上传时间:2024-06-13 格式:DOC 页数:18 大小:294.04KB 下载积分:8 金币
下载 相关 举报
点歌标准管理系统数据库设计.doc_第1页
第1页 / 共18页
点歌标准管理系统数据库设计.doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
点歌管理系统数据库设计 1 需求分析 1.1 整体功能描述 点歌管理系统可以存储歌曲,并按各种不同方式查找歌曲,如歌曲名,歌手名,歌曲类型,歌曲语言等等,并可以以便对歌曲库进行管理,如歌曲增长和删除。详细功能需求如下。 歌曲管理: (1) 添加歌曲:顾客可以在系统中增长歌曲,在增长之前必要填写完整歌曲属性。 (2) 删除歌曲:顾客可以删除系统中已经存在歌曲。 (3) 修改歌曲属性:顾客可以自由修改系统中已经存在歌曲属性。歌曲属性涉及:歌曲存储位置,歌曲名字,歌手名字,曲风类型,歌曲语言。 歌手信息管理: (4) 添加歌手:顾客可以向系统增长歌手信息。 (5) 删除歌手:顾客可以删除系统中歌手信息。 (6) 修改歌手信息:顾客可以修改歌手信息。歌手信息涉及:歌手名 字,所属地区,性别。 查找歌曲方面: (7) 按歌曲名查找:顾客给定歌曲名字,系统返回歌曲信息。 (8) 按歌手名查找:顾客给定歌手名字,系统返回该歌手所有歌曲。 (9) 按歌曲类型查找:顾客给定歌曲类型,系统返回该类型所有歌曲。 (10) 按歌曲语言类型查找:顾客给定歌曲语言类型,系统返回该语言类型所有歌曲。 查找歌手方面: (11) 按性别查找:顾客给定歌手性别(男或女),系统返回符合条件歌手信息。 (12) 按地区查找:顾客给定歌手所属地区,系统返回符合条件歌手信息。 (13) 按名字查找:顾客给定歌手名字,系统返回符合条件歌手信息。 系统安全性: (14) 登录系统:系统对顾客身份进行验证,授权顾客才干操作系统。 1.2 数据流图 (1) 依照系统功能需求,可以画出系统第1层数据流图。 业务信息 歌手 查找参数 歌手 歌曲 歌曲 查找参数 查找参数 查找参数 业务信息 业务信息 顾客 歌手管理 歌手信息 歌曲管理 查找歌曲 查找歌手 歌曲信息 图1 点歌管理系统第1层数据流图 业务信息 (2) 在系统第1层数据流图之后,再画出系统第2层数据流图。 顾客 接受歌曲信息 查找歌曲 添加歌曲 歌曲信息 顾客 图2 添加歌曲 歌曲 歌曲 歌曲 歌曲 歌曲不存在 歌曲已存在,添加失败 添加成功信息 顾客 接受歌曲信息 查找歌曲 删除歌曲 歌曲信息 顾客 图3 删除歌曲 歌曲 删除歌曲 歌曲 歌曲 歌曲存在 歌曲不存在,删除歌曲失败信息 删除成功信息 顾客 接受歌曲信息 查找歌曲 修改歌曲 歌曲信息 顾客 图4 修改歌曲信息 歌曲 歌曲 歌曲 歌曲 歌曲 歌曲不存在,修改失败信息 修改成功信息 歌曲信息 歌曲 显示歌曲 查找歌曲 接受查找参数 顾客 查找歌曲参数 查找参数 歌曲 歌曲不存在信息 歌曲 顾客 图5 修改歌曲信息 (3) 以上只是给出了一某些功能数据流图,其他数据图和给出数据流图流程大体相似。 1.3数据字典 名字 帐号 别名 无 描述 用于系统身份验证 定义 帐号 = 帐号编号 + 密码 + 顾客名 位置 帐号登记表 图6 帐号数据定义 名字 帐号编号 别名 无 描述 唯一拟定一种帐号 定义 帐号编号 = 正整数 位置 帐号登记表 图7帐号编号数据定义 名字 密码 别名 无 描述 帐号密码 定义 密码 = 字符串 位置 帐号登记表 图8 密码数据定义 名字 顾客名 别名 无 描述 帐号顾客名字 定义 顾客名 = 字符串 位置 帐号登记表 图9 顾客名数据定义 名字 歌曲 别名 无 描述 描述歌曲属性 定义 歌曲 = 歌曲编号 + 歌曲存储途径+歌曲名字 + 歌手编号 + 歌曲类型 + 歌曲语言 位置 歌曲信息登记表 图10 歌曲数据定义 名字 歌曲编号 别名 无 描述 拟定唯一首歌曲 定义 歌曲编号 = 正整数 位置 歌曲记录 图11 歌曲编号数据定义 名字 歌曲存储位置 别名 无 描述 描述歌曲所在文献夹 定义 歌曲存储位置= 磁盘半途径格式 位置 歌曲记录 图12 歌曲存储位置数据定义 名字 歌曲名字 别名 无 描述 描述歌曲名字 定义 歌曲名字 = 字符串 +‘.’+ 音频文献扩展名 位置 歌曲记录 图13 歌曲名字数据定义 名字 曲风类型 别名 无 描述 描述歌曲曲风类型 定义 曲风类型= {流行音乐 | 民族音乐 | 摇滚音乐 | 爵士音乐} 位置 歌曲记录 图14 曲风类型数据定义 名字 歌曲语言 别名 无 描述 描述歌曲演唱语言种类 定义 歌曲类型= { 粤语 | 国语 | 英语 | 日语 | 韩语} 位置 歌曲记录 图15 歌曲语言数据定义 名字 歌手 别名 无 描述 描述歌手信息 定义 歌手 = 歌手编号 + 歌手名字 + 所属地区 + 性别 位置 歌手信息登记表 图16 歌手数据定义 名字 歌手编号 别名 无 描述 唯一拟定一种歌手标记符 定义 歌手编号 = 字符串 位置 歌手记录 图17 歌手编号数据定义 名字 歌手名字 别名 无 描述 描述歌手名字 定义 歌手名字 = 字符串 位置 歌手记录 图18 歌手名字数据定义 名字 所属地区 别名 无 描述 描述歌手工作地方 定义 所属地区 = 字符串 位置 歌手记录 图19 所属地区数据定义 名字 性别 别名 无 描述 描述歌手性别 定义 性别 = { 男 | 女 } 位置 歌手记录 图20 性别数据定义 2 概念设计 2.1 局部视图设计 对需求分析阶段收集到数据按照E-R模型规定进行分类,组织,形成实体,实体属性,标记实体码,拟定实体之间联系类型(1:1,1:n,m:n),设计分E-R图。 歌曲 歌手 演唱 图21 E-R实体图 n 1 歌曲 歌曲编号 歌曲存储位置 歌手编号 歌曲名字 曲风类型 歌曲语言 图22 歌曲属性图 歌手 歌手编号 所属地区 性别 歌手名字 图23 歌手属性图 帐号 帐号编号 密码 顾客名 图 24 帐号属性图 3 逻辑设计 3.1 E-R图向关系模型转换 在这个阶段,逻辑设计重要任务就是要将上一步得到E-R图向关系模型转换,将实体和实体型间联系转换为关系模式,拟定这些模式属性和码。将E-R图转换后,得到关系模式如下,画有下划线为主码: 歌曲(歌曲编号,歌曲名字,歌曲存储位置,曲风类型编号,歌曲语言编号) 曲风类型(曲风类型编号,名字) 歌曲语言(歌曲语言编号,名字) 歌手(歌手编号,歌手名字,所属地区,性别) 演唱(歌曲编号,歌手编号) 帐号(帐号编号,顾客名,密码) 一种视图:视图_歌曲(歌曲名字,歌曲存储位置,曲风类型名字,歌曲语言名字,歌手名字) 3.2 设计DBMS数据字典 将得到关系模式转换为MS SQL 所支持数据模型,所得到表格如下。 图25 帐号登记表 图26 歌手登记表 图27 歌曲登记表 图28 曲风类型登记表 图29 歌曲语言种类登记表 图30 演唱关系表 图31 “视图_歌曲” 视图 3.2 约束条件 本系统选取数据库管理系统为MS SQL 。 (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) SONGSTYLE(name)值唯一。 4 物理设计 本系统选取数据库管理系统为MS SQL 。数据库存取办法,存取途径没有特殊规定,按照系统默认值来设立。索引,聚族,日记,备份等参数,由于本数据库没有特殊规定,都没设立。 5 数据库实行阶段 由于时间上限制,本人只是实现了系统两个功能,一种是“系统登录”, 另一种是就是“添加歌手”. 5.1“添加歌手”功能 代码 #pragma once //SingerMan.h // CSingerMan 命令目的 #include <afxdb.h> class CSingerMan :public CObject { public: CSingerMan(); CSingerMan(CString name,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" // CSingerMan CSingerMan::CSingerMan() { } 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())// fail { AfxMessageBox(_T("数据库连接已经断开,无法执行操作!\n请重新登录!")); return false; } CRecordset rs(&db); CString 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 <afxdb.h> extern CDatabase 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) { CDialog::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 CSingerAddDlg::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(); } else MessageBox(_T("添加歌曲失败!"),_T("失败信息")); } BOOL 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 } 5.2程序运营图 图32 系统初始界面 图33系统登录 图34 添加歌手 5 自我评价与总结 总来说,这次课程设计难度比较大。一种课程设计,是对该们课程一次实践,是一次详细动手能力考验,是理论联系实践一种过程。《数据库系统原理》是一门比较难课程,课程设计自然而然就比较难了。 做这个课程设计时,教师只是给了我一种题目和某些简短需求描述,但是要完毕一种系统设计,这些需求是远远不够。通过在网上搜索资料,去图书馆翻阅文献,最后把功能需求拟定下来了。有了需求描述,接下来几种阶段都是比较好实现,但是到了数据库实行这一步时,就浮现问题了。因素是本人对详细数据库实行不是很理解,是第一次做这个工作。对其中某些名词不是很明白,例如,聚族索引,也不懂得如何科学拟定存取办法,拟定数据库存储构造。这些知识都是实践上知识,感觉课本上学到理论不知如何才干运用到实践当中。 总来说,这次课程设计锻炼了我理论结合实践能力,尽管效果不是较好,但是这种能力的确提高了,并且我得到了诸多实践经验。 6 参照文献 [1]王珊编著 【数据库系统简要教程】,高等教诲出版社 [2]王海龙,董智勇等编著 【Visual C++ 6.0设计师之路】,电子工业出版社
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服