ImageVerifierCode 换一换
格式:DOCX , 页数:80 ,大小:773.52KB ,
资源ID:7881545      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7881545.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C课设实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C课设实验报告.docx

1、C课设实验报告华中科技大学计算机科学与技术学院C语言程序设计课程设计实验报告题目: 书店租书信息管理系统 专业: 计算机科学与技术专业 班级: 0906班 学号: 姓名: 成绩: 指导教师: 完成日期: 2010年 10 月 24日1 题目 2系统功能模块结构图 3数据结构设计及用法说明 4程序结构(流程图)5功能模块介绍 6试验结果 7 体会 8参考文献9附录:源代码 一、题目1.题目:书店租书信息管理系统2.需要处理的基础数据(1)图书类别基本信息参考:中文字段名类型及长度举例编号char0表示教辅,1表示少儿等类别名称char10中小学教辅续费率double会员出租折扣率double(2

2、)图书基本信息参考: 中文字段名类型及长度举例类别char0表示教辅图书编号char10“200900011”图书名称char30小学语文阅读训练80篇作者char20出版社char30长春出版社售价double租价double会员价double库存数int上架日期char112009/04/20架位char3(3)图书租阅基本信息参考: 中文字段名类型及长度举例类别char0表示教辅图书编号char10“200900011”姓名char20身份证char19租书日期char112010/01/20可租天数int5应还日期char112010/01/25归还日期char112010/01/28

3、续费double 图书续费=超期天数*租费*续费率*会员出租折扣率3.需实现的系统功能(1).各种基本数据的录入(2).各种基本数据的修改(3).各种基本数据的插入(4).各种基本数据的删除(5).基于各种数据的查询(6).基于各种基本数据的统计计算二、系统功能模块结构图 图1 系统功能模块结构示意图 图2 文件处理结构示意图 图3 修改处理结构示意图 图4 插入处理结构示意图 图5 删除处理结构示意图 图6 查询处理结构示意图 图7 统计处理结构示意图 三、数据结构设计及用法说明1. 数据结构设计typedef struct rent_info /*定义图书租阅基本信息结构类型rent*/

4、char type; /*类别*/ char num10; /*图书编号*/ char renter_name20; /*姓名*/ char ID_card19; /*身份证*/ char rent_date11; /*租书日期*/ int rental_days; /*可租天数*/ char preturn_date11; /*应还日期*/ char return_date11; /*归还日期*/ int overlap_days; /*超期天数*/ double renewal_fee; /*续费*/ struct rent_info *next; /*指向下一结点的自引用指针*/rent

5、;typedef struct basic_info /*定义图书基本信息结构类型basic*/ char type; /*类别编号*/ char num10; /*图书编号*/ char name30; /*图书名称*/ char author20; /*作者*/ char pub_house30; /*出版社*/ double sell_price; /*售价*/ double rent_price; /*租价*/ double mem_price; /*会员价*/ int sup_num; /*库存数*/ char sh_date11; /*上架日期*/ char sh_place3;

6、/*架位*/ rent *head_rent; /*指向租阅信息链的头指针*/ struct basic_info *next; /*指向下一结点的自引用指针*/basic;typedef struct booktype_info /*定义图书类别基本信息结构类型type*/ char tnum; /*类别编号*/ char tname10; /*类别名称*/ double renewal_rate; /*续费率*/ double discount_rate; /*会员出租折扣率*/ basic *head_basic; /*指向基本信息链的头指针*/ struct booktype_info

7、 *next; /*指向下一结点的自引用指针*/type; typedef struct rent_times /*定义图书租阅次数结构类型rtimes*/ char type; /*类别编号*/ char num10; /*图书编号*/ char name30; /*图书名称*/ int k; /*租阅次数*/ struct rent_times *next; /*指向下一结点的自引用指针*/rtimes;2数据结构说明 图2 书店租书信息管理系统十字交叉链表3. 系统用法及功能说明31运行程序后,即进入图书租阅信息管理系统操作界面 图8图书租阅信息管理系统操作界面主菜单有六个选项,每个选项

