C语言影碟信息管理课程设计Word格式.docx
《C语言影碟信息管理课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《C语言影碟信息管理课程设计Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
(至少两种查询方式)--算法
●按电影名称查询●按主演姓名查询
v影碟信息的插入、删除与修改
v影碟的借出与归还
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注
释,每人至少500行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天
选择课程设计题目,分析课题的要求
第二天
编程
第三天
编程及调试
第四天
写课程设计报告
第五天
提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六、建议参考资料
1.《C语言程序设计》,谭浩强,清华大学出版社
第一章需求分析
1.1引言
影碟信息管理系统是用来存储影碟信息,并且拥有信息录入,信息查找(包括电影名查找,导演名查找),信息删除,信息修改,信息添加等功能。
还提供影碟的借出和归还功能,当影碟借出时,库存量将会减一,当库存为零的时候将不能借出并显示该影碟没有库存;
当归还影碟时,库存量将会增一,当影碟没有借出时,归还影碟将会显示该影碟没有借出。
1.2任务概述
电影名称、出品公司、导演姓名、主演姓名(至少2个)、上映时间、库存数量、价格等。
1.影碟信息录入功能(影碟信息用文件保存)--输入;
2.查询或排序功能:
3.影碟信息的插入、删除与修改
4.影碟的借出与归还
1.3数据描述
程序采用数组进行存储数据,数据分为字符型、浮点型和整型。
影碟的编号,影碟名称,影碟导演,影碟演员及上映时间为字符型数据,能够方便的存入数据,使程序能够进行录入信息、添加信息、修改信息、查找信息和删除信息功能。
影碟价格为浮点型数据,便于表示价格的多样性。
影碟库存为整型数据,便于进行影碟的借出,归还记录。
1.4功能需求
影碟信息录入功能(影碟信息用文件保存)--输入;
影碟信息浏览功能--输出。
查询或排序功能(按电影名称查询,按主演姓名查询)。
影碟信息的插入、删除与修改,影碟的借出与归还。
1.5性能需求
程序具有良好的健壮性,当输入值大于或小于程序的录入需求时程序将能够识别出来并且能够清除数据让用户进行重新输入。
当影碟借出时,库存量将会减一,当库存为零的时候将不能借出并显示该影碟没有库存;
1.6运行需求
程序运行时能够正确的显示操作菜单并且能够正确的录入数据和显示操作的结果,当用户按照正常的操作时,程序不会出现运行失败或是数据录入失败或是有重大的错误。
当用户点击命令时,程序都会按照用户的指令进行正确的执行并且得出合法的结果。
当用户录入数据时,数据会正确的存入数组和文件中。
当用户执行查找命令时,程序能够正确执行命令并显示出查找结果。
1.7任务计划
程序能够按照任务概述和功能需求严格的运行并能够得出正确的结果。
程序在运行期间能够面对多种错误的操作,并且具有良好的健壮性。
第二章概要设计
2.1总体设计
程序一开始进行文件的查找,如果没有就询问用户并由用户来进行命名创建。
程序进行数据的录入,由用户输入影碟编号,影碟名称,影碟导演,影碟演员,影碟上映时间,影碟价格,影碟库存量。
显示操作菜单界面,共有影碟信息录入,影碟信息显示,影碟信息查找(按电影名称查询,按主演姓名查询),影碟信息修改,影碟信息删除,影碟借出和归还等功能。
2.2数据类型设计(或数据结构设计)
2.3接口设计//函数声明
voidputin()
影碟信息的录入函数。
voidlookup()
影碟信息浏览函数。
voidsearch_by_name()
按电影名查询函数。
voidsearch_by_director()
按导演名查询函数。
voidsearch()
查询函数。
voiddel()
删除函数。
voiddel1()
影碟借出函数。
voiddel2()
影碟归还函数。
voidupdate()
影碟信息修改函数。
2.4运行界面设计
1.文件创建:
如图2.1
图2.1
2.数据录入:
如图2.2
图2.2
3.影碟操作界面:
如图2.3
图2.3
4.影碟信息浏览界面:
如图2.4
图2.4
5.影碟信息查询:
(1)按电影名查找:
如图2.5.1
图2.5.1
(2)按导演名查找:
如图2.5.2
图2.5.2
6.影碟信息删除:
如图2.6
图2.6
7.影碟信息修改:
如图2.7
图2.7
8.影碟借出:
如图2.8
图2.8
9.影碟归还:
如图2.9
图2.9
10.文件存储:
如图2.10
图2.10
第三章详细设计
3.1输入模块设计
voidputin()/*定义录入函数*/
{
inty=1;
system("
cls"
);
while(y)
{
printf("
\t请输入您的影碟的编号:
"
scanf("
%s"
manage.movie[manage.count].number);
\t请输入电影名:
manage.movie[manage.count].name);
\t请输入导演名:
manage.movie[manage.count].director);
\t请输入演员名1:
manage.movie[manage.count].actor);
\t请输入演员名2:
manage.movie[manage.count].actor1);
\t请输入上映时间:
manage.movie[manage.count].time);
\t请输入该影碟的价格:
%f"
&
manage.movie[manage.count].price);
\t请输入该影碟库存量:
fflush(stdin);
scanf("
%d"
manage.movie[manage.count].num);
manage.movie[manage.count].num1=manage.movie[manage.count].num;
manage.count++;
\n是否继续录入(1.继续;
0.退出录入):
y);
if(y!
=1)
{
y=0;
break;
}
}
}
3.2输出模块设计
voidlookup()
{
printf("
影碟号\t电影名\t导演名\t演员名1\t演员名2\t上映日期\t影碟价格\t影碟库存量\n"
for(inti=0;
i<
manage.count;
i++)
{
%s\t%s\t%s\t%s\t%s\t%s\t%6.2f\t%d\n"
manage.movie[i].number,
manage.movie[i].name,
manage.movie[i].director,
manage.movie[i].actor,
manage.movie[i].actor1,
manage.movie[i].time,
manage.movie[i].price,
manage.movie[i].num);
fflush(stdin);
getchar();
3.3查找模块设计
voidsearch()//定义查询函数
inta;
//进行清屏
\t\t******************************\n"
开始查询\n"
\t\t\t1---------------按电影名搜索\n"
\t\t\t2---------------按导演名搜索\n"
\t\t\t0---------------退出\n"
);
\t\t请选择你想要的查询方式:
a);
switch(a)
case1:
search_by_name();
break;
case2:
search_by_director();
case0:
return;
default:
非法输入!
3.4删除模块设计
voiddel()//定义删除函数
charnumber[10];
//清屏
\n请输入你想要删除影碟的编号:
"
number);
inti;
for(i=0;
if(strcmp(number,manage.movie[i].number)==0)break;
if(i!
=manage.count)
for(;
manage.count-1;
strcpy(manage.movie[i].name,manage.movie[i+1].name);
strcpy(manage.movie[i].number,manage.movie[i+1].number);
strcpy(manage.movie[i].actor,manage.movie[i+1].actor);
strcpy(manage.movie[i].actor1,manage.movie[i+1].actor1);
strcpy(manage.movie[i].director,manage.movie[i+1].director);
strcpy(manage.movie[i].time,manage.movie[i+1].time);
manage.movie[i].price=manage.movie[i+1].price;
manage.movie[i].num=manage.movie[i+1].num;
删除成功!
manage.count--;
else
\n没有找到!
\n"
3.5程序流程图
第四章课程设计总结
这次课程设计花费了20多天时间,因为转专业这是第一次做程序设计实验报告,也没有多少经验。
所以花的时间也是比较多的,尤其是在将影碟信息写入进文件时,总是不能成功,尝试了很多的方法,也查询了很多资料,最终发现是因为存储的方式不对,不能将文件的创建和存入进文件进行分开,这样会导致数据不能正确的写入文件里。
在编程过程中最为苦恼的还有就是影碟的借出和归还,在写这些代码的时候就考虑,如果影碟的库存量借完了,是怎么表达呢?
是将影碟数据进行删除掉吗?
还是将库存量归零呢?
还有就是,如果影碟没有借出,那么归还之后影碟库数量必须不能增加,并且能够识别该影碟没有借出,提示给用户一个信息。
当初在设计这些时都需要考虑这些问题,使程序不能出现大的错误和逻辑错误问题,把这些实际问题转换成代码都得花上许多时间进行思考,还要思考如何使代码量最少的情况下能够实现以上所有的功能,这些问题在编程的过程中有许多,如果想要程序有很好的健壮性,必须得考虑到很多的问题是否会发生,感觉课程设计如果是认真的完成的会学到很多东西,理解很多东西。
最后还是很感谢这门课程设计,其中教给我许多道理。
还要感谢老师和一些帮助我的同学,是你们的帮助的激励让我走得更远。
附录:
程序代码
#include<
stdio.h>
stdlib.h>
string.h>
#defineFNAMELEN80
#defineBUFLEN80
charstuf[FNAMELEN];
typedefstruct{
//电影名
charname[20];
//名
chardirector[20];
//导演
charactor[50];
//
charactor1[50];
chartime[20];
//上映时间
intnum;
intnum1;
floatprice;
}mmovie;
intcount;
//影碟种类
mmoviemovie[100];
//最大可有影碟种类
}mmanage;
mmanagemanage;
manage.movie[i].actor1,
manage.movie[i].num);
voidsearch_by_name()//定义按电影名查询
chars2[20];
intflag=1;
\n请输入要查询的电影名:
s2);
for(inti=0;
i++)
if(strcmp(s2,manage.movie[i].name)==0)
{
flag=0;
printf("
manage.movie[i].name,
manage.movie[i].director,
manage.movie[i].actor,
manage.movie[i].actor1,
manage.movie[i].time,
manage.movie[i].price,
manage.movie[i].num);
}
if(flag)
cannotfound!
voidsearch_by_director()//定义按导演名查询
chars3[20];
请输入要查询的电影的导演:
s3);
if(strcmp(s3,manage.movie[i].director)==0)
if(flag)