- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计要求
允许俱乐部成员租用DVD。若想成为会员,首先应签约并且可按月缴纳费用。会员一次可租用三个DVD,没有时间限制。可以浏览所有可租用的DVD,能实现新成员的开户、会员对其帐户状况的查询以及俱乐部管理者对所有交易情况的查看功能。
需求分析
DVD信息和俱乐部会员信息用文件存储,提供未见的输入输出操作;注册新会员,提供文件的添加操作;实现按月缴纳费用,提供未见的修改操作;浏览信息提供显示操作;实现查询则提供文件的查找操作;另外提供键盘式选择菜单以实现功能选择。
总体设计
整体设计为会员注册模板、会员缴费模板、会员租用DVD模板、会员归还DVD模板、信息浏览模块和信息查询模块等。
概要设计
1.系统结构图:
2.功能模块说明:
(1)DVD输入:输入有的DVD的信息(包括DVD的租出状态)。
(2)会员注册:申请新的会员号码,输入会员的基本信息。
(3)会员租用DVD:输入会员号,输入书名,进行租书。
(4)会员归还DVD:输入会员号,输入书名,进行还书。
(5)总DVD信息浏览:输出所有DVD的所有信息。
(6)已租出DVD信息浏览:输出所有已租出的DVD的所有信息。
(7)会员信息浏览:输出所有已注册的会员的所有信息。
详细设计的流程图
1.主函数设计:
2.各功能模块设计:
(1)DVD信息输入模块:
(2)会员注册模块:
(3)会员DVD租用模块:
(4)会员归还DVD模块:
(5)总DVD信息浏览:
(6)已租出的DVD信息模块:
(7)会员信息浏览:
(8)查找信息模块:
调试及体会
1、尽量使用指针完成了整个程序设计,其中没有用到全局变量。程序功能基本完善,用户可根据需求自主选择,界面优化较良。但系统没有修改模块,只能进行添加和删除,并不能对原有信息进行修改。
改进方案:增加一个修改模块,使其可对已有信息进行修改。
2.设计初期,先完成初步构思,写出主函数。然后对主函数所涉及的各个模块进行编程,将各个模块利用指针和链表联系起来。在环境中进行调试,应一边编译,一边调试,并且要一个模块一个模块的调试。直至此模块完全没有错误时,在进入下一模块的调试。不能直接输入全部的代码一次性调,这样错误会很多,并且不易找出和修改。在完成程序的编译链接后,要用多组数据进行审查,确保做到系统无误。
设计过程中,不应忽视环境提示的警告,有时程序运行不正确与警告也有很大的关系。这次设计中遇到很多问题都是提示类型不匹配,这时就要认真检查前面的代码,及时改正并且认真仔细,杜绝此类错再次发生。编写代码时应该少用全局变量,全局变量在编写试看似定义次数少,很方便。但全局变量出错几率较大,且不易修改,每次修改时都要全面考虑,所以应避免用到。
此外,在信息的保存和读取这里用到了文件指针,这时要特别注意判断文件是否到尾,经常发生越界情况,使保存和读取发生错误,影响正常的系统数据。程序调试中碰到的错误可以使自己学到知识。养成良好的编程习惯,可以节省很多时间,避免很多不必要的错误。
源代码
#includestdio.h
#includestring.h
struct member /*定义会员类型,用于存放借出的dvd*/
{
int carnum;
char lenddvd[10];
}member[1000];
struct dvd /*定义dvd的类型*/
{
int dvdnum; /*dvd的序列号*/
char dvdname[10]; /*dvd名*/
int turefalse; /*用于借dvd和还dvd模块判断dvd是否借出的条件*/
}dvd[1000];
struct car /*会员卡的数据类型*/
{
int carnum; /*卡号*/
char membername[10];/*卡主人*/
}car[1000];
main() /*主函数*/
{
char ch1, ch2;
do
{
system(cls);
printf(-----------请你选择操作类型----------\n);
printf( 1:DVD输入\n);
printf( 2:会员注册\n);
printf( 3:会员租用DVD\n);
printf( 4:会员归还DVD\n);
printf( 5: 信息浏览\n);
printf( 6: 信息查询\n);
printf( 0:退出\n);
printf(请输入0--6\n);
scanf(%s,ch1);
switch(ch1)
{
case 1:system(cls);adddvd();break; /*system(cls)是一个清屏函数*/
case 2:system(cls);addcar();br
文档评论(0)