8、都是一个英文字母加主菜单名,提示用户可以用快捷键:按热键“F”或“Alt_F”弹出“文件”下的子菜单按热键“M”或“Alt_M”弹出“修改”下的子菜单按热键“I”或“Alt_I”弹出“插入”下的子菜单按热键“D”或“Alt_D”弹出“删除”下的子菜单按热键“S”或“Alt_S”弹出“查询”下的子菜单按热键“C”或“Alt_C”弹出“统计”下的子菜单还有一个“退出”的快捷键:“Alt+X”.不用快捷键的话,可以通过按“”“”键选择其他主菜单。当选中某一主菜单时,按“”或Enter,可以显示子菜单。再通过“”“”键选择子菜单,按Enter,就可以进入相应函数,屏幕颜色改变,执行相应功能。321在文

9、件处理菜单中,选择“创建”,屏幕显示需要输入的内容,输入后按Enter,会询问是否输入另一类图书类别基本信息,”y”,则继续录入另一类图书类别基本信息,“n”,则询问是否输入%c %s 类图书的基本信息,“y”则显示需要输入的内容,“n”则询问是否输入另一本类图书的基本信息。租阅链类似。322在文件处理菜单中,选择“保存”,保存已录入的信息,如果保存成功,屏幕显示“保存成功”。323在文件处理菜单中,选择“载入”,载入已录入的信息,如果载入成功,屏幕显示“载入成功”。324在文件处理菜单中,选择“退出”,则退出整个系统。 图9 创建一级链表界面 图10 修改二级链表界面331在修改处理菜单中,

10、选择“修改类别信息”,屏幕显示提示“请输入要修改的图书的类别编号:”,输入后,如果有此类图书,则输出此类图书的类别信息,并输出可修改的选择项供选择,选择修改项后输入修改内容,按Enter,会提示“修改成功”并输出修改后数据;如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。332在修改处理菜单中,选择“修改基本信息”,屏幕显示提示“请输入要修改的图书的类别编号:”,输入后,如果有此类图书,则提示输入要修改的图书编号,如果有此本图书,则输出此本图书的基本信息,并输出可修改的选择项供选择,选择修改项后输入修改内容,按Enter,会提示“修改成功”并输出修

11、改后数据。如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。如果没有此本图书,则提示输入错误,询问是否重新输入,是则提示输入要修改的图书编号,否则退出此功能。333在修改处理菜单中,选择“修改租阅信息”,步骤与3.3.2类似。 图11 插入一级链表界面 341在插入处理菜单中,选择“插入类别信息”, 屏幕显示提示“想把信息插入到哪类图书后面?请输入相应图书类别编号:”, 输入后,如果有此类图书,屏幕显示需要输入的内容,输入后按Enter,会提示“插入成功”。 如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能

12、。3.4.2在插入处理菜单中,选择“插入基本信息”, 屏幕显示提示“想把信息插入到哪类图书后面?请输入相应图书类别编号:”, 输入后,如果有此类图书,则提示想把信息插入到哪本图书后面?请输入相应图书图书编号:,如果有此本图书,屏幕显示需要输入的内容,输入后按Enter,会提示“插入成功”。 如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。如果没有此本图书,则提示输入错误,询问是否重新输入,是则提示输入相应的图书编号,否则退出此功能。3.4.3在插入处理菜单中,选择“插入租阅信息”, 步骤与3.4.2类似。 图12 删除三级链表界面3.5.1在删除处

13、理菜单中,选择“删除类别信息”, 屏幕显示提示请输入要删除的图书的类别编号:,输入后,如果有此类图书,则提示“删除成功”,如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。3.5.2在删除处理菜单中,选择“删除基本信息”,情况参考3.5.1和3.3.23.5.3在删除处理菜单中,选择“删除租阅信息”,步骤类似3.5.2。 图13 查询三级链表界面3.6.1在查询处理菜单中,选择“查询类别信息”, 屏幕显示提示请输入要查询的图书的类别编号:,输入后,如果有此类图书,则输出此类图书类别信息,如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开

14、始进入的页面,否则退出此功能。3.6.2在查询处理菜单中,选择“查询基本信息”, 屏幕显示提示请输入要删除的图书的类别编号:,输入后,如果有此类图书,且有书,则提示“1 输出此类所有图书基本信息 2 输出某本图书详细基本信息”请选择,选1则输出所有图书基本信息,选2,则需输入要查询的图书的图书编号,有此本书则输出,否则提示输入错误,询问是否重新输入是则返回上一步,否则退出此功能。3.6.3在查询处理菜单中,选择“查询基本信息”,步骤类似3.6.2。 图14 统计三级链表界面3.7.1在统计处理菜单中,选择“统计类别信息”,屏幕直接输出总共的类别数和所有类别信息。3.7.2在统计处理菜单中,选择

