课程设计说明书示例.docx
- 文档编号:3101975
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:27
- 大小:46.80KB
课程设计说明书示例.docx
《课程设计说明书示例.docx》由会员分享,可在线阅读,更多相关《课程设计说明书示例.docx(27页珍藏版)》请在冰点文库上搜索。
课程设计说明书示例
唐山学院
C语言程序设计课程设计
题目音像资料自助检索系统
系(部)信息工程系
班级07电信本2班
姓名单英卓
学号4070215203
指导教师陈舵
2009年7月6日至7月10日共1周
2009年7月10日
C语言程序设计课程设计任务书
一、设计题目、内容及要求
题目:
音像资料自助检索程序设计
内容:
本题目适合于小型音像店的资料管理和检索。
要求程序实现分级管理,管理员可对音像信息进行录入、删除、修改、浏览、检索、存盘等操作,普通用户只有音像信息的检索和浏览权限。
要求:
程序结构合理、算法准确、语法正确,并生成可执行文件。
二、要求的设计成果(课程设计说明书、设计实物、图纸等)
1.课程设计说明书:
课程设计说明书1份,不少于2000字。
说明书中要包含需求分析、总体设计、详细设计以及主要的算法描述等内容。
2.源代码:
音像资料自助检索程序清单
三、进程安排
星期1(7.6):
完成需求分析和程序总体设计。
星期2(7.7):
完成数据录入、删除、修改、插入和浏览功能模块的设计。
星期3(7.8):
完成密码设置和数据检索模块,程序调试无误,生成可执行文件。
星期4(7.9):
撰写课程设计说明书初稿。
星期5(7.10):
提交课程设计说明书、程序和数据。
四、主要参考资料
[1]谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:
高等教育出版社,2006
[2]吕凤煮.C语言基础教程——基础理论与案例[M].北京:
清华大学出版社,2005
[3]黄明、梁旭、万洪莉.C语言课程设计[M].北京:
电子工业出版社,2006
[4]郭宁,郑小玲.管理信息系统[M].北京:
人民邮电出版社,2006
[5]赵池龙,杨林,陈伟.实用软件工程[M].北京:
电子工业出版社,2006
指导教师(签名):
教研室主任(签名):
课程设计成绩评定表
出勤
情况
出勤天数
缺勤天数
成
绩
评
定
出勤情况及设计过程表现(20分)
课设答辩(20分)
设计成果(60分)
总成绩(100分)
提问
(答辩)
问题
情况
综
合
评
定
指导教师签名:
年月日
1需求分析
小型音像店的资料管理和检索系统的需求分析主要确定系统的主要功能,对系统进行概要描述,对系统的各个主要功能分别进行需求描述,目的是使软件在设计过程中尽量符合客户的需要。
1.1系统概述
小型音像店的资料管理和检索系统是一个对音像信息进行录入、删除、修改、浏览、检索和存盘等操作的管理应用软件,用户可以对文件中存储的小型音像制品进行查找和浏览,了解音像制品的名称、单价等信息。
该软件提供了一个简单的人机界面,管理员可以根据提示输入操作项并进行一系列对音像制品名称和单价的管理操作。
1.2功能需求
该软件提供了一个对音像信息进行管理和查看的平台,给用户提供了一个简单友好的用户接口,功能需求如下:
1.2.1密码系统
通过已定密码进入对应管理目录,从而进行相应的操作功能。
1.2.2两级管理系统
分为用户和管理员两级管理系统两类。
管理员可通过密码实现对音像资料的录入、删除、修改等所有操作,而用户只能进行查询和浏览操作。
1.2.3录入
用户根据提示输入音像制品的编号、歌曲、歌手等信息要素。
1.2.4存盘
系统将音像信息记录存储在系统磁盘的文件中,以便进行管理、检索和备份。
1.2.5删除
删除音像制品的信息:
提示管理员输入要进行删除操作的音像制品序号,如果在文件中有该音像制品的信息存在,则将该序号所对应的名称、序号等要素在对应文件中加以删除。
并提示管理员选择是否继续进行删除操作。
1.2.6修改
提示管理员输入要进行修改操作的音像制品序号,如果在文件中有该音像制品的信息存在,则将提示管理员输入该序号对应的音像制品名称、单价要素等需要修改的选项,并将修改结果存储于文件。
该部分需求也需要提示管理员选择是否继续进行修改操作。
1.2.7检索
分为根据名称检索和根据序号检索两个具体需求,分别提示用户输入要检索音像制品信息的序号或名称,如果在磁盘文件中有对应的音像制品单价信息,则提示用户已找到,并逐项列出对应音像制品的详细信息。
在该功能中,需提示用户是否需要继续检索,如不再继续检索,则返回主界面,并可进行模糊查找。
1.2.8浏览
逐条显示全部记录
1.2.9插入
可在原有音像制品信息文件的基础上增加新的音像制品信息记录。
在增加新记录的过程中,系统提示管理员输入单价要素项,存入文件对应的记录中。
1.2.10退出系统
2总体设计
进行总体设计的目标是用比较抽象概括的方式确定系统如何完成预定的任务,进而确定组成系统的每个程序的结构。
2.1开发与设计的总体思想
本系统主要应用结构化的设计思想实现音像制品信息的增、删、改和查等典型管理功能。
各主要模块的数据均存储在文件中,因此包含对文件的读、写等基本操作。
在软件开发过程中应用了高级语言程序设计中的基本控制结构,如选择、循环、顺序结构。
系统的设计方法是结构化设计方法,采用C语言进行开发。
2.2系统功能结构图
图1音像资料自助检索程序
3详细设计
3.1系统化分析
将程序整体进行模块化处理,使程序编译思路更加清晰,降低了编译程序的难度。
音像信息中包含编号、歌曲、发行社、歌手、数量、单价等基本信息,程序具有信息录入、删除、修改、浏览、检索和存盘等功能。
3.2主函数及主界面
首先设计出主函数,就有了程序的框架,有了主调用函数和主菜单,从主界面可以选择所要求的操作,使操作方便,易于进行查找、添加、修改、删除等功能。
3.3密码分级管理服务
为了区分管理员和顾客的身份,进行分级管理,方便管理员对某店面内的音像制品的各种管理操作以及顾客对某店面内的音像资料的大概了解查询、浏览,设置了密码服务公能。
管理员通过输入密码进入管理员界面,从而可以执行所有管理系统的操作,而顾客只能选择其对应界面进行仅有的查询和浏览功能。
下面是管理员操作的基本过程:
图2两级管理界面
选2进入密码输入界面:
图3输入密码界面
输入密码,然后回车进入管理员界面:
图4管理员执行操作界面
然后管理员依次输入代号继续进行操作。
3.4添加模块
系统管理员通过此模块可以在原有记录的基础上随意的添加其他音像信息,通过系统的提醒依次的录入所要记录的音像制品的所有信息,可以添加多个信息,并且不需重新回到主界面,直接在系统的提示下进行再次输入。
3.5删除模块
管理员通过这块模块可以对不需要的信息进行删除,使用方便,只需要输入所要删除的音像信息编号即可,系统会自动搜索,确定删除后此信息消失。
3.6修改模块
考虑到有些信息可能会发生变动,该系统设置了修改模块,如果某个编号的信息发生变动,管理员可以通过此模块对该编号下的其他信息进行修改。
3.7查询模块
亦称检索模块。
如果信息太多查找起来很不方便,对此我们系统设计了查找模块,使用户可以很方便的找到自己需要的信息。
本模块可通过输入歌曲或歌手的一部分信息进行查找,之后系统会显示其所有的信息。
输入信息不存在则退出本次查询。
3.8浏览模块
通过此模块用户可以看见所有系统中的音像信息。
3.9保存模块
该模块的作用是保存管理员所存信息,以便用户查找。
3.10退出系统
当对系统操作完成以后,想退出此操作只需在界面中选择退出系统模块的代号,系统就自动退出此次运行程序。
4总结
这次的C语言程序设计实习有效的培养了学生独立思考的能力,提高了学生的动手操作水平。
在具体操作中,巩固了这学期所学的C语言的理论知识,这也是实习的基本目的。
通过实际操作,学会了C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
培养了学生独立思考问题的能力,提高了实际操作水平。
通过这次对音像资料自助检索系统的编译,我们了解了C语言程序设计的思想,我们的程序很实用,但它依然有许多不足之处,我所编译的程序容量有限,而且每次操作都要回到主界面,在这方面该系统还有待于进一步优化。
C语言是一种基础的计算机高级语言,具有功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,通过这次的C语言程序设计更加深刻的了解了C语言的好处和其可用性。
在这次课程设计中我也知道了自己的动手能力不强,有待于进一步提高。
在设计过程中不能够灵活得把书本上的知识与实际相结合,在调试过程中一次次出错,差点是我放弃,但是在同组同学的帮助、鼓励和配合下,最终我完成了此次课程设计的任务。
这也使我重新树立了自信心,相信自己可以做好,但是要扎实掌握理论知识,灵活运用。
总之,通过这次实习我认识到了自己许多不足之处,在今后的学习生活中,一定要勤于思考,扎实掌握理论知识,灵活运用课上所学。
参考文献
[1]谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:
高等教育出版社,2006
[2]吕凤煮.C语言基础教程——基础理论与案例[M].北京:
清华大学出版社,2005
[3]黄明、梁旭、万洪莉.C语言课程设计[M].北京:
电子工业出版社,2006
[4]郭宁,郑小玲.管理信息系统[M].北京:
人民邮电出版社,2006
[5]赵池龙,杨林,陈伟.实用软件工程[M].北京:
电子工业出版社,2006
附录
程序清单:
#include
#include
#include
#defineFORMAT"%-10s%-16s%-16s%-16s%-13d%-20s\t\n"
#defineDATAp->data.num,p->data.name,p->data.print,p->data.auther,p->data.bookamount,p->data.price
intsaveflag=0;/*是否需要存盘的标志变量*/
charsss[255];/*临时数组*/
/*定义有关的数据结构*/
typedefstructbook/*标记*/
{
charnum[10];/*编号*/
charname[15];/*歌曲*/
charprint[30];/*发行社*/
charauther[15];/*歌手*/
intbookamount;/*总数量*/
charprice[10];/*单价*/
};
/*定义每条记录或结点的数据结构,标记为:
node*/
typedefstructnode
{
structbookdata;/*数据域*/
structnode*next;/*指针域*/
}Node,*Link;/*Node为node类型的结构变量,*Link为node类型的指针变量*/
//函数声明
voidmenu(void);
voidmenu1(void);
voidNodeAdd(Linkh);
voidLinkDisp(Linkh);
voidSave(Linkh);
voidWrong(void);
intdel(Node*h,charx[]);
voidf2(Linkh);
voidmodif(Linkh,charx[]);
voidin_data(Linkh,charx[],chary[]);
voidfinding(Linkh,charx[]);
voidf6(Linkh);
voidmain()
{
Linkh,p,r;/*定义链表*/
FILE*fp;charx[16],y[16];/*文件指针*/
intselect;intn1,n2=0,n3=0;/*保存选择结果变量*/
charch;/*保存(y,Y,n,N)*/
intcount=0;/*保存文件中的记录条数(或结点个数)*/
//Node*p,*r;/*定义记录指针变量*/
printf("\n\n\n顾客请按1\t管理员请按2\t\n");
scanf("%d",&n1);
if(n1==2)
{
longnum=123;
longa;
intn3=0;
printf("请输入密码:
");
while(n3<3)
{
scanf("%d",&a);
if(a==num)
{n2=1;break;}
else
{
printf("Wrong~Onemore\nYouhave%dchoice\n\n",2-n3);
}
n3++;
}
}
h=(Node*)malloc(sizeof(Node));
if(!
h)
{
printf("申请内存错误!
\n");/*如没有申请到,打印提示信息*/
return;/*返回主界面*/
}
h->next=NULL;
r=h;
fp=fopen("C:
\\book","ab+");/*以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件*/
if(fp==NULL)
{
printf("不能打开文件\n");
exit(0);
}
while(!
feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(!
p)
{
printf("申请内存错误!
\n");;/*没有申请成功*/
exit(0);/*退出*/
}
if(fread(p,sizeof(Node),1,fp)==1)/*一次从文件中读取一条记录*/
{
p->next=NULL;
r->next=p;
r=p;/*r指针向后移一个位置*/
count++;
}
}
fclose(fp);/*关闭文件*/
while
(1)
{
if(n2==1)
{
menu();
p=r;
printf("\n输入您的选择(0~7):
");/*显示提示信息*/
scanf("%d",&select);
if(select==0)
{
getchar();
if(saveflag==1)/*若对链表的数据有修改且未进行存盘操作,则此标志为1*/
{
printf("\n是否存盘?
(y/n):
");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')Save(h);
}
printf("\n谢谢您的使用!
\n");
getchar();
break;
}
switch(select)
{
case1:
NodeAdd(h);break;
case2:
printf("输入要删除的编号");scanf("%s",x);if(del(h,x))printf("\n删除了该信息\n\n");
elseprintf("\n找不到该信息\n\n");
{
inti=0;
while(i<10000)
{i++;};
}break;
case3:
printf("输入检索的关键字");scanf("%s",x);finding(h,x);break;
case4:
printf("输入要修改的音像编号:
");
scanf("%s",x);
modif(h,x);break;
case5:
printf("输入要插在之前的编号:
");
scanf("%s",x);scanf("%s",y);
in_data(h,x,y);break;
case6:
system("cls");LinkDisp(h);break;
case7:
Save(h);break;
default:
Wrong();getchar();break;
}
}
if(n2==0)
{
if(n1!
=1)printf("您输入有误只能以顾客身份访问\n\n\n\n");
menu1();
p=r;
printf("\n输入您的选择(0~2):
");/*显示提示信息*/
scanf("%d",&select);
if(select==0)
{
getchar();
if(saveflag==1)/*若对链表的数据有修改且未进行存盘操作,则此标志为1*/
{
printf("\n是否存盘?
(y/n):
");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')Save(h);
}
printf("\n谢谢您的使用!
\n");
getchar();
break;
}
switch(select)
{
case1:
printf("输入检索的关键字");scanf("%s",x);finding(h,x);break;
case2:
system("cls");LinkDisp(h);break;
default:
Wrong();getchar();break;
}
}
}
}
voidmenu(void)/*主菜单*/
{
system("cls");/*清屏*/
printf("TheBooks'InformationManagementSystem\n");
printf("===============制作:
07电信本2班单英卓==============\n");
printf("*************************Menu***********************\n");
printf("*1音像信息录入2音像信息删除*\n");
printf("*3音像信息检索4音像信息修改*\n");
printf("*5音像信息插入6音像信息浏览*\n");
printf("*7音像信息保存0退出系统*\n");
printf("****************************************************\n");
}
voidNodeAdd(Linkh)
{
Node*p,*r,*s;/*实现添加操作的临时的结构体指针变量*/
charch,flag=0;
r=h;
s=h->next;
system("cls");
LinkDisp(h);
while(r->next!
=NULL)
r=r->next;
while
(1)
{
while
(1)
{
printf("请输入音像编号:
");
strcpy(sss,"");
scanf("%s",sss);
if(strlen(sss)>10){printf("编号大于10\n");return;}
flag=0;
if(strcmp(sss,"0")==0)/*输入为0,则退出添加操作,返回主界面*/
{return;}
s=h->next;
while(s)
{
if(strcmp(s->data.num,sss)==0)
{
flag=1;
break;
}
s=s->next;
}
if(flag==1)/*提示用户是否重新输入*/
{
getchar();
printf("编号%s已经存在,换一个编号重新输入吗?
(y/n):
",sss);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
continue;
else
return;
}
else{break;}
}
p=(Node*)malloc(sizeof(Node));/*申请内存空间*/
if(!
p)
{
printf("\n申请内存空间失败!
");/*如没有申请到,打印提示信息*/
return;
}
strcpy(p->data.num,sss);/*将字符串sss拷贝到p->data.num中*/
printf("输入歌曲:
");
strcpy(sss,"");
scanf("%s",sss);
if(strlen(sss)>20)
{printf("输入歌曲:
");free(p);return;}
strcpy(p->data.name,sss);
printf("输入发行社:
");
strcpy(sss,"");
scanf("%s",sss);
if(strlen(sss)>20){printf("输入错误!
\n");free(p);return;}
strcpy(p->data.print,sss);
printf("输入歌手:
");
scanf("%s",&(p->data.auther));
printf("输入数量:
");
scanf("%d",&(p->data.bookamount));
if(p->data.bookamount<0){printf("输入错误!
\n");free(p);return;}
printf("输入单价:
");
scanf("%s",p->data.price);
p->next=NULL;/*表明这是链表的尾部结点*/
r->next=p;/*将新建的结点加入链表尾部中*/
r=p;
saveflag=1;
printf("\n");
}
return;
}
voidLinkDisp(Linkh)
{
Linkp;
p=h->next;
printf("\n");
printf("编号歌曲发行社歌手数量单价");
if(!
p)
{
printf("\n没有数据记录!
\n");
getchar();
getchar();
return;
}
printf("\n\n");
while(p)/*逐条输出链表中存储的信息*/
{
printf(FORMAT,DATA);
p=p->next;/*移动至下一个结点*/
}
getchar();
getchar();
}
voidWrong(void)
{
printf("\n输入错误,按任意键继续!
\n");
getchar();
getchar();
}
voidSave(Linkh)
{
FILE*fp;
Node*p;
intcount=0;
fp=fopen("C:
\\book","wb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 说明书 示例