影碟租赁系统影碟管理的设计与实现课程设计Word文档格式.docx
- 文档编号:18411200
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:34
- 大小:185.02KB
影碟租赁系统影碟管理的设计与实现课程设计Word文档格式.docx
《影碟租赁系统影碟管理的设计与实现课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《影碟租赁系统影碟管理的设计与实现课程设计Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
初始条件:
理论:
学完计算机基础知识,掌握C/C++语言编程基础和VC开发平台的使用。
实践:
计算机科学系实验中心提供计算机及软件开发环境。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格形式记录。
(2)系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。
要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面,枚举量用枚举类型表示。
至少实现数据记录的增加、修改、删除、查询及相应结果的显示,查询应能按不同数据项进行。
(3)编制好程序后,设计若干测试用例,上机测试并通过所设计的程序系统。
(4)设计报告按格式要求书写。
设计报告书正文的内容应包括:
1.系统描述,包括问题说明、数据需求和功能需求;
2.系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计的说明;
3.系统测试,包括测试用例的描述,测试方法和测试结果;
4.设计的特点、不足、收获与体会。
时间安排:
设计安排一周(21—21周(7月6-10日)):
周1上午:
指导教师介绍开发平台的使用、文件操作等。
周1下午:
完成系统分析、代码设计、文件设计、输入设计、
输出设计、用户界面设计和处理过程设计。
周2-周4:
完成程序设计与调试,并撰写设计报告书。
周五全天:
设计验收并收取设计报告(第1-8节课到实验中心进行上机验收)。
指导教师签名:
2012年6月28日
系主任(或责任教师)签名:
2012年6月29日
影碟租赁系统影碟管理的设计与实现
1系统描述
1.1问题说明
利用所学的计算机基础知识,C++语言编程基础和VC开发平台的使用,设计并实现一个影碟管理系统,实现对影碟的各种操作和管理,包括入库、查询、删除等。
1.2数据需求
系统需要定义的数据
序号
类型
名称
作用
1
long
num
影碟的序号
2
char
name[]
影碟的名称
3
protagonist[]
主演
4
int
ReleaseYear
上映时间
5
type[]
类型(喜剧、爱情、动作、剧情)
6
flag
类型标识(0、1、2、3)
7
amount
库存量
8
video
*next
指向下一影碟
9
struct
video
定义结构体类型
1.3功能需求
系统需要实现的功能
功能
creat
录入影碟信息并新建一个影碟管理系统
输出所有影碟信息记录
delete
删除不需要的影碟信息
insert
添加新的影碟信息
search
按片名查询影碟信息
sort
按影碟类型进行分类查询
save
向文件保存录入的所有影碟信息
get
从文件取出影碟信息以使用
exit
退出影碟管理系统
10
main
显示各功能供用户选择,根据选择调用相应功能
2开发平台
系统:
Windows7
开发工具:
Visualstudio2008
语言:
C++
3系统设计
用单链表组织内存数据,链表的节点定义为结构体类型用来存储每个影碟的相关信息,用子函数实现各功能和操作的定义。
3.1内存数据结构设计
structvideo//结构体定义部分
{
longnum;
//序号
charname[50];
//片名
charprotagonist[50];
//主演
intReleaseYear;
//上映时间
chartype[10];
//类型(动作片剧情片喜剧片爱情片)
intflag;
//(0123)
intamount;
//库存量
video*next;
//该影片在链表中的后继的地址
};
3.2数据文件设计
数据文件用文本文件,存储与取用代码为:
voidsave(video*head)//向文件保存数据的函数
{
video*p;
p=head;
ofstreamoutfile("
video.dat"
ios:
:
binary);
if(!
outfile)
{
cerr<
<
"
openerror!
endl;
exit(0);
}
for(;
p!
=NULL;
p=p->
next)outfile.write((char*)p,sizeof(video));
outfile.close();
}
video*use()//从文件中读取数据的函数
video*head,*p1,*p2;
n=1;
head=NULL;
ifstreaminfile("
if(!
infile)
cout<
cerr<
******************error!
***************"
数据库未建立或已遭人为破坏,请您重新建立"
exit(0);
p1=p2=newvideo;
head=p1;
infile.read((char*)p1,sizeof(video));
while(p1->
next!
=NULL)
n=n+1;
p2=p1;
p1=newvideo;
p2->
next=p1;
infile.read((char*)p1,sizeof(video));
infile.close();
return(head);
3.3代码设计
各功能由子函数实现,代码格式设计为:
在主函数中设计主菜单,根据用户选择的操作调用相应的子函数,完成用户需要的操作后返回主菜单。
video*creat(void);
//创建新的影片信息
voidprint(video*head);
//打印所有影片信息
video*del(video*head);
//删除不需要的影片
video*insert(video*head);
//插入新的影片信息
video*search(video*head);
//按片名查找影片
voidsort(video*head);
//分类查询影片
voidsave(video*head);
//向文件保存录入的所有影碟信息
video*use();
//从文件取出影碟信息以使用
intmain()
{
......//根据用户选择的操作调用相应的子函数
return0;
}
3.4输入/输出设计
使用c++的标准输入输出流实现;
可识别用户的错误输入并给出提示;
影碟的各信息采用表格形式输出,简洁清楚。
3.5用户界面设计
采用字符界面,清楚直观;
显示提示语言、操作选择、输入输出等。
3.6处理过程设计
开始
3.6.1主函数
显示主菜单,用户输入操作选项
调用use()、*creat()、save()
20
调用use()、print()
调用use()、*insert()、save()
调用use()、*del()、save()
调用use()、search()
调用use()、sort()
调用exit(0)
输入1返回主菜单
3.6.2创建新的影片信息
开辟一个存储空间,输入影片信息
使head=NULL
输入操作选项
开辟一个存储空间,使head=该空间地址,输入新的影片信息
使后继指针next=NULL
返回
3.6.3打印所有影片信息
Y
head=NULL?
提示数据库是空的
N
访问并输出节点内容
next=NULL?
3.6.4删除不需要的影片
输入要删除影片的序号num
num=p->
num?
p=next
遍历完毕?
系统内没有该影片的信息
使该节点的前驱指向其后继,删除该节点并释放空间
提示数据库是空的!
3.6.5插入新的影片信息
将新节点插入到链表头部
结点总数n加1
3.6.6按片名查找影片
输入要查询的影片名name
name=p->
name?
输出该影片的信息
3.6.7分类查询影片
输入要查询的影片类型标识b
b=p->
flag?
遍历完毕?
输出该影片信息
4系统测试
4.1测试方法
在Visualstudio2008操作平台下进行测试。
4.2测试用例的描述
标识
人在囧途
王宝强
2010
喜剧片
100
宝贝计划
成龙
2008
动作片
200
形影不离
吴彦祖
2012
剧情片
99
越光宝盒
郑中基
88
窃听风云
古天乐
2011
33
A计划
1995
230
4.3测试结果
(1)主界面
(2)输入0,创建数据:
依次输入测试用例的前三项
(3)输入1进入主菜单;
输入1,打印所有影片信息
(4)输入1进入主菜单;
输入3,添加新影片信息
(5)在主菜单输入1,打印所有影片信息,会看到新影片插在了链表首部
(6)进入主菜单,输入2,删除影片信息
(7)进入主菜单输入1,打印所有影片信息,会看到影片《人在囧途》已经删除
(8)返回主菜单后输入4,按名称查询影片,会看到《人在囧途》查不到,而《形影不离》《宝贝计划》等可以查到。
(9)返回主菜单后输入6,分类查询影片;
如输入0,则输出所有动作类影片信息
(10)返回主菜单后输入6,退出系统
5自我评价与总结(设计的特点、不足、收获与体会)
经过这次课程设计的学习,让我明白了编写程序的思路是很重要的,不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。
在编写一个程序之前,如果脑袋里面没有思路,根本就不可能编出好的程序。
就算能编出程序来,相信编出的程序的逻辑性也不会很强,因为是想到什么就编什么,不系统。
因此在我们编程序之前一定要做好充分的准备,首先要理清自己的思路,然后再将思路分划成几个模块,一块一块的编写,最后再将所有的模块联系起来,组成一个完整的程序。
在上机实验之前,最好将程序编写好在草稿纸上,这样在编译的时候也比较有效率。
基础训练课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。
今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
在这次课程设计的过程中,我也遇到了很多难题。
在种种的困难中,我明白了耐心在编写程序时的重要性。
如果你没有耐心就肯定编不出好的程序,特别是在调试的过程中。
我们初次写的程序在电脑上调试的时候也许会出项几百个错误,这时候我们应该耐心的检查出错的地方和原因,并予以改正,而不是抱怨自己写的程序太烂错误太多,就此放弃。
相信再强的人也不可能一次就能编译成功,总会有一些问题出现。
其实只要有耐心,就会发现,在修改了一个错误之后,其它有的错误也会跟着消失,所以在编译的时候一定要有耐心。
通过这次课程设计,我认识到了自己动手实践的弱势,特别是在编程方面,知道了计算机的实践操作是很重要的,只有通过上机编程才能充分的了解自己的不足。
而自己完成了这样的课程设计,也是对自己实力的检测,使我对以后的学习也充满了信心和期待。
这次的课程设计,更是让我深刻认识到自己在学习中的不足,同时也找到了克服这些不足的方法,这也是一笔很大的资源。
编程时我用到了数据结构中的链表存储,定义结构体类型的节点。
数据结构是一门比较难的课程,需要花很多的时间去练习和实践。
要想把这门课程学好学精不是一件容易的事,但是相信事在人为,只要肯下功夫就一定能学好。
总的来说,这次程序设计让我获益匪浅,相信在以后的学习生活中我也能从中获得启发。
在以后的时间中,我们应该利用更多的时间去上机实验,加强自学的能力,多编写程序,相信不久后我们的编程能力都会有很大的提高能设计出更多的更有创新的作品。
这次编程遇到的新问题是文本文件的读写。
写进文件中的操作实现较容易。
但读并不是那么容易做到了。
为此研究了好久。
但最后在文本文件的读这块,还是不能实现。
所以我改用二进制文件来替代其操作。
这样,程序大体也就完成了,并调试成功。
以前并没有接触过文本文件的读写,这是这次课程设计最大的突破。
6参考文献
1.《数据结构(用面向对象方法与C++语言描述)》(第2版)清华大学出版社
2.《C++Primer(中文版)》(第4版)人民邮电出版社
源代码
#include<
iostream>
#include<
fstream>
string>
iomanip>
usingnamespacestd;
#defineNULL0//定义NULL为常量
structvideo//结构体定义部分
longnum;
//序号
charname[50];
//片名
charprotagonist[50];
//主演
intReleaseYear;
//上映时间
chartype[10];
//类型
intflag;
//(0--动作片1--剧情片2--喜剧片3--爱情片)
intamount;
//库存
video*next;
};
intn,i;
//全局变量部分
video*head;
inta;
while
(1)
cout<
*******欢迎使用影碟管理系统*******"
//主界面
0录入影片信息并新建一个管理系统"
1输出所有影片信息记录"
2删除影片"
3添加新影片"
4查询影片"
5影片分类"
6退出系统"
说明:
1.如果您是首次使用本系统,或没有创建已保存的可使用的理想数据库,请按“”录入影片信息并新建一个管理系统;
2.如果您已经创建完毕,可选择要进行的操作项目的序号(1---6)。
cout<
请键入您要进行的操作的序号:
cin>
>
a;
system("
cls"
);
//清除屏幕上所有的文字
switch(a)
case0:
head=creat();
save(head);
break;
case1:
head=use();
print(head);
case2:
head=del(head);
case3:
head=insert(head);
case4:
head=search(head);
case6:
exit(0);
case5:
sort(head);
}
请键入'
1'
进入主菜单:
i;
system("
video*creat(void)//定义创建数据的函数。
此函数带回一个指向链表头的指针
intd;
****现在开始录入影片信息并建立新的影片信息库****"
video*p1,*p2;
n=0;
p1=p2=newvideo;
//开辟一个存储空间,并使p1,p2指向它
请输入第"
(n+1)<
部影片的信息"
序号:
;
p1->
num;
片名:
name;
主演:
protagonist;
上映时间:
ReleaseYear;
类型:
type;
flag:
flag;
库存量:
amount;
head
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 影碟 租赁 系统 管理 设计 实现 课程设计