15、“统计基本信息”,屏幕直接输出总共的图书本数和所有图书基本信息。3.7.3在统计处理菜单中,选择“统计租阅信息”,查询某月各图书的租阅次数,屏幕显示提示“请输入要统计的年月:”,输入后按Enter,将输出各图书在当月内的租阅次数,且已按租阅次数从高到低排序。四、程序结构(流程图)删除图书基本信息函数流程图五、各模块的功能具体介绍参见第3节(系统操用法及功能说明),运行结果请参见第6节(试验结果) 数据文件处理 载入,创建,保存,退出 数据修改处理 修改类别信息,修改基本信息,修改租阅信息 数据插入处理 插入类别信息,插入基本信息,插入租阅信息 数据删除处理 删除类别信息,删除基本信息,删除租阅

16、信息 数据查询处理 查询类别信息,查询基本信息,查询租阅信息,输出全部信息 数据统计处理 统计类别信息,统计基本信息,统计租阅信息六、试验结果1. 数据文件处理1.1创建录入数据1.2载入2修改处理修改图书基本信息输入错误的处理:选择修改项并输入修改信息:修改结果:3插入处理插入图书类别信息:输入后按Enter,显示插入成功:4删除处理删除图书租阅信息输入错误的处理:输入无误,显示“删除成功”:5查询处理查询图书类别信息:查询结果:输出全部:6统计处理统计总图书本数:七、体会第一次写这么大的一个程序,其中经历了诸多纠结痛苦,也尝到了调通程序而获得的快乐,学到了很多编程方面的知识,并提高了自己的

17、编程能力。刚开始听其他同学说这个程序有两千行代码要写,感觉头都大了,有一点畏惧心理,于是在暑假的时候就开始看书,照着书上的例题自己先编一些较小的程序,慢慢试着调试运行。当已经没有例题可参考时,我就只能按照自己的思路来编写程序。在编写的过程中,我遇到过一些麻烦。知道自己的思路,但是要把思路具体到代码,有时候就不知道该用什么式子来实现它。这时候就只能到处找资料或请教同学,通过查阅资料,和同学讨论,代码最终都写出来了。但是在调试的过程中,就又是一大堆的错误。这就让我充分体会到了细心和耐心的重要性,也就是在这个过程中,我了解了更多编程知识,也更知道该如何去调试程序了。有时候只是一个小小的输入错误,都能

18、引出一大堆的Warning和Error,还让你不知道该到哪里去找这个错误的源头。像这样的错误,我犯过几次。有一次,我把一个删除函数中的“:”写成了“;”,结果运行的时候,出现3个Warning,26个Error,最后一个Error还说这个程序错误太多,不能一一列举,请仔细检查。这个错误我找了好长时间都没找出来,最后还是我叫一个同学帮我找才找出来的。这个错误一改正,整个程序就都可以运行了。在运行的过程中也发现了很多逻辑错误,最后经过我一步步的单步调试,终于把它调通了。当时高兴得简直快要跳起来了这还只是写系统的内核部分,在写菜单程序时,我也纠结了好长时间。检查内核部分是否正确的时候用的是简易菜单,

19、不过那个太简陋,我决定用文本菜单。图形菜单不是没考虑过,只是在看图形菜单参考程序的时候,我发现好多地方都没办法理解,好多函数都很陌生,而且那个点阵字符运用起来还比较麻烦,所以就放弃了。在看文本菜单参考程序的时候,我也有一些地方看不懂,通过上网查资料,请教同学,并借助TC编译器边运行边理解,最终把大部分都弄懂了,然后根据自己系统的需要将参考程序进行了修改,通过调试,是这个系统能够正确运行。通过这次大型作业,我对链表的知识了解得更透彻了,也提高了自己的编程能力,养成了自己的编程风格,也让自己以后在编程时更细心、更有耐心。八、参考文献1C语言程序设计. 曹计昌,卢萍,李开编著. 科学出版社2Turb

20、o C 使用大全第一册、第二册. 徐金梧等编译. 北京科海培训中心九、附录(源代码):#include#include#include#includechar *Menu=F 文件,M 修改,I 插入,D 删除,S 查询,C 统计; /*存放主菜单信息的字符数组*/char *Menus=载入,创建,保存,退出, 修改类别信息,修改基本信息,修改租阅信息, 插入类别信息,插入基本信息,插入租阅信息, 删除类别信息,删除基本信息,删除租阅信息, 查询类别信息,查询基本信息,查询租阅信息,输出全部信息, 统计类别信息,统计基本信息,统计租阅信息,; /*存放子菜信息单的字符数组*/ int MnN

