语c言课程设计影碟信息管理系统大学论文.docx
《语c言课程设计影碟信息管理系统大学论文.docx》由会员分享,可在线阅读,更多相关《语c言课程设计影碟信息管理系统大学论文.docx(35页珍藏版)》请在冰豆网上搜索。
语c言课程设计影碟信息管理系统大学论文
内蒙古科技大学
本科生课程设计说明书
题目:
C语言课程设计
——影碟信息管理系统
学生姓名:
学号:
专业:
软件工程
班级:
软件一班
指导教师:
日期:
2016年1月5日
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
影碟信息管理系统
指导教师
时间
2016.1.5-2016.1.9
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
影碟信息管理系统
图影碟息包括:
电影名称、出品公司、导演姓名、主演姓名(至少2个)、上映时间、库存数量、价格等。
试设计一影碟信息管理系统,使之能提供以下功能:
v影碟信息录入功能(影碟信息用文件保存)--输入;影碟信息浏览功能--输出
v查询或排序功能:
(至少两种查询方式)--算法
●按电影名称查询●按主演姓名查询
v影碟信息的插入、删除与修改
v影碟的借出与归还
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
第一章需求分析
1.1引言
一直以来人们使用传统的人工方式管理影碟店的日常工作,租借和归还过程主要依靠手工。
这样无论是销售人员还是购买人员都很不方便。
为方便对影碟店光盘、影碟资料、借还影碟等进行高效的管理,特编写程序以提高影碟店的管理效率。
1.2任务概述
1目标
本影碟管理系统主要应用与小型的影碟音像店中,方便管理员对大量的影碟信息,包括电影名、导演、电影公司、上市日期等进行增加、查询、保存等操作。
2运行环境
本系统对于硬件要求不高,软件只要是windows2000及以上版本都可以使用。
3用户特点
本系统对用户的要求不高,一般懂得一些基本的电脑操作即可。
维护人员为本小组的开发人员,均为计算机专业本科教育,懂得VC++6.0编程。
1.3数据描述
系统数据类型有:
整型int,字符型char,结构体struct;
自己定义的数据类型有:
DATE,CD
1.4功能需求
影碟管理系统可分为三部分:
信息管理;借阅处理;查询
(1)信息管理功能:
能对影碟的各种信息进行管理、登记,保存等。
(2)借阅处理功能:
对影碟的借阅进行管理登记,保存记录。
(3)查询功能:
让管理人员对影碟的信息进行查阅。
1.5性能需求
1时间特性
本系统对时间的要求较高,时间反应要快,在查询时必须能在几秒时间内作出反应,弹出所要查询的各类图书信息以及借阅者信息。
2兼容性和扩展性
仅限在影碟音像店内部电脑使用
1.6运行需求
VisualC++或者CodeBlocks
1.7任务计划
用数组或者链表实现函数的功能,使其能实现信息管理,借阅处理,查询编辑功能。
巩固和加深对C语言课程的基本知识的理解和掌握,提高用C语言解决实际问题的能力。
第二章概要设计
2.1总体设计
程序的需求是设计影碟信息管理系统,能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先如果设计一个添加函数把要录入的碟片录入一个文件中,再建立一个借阅者文件把借阅人放入其中。
然后建立添加、浏览删除、查询、借阅和归还等函数,通过函数的层层调用来实现程序的逻辑结构。
中间通过文件的打开和关闭实现对文件内容所包含的数据的操作。
整个程序的设计思路到此结束。
2.2数据类型设计(或数据结构设计)
数据项描述={数据项名,数据类型,长度};
影片信息={
影片ID,CHAR,10;
片名,CHAR,20;
导演,CAHR,20;
介绍,CAHR,200;
上映时间,DATE,10
};
租借记录={
记录项ID,CHAR,10;
借出时间,DATE,10;
归还时间,DATE,10;
租金,INT,4
}
2.3接口设计
N
Y
2.4运行界面设计
进入主菜单
图1.1
选择1进行碟片添加
图1.2
选择2进行查询
图1.3
选择
(1)碟片名查询
图1.4
选择
(2)演员名查询
图1.5
选择5进行借阅人注册
图1.6
选择3进行碟片借阅
图1.7
选择6进行碟片浏览
图1.8
选择4碟片归还
图1.9
选择7碟片删除
图1.10
第三章详细设计
3.1输入模块设计
voidadd(void)//
{
FILE*a;//文件指针
printf("提示:
当输入多个人名或片名时请用逗号隔开!
!
!
\n");
printf("请输入碟片名称:
\n");
scanf("%s",CD[cd_number].film_name);
printf("请输入出品公司:
\n");
scanf("%s",CD[cd_number].film_gongsi);
printf("请输入导演姓名:
\n");
scanf("%s",CD[cd_number].film_daoyan);
printf("请输入主演姓名:
\n");
scanf("%s",CD[cd_number].film_zhuyan);
printf("请输入上映时间:
\n");
scanf("%s",CD[cd_number].shijie);
getchar();
n=1;//修改借阅标记
if(0==cd_number)
{
a=fopen("cd.txt","wb");
fwrite(&CD[cd_number],sizeof(structcd),1,a);
}
else
{
a=fopen("cd.txt","ab");
fwrite(&CD[cd_number],sizeof(structcd),1,a);
}
cd_number++;
printf("影片添加成功\n");
fclose(a);
printf("输入任意键返回");
getch();
}
3.2输出模块设计
voidread(void)
{
inti;
system("cls");
for(i=1;i{
printf("\n\n");
printf("碟片名称:
");
printf("%s\n",CD[i].film_name);
printf("出品公司:
");
printf("%s\n",CD[i].film_gongsi);
printf("导演姓名:
");
printf("%s\n",CD[i].film_daoyan);
printf("主演姓名:
");
printf("%s\n",CD[i].film_zhuyan);
printf("上映时间:
");
printf("%s\n",CD[i].shijie);
}
printf("输入任意键返回");
getch();
}
3.3查找模块设计
voidcheck(void)//
{
inti;
charcd_name[10];
system("cls");
printf("请要查询的输入碟片名:
\n");
scanf("%s",cd_name);
for(i=0;i{
if(strcmp(CD[i].film_name,cd_name)==0)
{
printf("\n\n");
printf("碟片名称:
");
printf("%s\n",CD[i].film_name);
printf("出品公司:
");
printf("%s\n",CD[i].film_gongsi);
printf("导演姓名:
");
printf("%s\n",CD[i].film_daoyan);
printf("主演姓名:
");
printf("%s\n",CD[i].film_zhuyan);
printf("上映时间:
");
printf("%s\n",CD[i].shijie);
break;
}
if(i==cd_number)
printf("抱歉,不能找到。
\n");
}
getchar();
printf("输入任意键返回");
getch();
}
3.4借阅及归还模块设计
voidrent(void)
{
intn;
charuser_name[10];
charcd_name[10];
FILE*a;//
FILE*b;//
intk=0;
inti,j;
a=fopen("rent.txt","r");
b=fopen("cd.txt","r");
for(i=0;i{
fread(&CD[i],sizeof(structcd),1,b);
}
for(i=0;i{
fread(&RENT[i],sizeof(structrent),1,a);
}
printf("请输入借阅人:
\n");
scanf("%s",user_name);
getchar();
printf("请输入碟片名称\n");
scanf("%s",cd_name);
getchar();
printf("请再次输入碟片名称:
\n");
scanf("%s",RENT[i].film_name[k]);
k++;
getchar();
printf("已借%d张\n",k);
for(j=0;j{
if((strcmp(CD[j].film_name,cd_name))==0)
{
n=0;
}
}
printf("请输入借出日期:
\n");
scanf("%d",&RENT[i].rent_time);
printf("借阅成功\n");
fclose(a);
fclose(b);
printf("输入任意键返回");
getch();
}
voidreturnn(void)//
{
intn;
charuser_name[10];
charcd_name[10];
FILE*a;
FILE*b;
inti;
intj;
intk=0;
a=fopen("rent.txt","r");
b=fopen("cd.txt","r");
for(i=0;i{
fread(&CD[i],sizeof(structcd),1,b);
}
for(i=0;i{
fread(&RENT[i],sizeof(structrent),1,a);
}
printf("请输入借阅人:
\n");
scanf("%s",user_name);
for(i=0;i{
if((strcmp(user_name,RENT[i].username))==0)
{
printf("输入要归还的碟片名:
\n");
scanf("%s",cd_name);
for(j=0;j{
if((strcmp(CD[j].film_name,cd_name))==0)
{
n=1;
break;
}
}
}
}
printf("借出日期:
%d\n",RENT[i].rent_time);
printf("归还日期:
\n");
scanf("%d",&RENT[i].return_time);
getchar();
if(((RENT[i].return_time-RENT[i].rent_time)%3)==0)
{
RENT[i].money=(RENT[i].return_time-RENT[i].rent_time)/3;
}
else
{
RENT[i].money=(RENT[i].return_time-RENT[i].rent_time)/3+1;
}
printf("租金:
%d\n",RENT[i].money);
printf("输入任意键返回");
getch();
fclose(a);
fclose(b);
}
3.5删除及读取模块设计
voidshanchu(void)
{
inti,j,key;
charcd_name[10];
system("cls");
printf("请输入要删除的碟片:
");
scanf("%s",&cd_name);
if(cd_name==0)return;
for(i=0;i{
if(strcmp(CD[i].film_name,cd_name)==0)
{
cd_number--;
for(j=i;jstrcpy(CD[i].film_name,CD[j+1].film_name);
strcpy(CD[i].film_gongsi,CD[j+1].film_gongsi);
strcpy(CD[i].film_daoyan,CD[j+1].film_daoyan);
strcpy(CD[i].film_zhuyan,CD[j+1].film_zhuyan);
strcpy(CD[i].shijie,CD[j+1].shijie);
key=1;
printf("删除成功!
");
getchar();
printf("输入任意键返回");
getch();
}
}
if(key!
=1)
{
printf("无此碟片!
");
printf("您可以与管理员取得联系,希望对您有所帮助!
");
getchar();
printf("输入任意键返回");
getch();
}
}
voidcheck2(void)//
{
inti;
charcd_zhuyan[10];
system("cls");
printf("请输入要查询的主演名:
\n");
scanf("%s",cd_zhuyan);
for(i=0;i{
if(strcmp(CD[i].film_zhuyan,cd_zhuyan)==0)
{
printf("\n\n");
printf("碟片名称:
");
printf("%s\n",CD[i].film_name);
printf("出品公司:
");
printf("%s\n",CD[i].film_gongsi);
printf("导演姓名:
");
printf("%s\n",CD[i].film_daoyan);
printf("主演姓名:
");
printf("%s\n",CD[i].film_zhuyan);
printf("上映时间:
");
printf("%s\n",CD[i].shijie);
break;
}
}
if(i==cd_number)
printf("抱歉,不能找到。
\n");
getchar();
printf("输入任意键返回");
getch();
}
附录:
程序代码
#include
#include
#include
#include
voidcheck2(void);
voidadd(void);//新片上架函数
voidread(void);//浏览碟片
voidshanchu(void);//删除碟片
voidcheck(void);//碟片查询函数
voidrent(void);//碟片借阅函数
voiduseradd(void);//使用者添加
voidreturnn(void);//碟片归还函数
intuser_number=2;//定义会员函数
intcd_number=1;//定义碟片函数
structcd//碟片结构体
{
charfilm_name[100];//碟片名称
charfilm_gongsi[100];//出品公司
charfilm_daoyan[100];//导演姓名
charfilm_zhuyan[100];//主演姓名
charshijie[5];//上映时间
};
intn;//借阅标记
structrent//碟片借阅结构体
{
charusername[10];//使用者名
charuserxingbie[10];//使用者性别
intuserage;//使用者年龄
intyear;//使用者出生年份
intmonth;//使用者出生月份
intday;//使用者出生天数
charfilm_name[10][10];//碟片名称
intrent_time;//借出日期
intreturn_time;//归还日期
intmoney;//租金
};
structcdCD[1000];//定义CD函数
structrentRENT[1000];//定义出租函数
//-----------------------主函数------------------------------------
intmain()//主函数
{
charchoice;
charop;
system("title=影碟管理系统");
system("color0C");
system("cls");
a:
printf("\n\n\t\t\t\t欢迎进入影片信息管理系统\n");
printf("\t\t\t\t------------------------\n");
printf("\t\t\t\t1:
影片添加\n");
printf("\t\t\t\t2:
碟片查询\n");
printf("\t\t\t\t3:
碟片借阅\n");
printf("\t\t\t\t4:
碟片归还\n");
printf("\t\t\t\t5:
借阅者注册\n");
printf("\t\t\t\t6:
碟片浏览\n");
printf("\t\t\t\t7:
碟片删除\n");
printf("\t\t\t\t0:
退出程序\n");
printf("\t\t\t\t------------------------\n");
printf("\t\t\t\t请输入你的选择:
\n");
scanf("%c",&choice);
switch(choice)//多条件选择判断
{
case'1':
{
system("cls");
add();//碟片添加函数
break;
}
case'2':
{
system("cls");
printf("1.影碟名查询\n");
printf("2.主演名查询\n");
getchar();
scanf("%c",&op);
switch(op)
{
case'1':
{
system("cls");
check();
break;
}
case'2':
{
system("cls");
check2();
break;
}
}
break;
}
case'3':
{
system("cls");
rent();//碟片借出函数
break;
}
case'4':
{
system("cls");
returnn();//碟片归还函数
break;
}
case'5':
{
system("cls");
useradd();//使用者注册函数
break;
}
case'6':
{
system("cls");
read();//浏览函数
break;
}
case'7':
{
system("cls");
shanchu();//删除函数
break;
}
case'0':
system("cls");
printf("感谢您对此系统的使用,再见!
\n");
exit(0);//退出函数
}
system("cls");
gotoa;
}
//----------------碟片添加-----------------------
voidadd(void)//新片添加
{
FILE*a;//文件指针
printf("提示:
当输入多个人名或片名时请用逗号隔开!
!
!
\n");
printf("请输入碟片名称:
\n");
scanf("%s",CD[cd_number].film_name);