1、陈腾数据库课程设计个人记账管理系统课程设计报告 课程设计题目: 个人记账数据库管理系统 专 业:软件工程 班 级:1221805* *学 号: * * 2014年 1月09日 关系数据库原理及应用课程设计任务书一、目的:通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。二、课程设计要求:1对各个系统进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3. 设计出详细
2、的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)三、课程是设计题目: 个人记账管理系统数据库的设计与实现描述:设计一个个人记帐系统。实现下列功能:1家庭人员信息维护2支出和收入项目维护;1家庭人员的支出明细
3、;2家庭人员的收入明细;二、数据库设计内容 3 (一)需求分析.3 (二)数据库概念设计.3 (三)数据库逻辑设计5 (四)数据库与数据表设计 物理结构设计5 1.数据库与数据表设计.5 2.数据完整性设计.6 (一)建数据库家庭管理库.7 (二)建表家庭信息表、支出表、收入表.7 (三)视图.9(四)存储过程.9(五)触发器 10(六)运行和维护12 1. 关系图的建立.12 2. 简单查询.123. 复杂查询.154.数据库的用户与权限管理17四、实验心得 22个人记账数据库管理系统一、需求分析家庭成员(jiating):包括姓名(jtname)、性别(jtsex)、年龄(jtage)、家
4、庭成员关系(jtrelation)、地位(jitstatus) 身份证号码(jtID)、爱好(jthobby)、银行账号(banknum)收入(income):包括姓名(inname)、银行账号(banknum)工资(insal)、岗位津贴(ingang)、偶然获得(inchance)、其他收入(inother)、月份(inmonth)支出(cost):包括银行账号(banknum)、电话费(ctel)、服装费(ccloth)、食物费(cfood)、书费(cbook)、医疗费(chospital)、月份(cmonth)各对象之间的联系如下:每个成员有多项收入,每个成员有多项支出。二概念结构设计
5、个人记账管理系统的E-R图如图所示: 三、逻辑数据库结构由实体jiating、income、cost 转换的关系模式如下:jiating(jtname,jtsex,jtage,jtrelation,jtstatus,jtID,jthobby,Banknum)income(jtname,insal,inother,ingang,inchance,inmonth)cost(banknum,ctel,ccloth,cfood,cbook,chospital,cmonth)四、通过查询分析器实现各个二维表-先建立数据库(zhaozq)create database zhaozqdrop databas
6、e zhaozq1.建立家庭成员表 use zhaozqcreate table jiating -家庭表(jtname char(10) not null primary key, -姓名,主键,起唯一标识作用 jtsex char(2), -性别 jtage int, -年龄 jtrelation char(10), -关系 jtstatus char(20), -职业 jtID int , -身份证号 jthobby char(20), -兴趣爱好 banknum int) -银行账号插入数据insert into jiating values ( 赵小山,男,50,父亲,司机,3601
7、21,踢足球,0013)insert into jiating values(李晓玲,女,45,母亲,职工,360122,购物,0014)insert into jiating values (赵小刚,男,20,哥哥,教师,360124,唱歌,0016)insert into jiating values (赵小强,男,26,我,学生,360125,看书,0017)-查看成员表select *from jiating-删除成员表drop table jiating2.建立收入表 use zhaozqcreate table income -收入表(inname char(10) , -收入人姓
8、名 insal int , -工资 infuli int , -福利收入 inchance int, -偶然获得 inother int, -其它收入 inmonth int) -月份插入数据insert into income values (赵小山,5000,1200,200,500, 1)insert into income values (赵小山,2500,3500,400,300,3)insert into income values(赵小山,2400,4000,400,300,4)insert into income values(赵小山,3000,3300, 400,399,6)
9、insert into income values(赵小山,3000,3500,300,500,8)insert into income values(李晓玲,3000,1000,100,300,2)insert into income values(李晓玲,2399,1200,1399,340,3)insert into income values(李晓玲,2345,1234,1459,330,5)insert into income values(李晓玲,2344,1245,1456,329,7)insert into income values(李晓玲,2300,1200,1300,32
10、0,9)insert into income values(赵小刚,1200,1300,120,330,12)insert into income values(赵小刚,1280,1900,170,270,6)insert into income values(赵小刚,1200,1300,130,220,12)insert into income values(赵小刚,1200,1400,130,280,11)insert into income values(赵小刚,600,50,100,300,8)-查看收入表select *from income -删除成员表drop table inc
11、ome3.建立支出表use zhaozqcreate table cost(banknum int , ctel int, -电话费 ccloth int, -衣服费 cfood int, -食物费 cbook int, -书费 chospital int ,-医疗费cmonth int) -月份插入数据insert into cost values (13,30,400,600,450,1000, 1)insert into cost values (13,32,400,400,430,1900,2)insert into cost values (13,33,300,200,440,130
12、0,5)insert into cost values (13,55,500,230,480,1700,8)insert into cost values (13,57,800,339,770,1000,10)insert into cost values (14,58,800,340,660,2000,2)insert into cost values (14,39,600,440,850,3000,3)insert into cost values (14,60,300,400,880,1000,4)insert into cost values (15,44,400,300,480,12
13、00,5)insert into cost values (15,20,430,500,600,1500,6)insert into cost values (15,30,220,300,400,1200,7)insert into cost values (15,35,625,300,700,2400,10)insert into cost values (16,77,700,533,800,1000,11)insert into cost values (16,30,400,330,500,1000,12)insert into cost values (16,39,300,400,440
14、,1200,9)-查看支出表select *from cost-删除成员表drop table cost五.根据表进行相关的查询和更新(插入、修改、删除)-1.在jiating表中建立一个check约束 -用来检查字段值所允许的范围alter table jiatingadd constraint jt_age check(jtage between 10 and 60)-2.在jiating表中增加一个字段alter table jiating add jtaaa char(10)-3.将jiating表中姓名为“赵小刚”的职位改为“经理”update jiating set jtstatu
15、s=经理where jtname=赵小刚-查看修改后的家庭表select *from jiating-4.在income表中查询姓名为“赵小山”的一年内其中几个月的收入select insal ,inmonthfrom income where inname=赵小山-5.在jiating和income表中查询爱好、工资、偶然获得和月份select jthobby,insal,inchance,inmonthfrom jiating ,income where jiating.jtname=income.inname -6.在cost表中查询医疗费的总支出select sum(chospital
16、) as total from cost-7.算出cost表中电话费和衣服费的总支出select sum(ctel+ccloth) as totalfrom cost-9.在cost表中查询银行账号为0013的电话费和衣服费的总支出select ctel+ccloth from costwhere banknum=13-10.在cost表中查出2月份的食物费的总支出select sum(cfood) as total,cmonthfrom costgroup by cmonthhaving (cmonth =2)-11.从cost表中算出所有的支出select sum(ctel+ccloth+
17、cfood+cbook+chospital) as alltotalfrom cost-12.从income表中算出所有的收入select sum(insal+infuli+inchance+inother) as 收入总数from income-13利用income和cost表算出实际收入,用总收入减去总支出select (sum(insal+infuli+inchance+inother)-sum(ctel+ccloth+cfood+cbook+chospital) as 实际收入from cost,income-14.从jiating和cost 表中找出姓名为“赵小山”的在2月份的总支出
18、select sum(ctel+ccloth+cfood+cbook+chospital) as totalfrom cost,jiatingwhere jtname=赵小山 and cmonth=2-15.在cost表中建立有返回参数的存储过程create procedure costq(banknum int , ctel int , ccloth int , cfood int , cbook int, chospital int, cmonth int )as insert into cost values( banknum,ctel,ccloth,cfood,cbook,chospi
19、tal,cmonth) -执行存储过程exec costq banknum=16,ctel=40,ccloth=45, cfood=360,cbook=80,chospital=400,cmonth=6-删除存储过程drop procedure costq-16.在jiating和income中建立一个有查询功能的视图create view m_ias select jiating.jtname,jtsex,jtage,insalfrom jiating ,incomewhere jiating.jtname=income.inname -查看视图select *from m_i-17.在ji
20、ating中建立一个有查询功能的视图create view m_nas select jtsex,jtage,jthobbyfrom jiating-18.在cost表中建立一个有查询功能的视图create view m_s as select ctel,ccloth,cbookfrom cost-19.利用视图m_s和m_n查询年龄为20的电话费、衣服费和性别select ctel,ccloth,jtsexfrom m_n,m_swhere jtage=20-20.创建用户登录和访问权限exec sp_addlogin user2,123,zhaozqexec sp_adduser user
21、2,user2,db_ownerexec sp_addlogin user1,456,zhaozqexec sp_adduser user1,user1,db_owner-21.将jiating的查询功能授予所有用户grant select on jiating to public-22.将查询和更新功能授予用户user2,并将此功能授予其他用户grant select,update(jtname)on jiatingto user2with grant option七、实验总结和心得:通过这次课程设计的实际调查与操作,我了解了目前记账管理的现状,学习并掌握了记账管理系统的设计思路,以及相应SQL语言的编写,同时,可以熟练运用流程控制语句来完成一些较为复杂的设计,存储过程和触发器也基本掌握,视图和索引的功能也有了相当程度的了解。同时也由于个人知识不全面,所做程序功能不是很齐全。对于用户管理权限的限制做的不够完善,还有对于数据库的安全不能有效保证。 掌握了SQL Server 2000的功能与特点以及相应的SQL语言,让我们可以很好地运用触发器和存储过程等模块,去解决一些生活中的实际问题,而不光是纸上谈兵;同时,可以使我们对一个完整数据库系统的设计过程有了更深入的了解和体会。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2