21、 = 4,3,3,3,4,3; /*存放每个菜单下面有多少个子菜单的数组*/int MnLoc5 = 4,3,2,10,7, 16,15,2,30,6, 28,27,2,42,6, 40,39,2,54,6, 52,51,2,66,7, 64,63,2,78,6; /*存放主菜单起始位置和子菜单窗口位置数组*/int Mnm, Mns,flag; /*主菜单Mnm,子菜单Mns,由flag的值决定是否退出系统*/char buf16*25*2,buf175*25*2; /*存放屏幕缓存区*/typedef struct rent_info /*定义图书租阅基本信息结构类型rent*/ char

22、 type; /*类别*/ char num10; /*图书编号*/ char renter_name20; /*姓名*/ char ID_card19; /*身份证*/ char rent_date11; /*租书日期*/ int rental_days; /*可租天数*/ char preturn_date11; /*应还日期*/ char return_date11; /*归还日期*/ int overlap_days; /*超期天数*/ double renewal_fee; /*续费*/ struct rent_info *next; /*指向下一结点的自引用指针*/rent;typ

23、edef struct basic_info /*定义图书基本信息结构类型basic*/ char type; /*类别编号*/ char num10; /*图书编号*/ char name30; /*图书名称*/ char author20; /*作者*/ char pub_house30; /*出版社*/ double sell_price; /*售价*/ double rent_price; /*租价*/ double mem_price; /*会员价*/ int sup_num; /*库存数*/ char sh_date11; /*上架日期*/ char sh_place3 /*架位*

24、/ rent *head_ /*指向租阅信息链的头指针*/ struct basic_info *next; /*指向下一结点的自引用指针*/basic;typedef struct booktype_info /*定义图书类别基本信息结构类型type*/ char tnum; /*类别编号*/ char tname10; /*类别名称*/ double renewal_rate; /*续费率*/ double discount_rate; /*会员出租折扣率*/ basic *head_basic; /*指向基本信息链的头指针*/ struct booktype_info *next; /*

25、指向下一结点的自引用指针*/type; typedef struct rent_times /*定义图书租阅次数结构类型rtimes*/ char type; /*类别编号*/ char num10; /*图书编号*/ char name30; /*图书名称*/ int k; /*租阅次数*/ struct rent_times *next; /*指向下一结点的自引用指针*/rtimes;void ShowMenuM (void); /*显示主菜单函数*/void SetMenuM (int ); /*设置选中的主菜单函数*/void ClrMenuM (int ); /*清除已选中的主菜单函

26、数*/void ShowMenuS (int ); /*显示选中主菜单的子菜单函数*/void HideMenuS (int ); /*收回选中主菜单的子菜单函数*/void SetMenuS (int ); /*设置子菜单函数*/void ClrMenuS (int ); /*清除子菜单函数*/void SelLR (int ); /*选择左边或右边的主菜单函数*/void SelUD (int ); /*选择上边或下边的子菜单函数*/void ExeItem (int, int); /*执行相应函数的函数*/void ScanKb (int *, int *); /*接受键入的键值函数*/

27、void creat_cross_list(type *head); /*创建十字交叉链表函数*/void save(type *head); /*保存数据函数*/void load(type *head); /*载入数据函数*/void modify_type(type *head); /*修改一级链表函数*/void modify_basic(type *head); /*修改二级链表函数*/void modify_rent(type *head); /*修改三级链表函数*/void delet_type(type *head); /*删除一级链表函数*/void delet_basic(

28、type *head); /*删除二级链表函数*/void delet_rent(type *head); /*删除三级链表函数*/void insert_type(type *head); /*插一级链表函数*/void insert_basic(type *head); /*插入二级链表函数*/void insert_rent(type *head); /*插入三级链表函数*/void search_type(type *head); /*查询一级链表函数*/void search_basic(type *head); /*查询二级链表函数*/void search_rent(type *head); /*查询三级链表函数*/void traverse(type *head); /*输出所有信息函数*/void count_type(type *head); /*统计一级链表函数*/void count_basic(type *head); /*统计二级链表函数*/void count_rent_date(type *head); /*统计逾期未还图书并排序输出函数*/int overlap_days(char *s1,char *s2); /*计算超期天数函数*/ void main() int i,key0,key1,idx; s

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1