C课设实验报告.docx

上传人:b****5 文档编号:7881545 上传时间:2023-01-26 格式:DOCX 页数:80 大小:773.52KB
下载 相关 举报
C课设实验报告.docx_第1页
第1页 / 共80页
C课设实验报告.docx_第2页
第2页 / 共80页
C课设实验报告.docx_第3页
第3页 / 共80页
C课设实验报告.docx_第4页
第4页 / 共80页
C课设实验报告.docx_第5页
第5页 / 共80页
点击查看更多>>
下载资源
资源描述

C课设实验报告.docx

《C课设实验报告.docx》由会员分享,可在线阅读,更多相关《C课设实验报告.docx(80页珍藏版)》请在冰豆网上搜索。

C课设实验报告.docx

C课设实验报告

华中科技大学计算机科学与技术学院

《C语言程序设计》课程设计

实验报告

 

题目:

书店租书信息管理系统

 

专业:

计算机科学与技术专业

班级:

0906班

学号:

姓名:

成绩:

指导教师:

 

完成日期:

2010年10月24日

 

1题目

2系统功能模块结构图

3数据结构设计及用法说明

4程序结构(流程图)

5功能模块介绍

6试验结果

7体会

8参考文献

9附录:

源代码

一、题目

1.题目:

书店租书信息管理系统

2.需要处理的基础数据

(1).图书类别基本信息参考:

中文字段名

类型及长度

举例

编号

char

‘0’表示教辅,‘1’表示少儿等

类别名称

char[10]

中小学教辅

续费率

double

会员出租折扣率

double

(2).图书基本信息参考:

中文字段名

类型及长度

举例

类别

char

‘0’表示教辅

图书编号

char[10]

“200900011”

图书名称

char[30]

小学语文阅读训练80篇

作者

char[20]

出版社

char[30]

长春出版社

售价

double

租价

double

会员价

double

库存数

int

上架日期

char[11]

2009/04/20

架位

char[3]

(3).图书租阅基本信息参考:

中文字段名

类型及长度

举例

类别

char

‘0’表示教辅

图书编号

char[10]

“200900011”

姓名

char[20]

身份证

char[19]

租书日期

char[11]

2010/01/20

可租天数

int

5

应还日期

char[11]

2010/01/25

归还日期

char[11]

2010/01/28

续费

double

图书续费=超期天数*租费*续费率*会员出租折扣率

 

3.需实现的系统功能

(1).各种基本数据的录入

(2).各种基本数据的修改

(3).各种基本数据的插入

(4).各种基本数据的删除

(5).基于各种数据的查询

(6).基于各种基本数据的统计计算

二、系统功能模块结构图

图1系统功能模块结构示意图

图2文件处理结构示意图图3修改处理结构示意图

图4插入处理结构示意图图5删除处理结构示意图

图6查询处理结构示意图图7统计处理结构示意图

三、数据结构设计及用法说明

1.数据结构设计

typedefstructrent_info{/*定义图书租阅基本信息结构类型rent*/

chartype;/*类别*/

charnum[10];/*图书编号*/

charrenter_name[20];/*姓名*/

charID_card[19];/*身份证*/

charrent_date[11];/*租书日期*/

intrental_days;/*可租天数*/

charpreturn_date[11];/*应还日期*/

charreturn_date[11];/*归还日期*/

intoverlap_days;/*超期天数*/

doublerenewal_fee;/*续费*/

structrent_info*next;/*指向下一结点的自引用指针*/

}rent;

typedefstructbasic_info{/*定义图书基本信息结构类型basic*/

chartype;/*类别编号*/

charnum[10];/*图书编号*/

charname[30];/*图书名称*/

charauthor[20];/*作者*/

charpub_house[30];/*出版社*/

doublesell_price;/*售价*/

doublerent_price;/*租价*/

doublemem_price;/*会员价*/

intsup_num;/*库存数*/

charsh_date[11];/*上架日期*/

charsh_place[3];/*架位*/

rent*head_rent;/*指向租阅信息链的头指针*/

structbasic_info*next;/*指向下一结点的自引用指针*/

}basic;

typedefstructbooktype_info{/*定义图书类别基本信息结构类型type*/

chartnum;/*类别编号*/

chartname[10];/*类别名称*/

doublerenewal_rate;/*续费率*/

doublediscount_rate;/*会员出租折扣率*/

basic*head_basic;/*指向基本信息链的头指针*/

structbooktype_info*next;/*指向下一结点的自引用指针*/

}type;

typedefstructrent_times{/*定义图书租阅次数结构类型rtimes*/

chartype;/*类别编号*/

charnum[10];/*图书编号*/

charname[30];/*图书名称*/

intk;/*租阅次数*/

structrent_times*next;/*指向下一结点的自引用指针*/

}rtimes;

2.数据结构说明

图2书店租书信息管理系统十字交叉链表

3.系统用法及功能说明

3.1运行程序后,即进入图书租阅信息管理系统操作界面

图8图书租阅信息管理系统操作界面

主菜单有六个选项,每个选项都是一个英文字母加主菜单名,提示用户可以用快捷键:

按热键“F”或“Alt_F”弹出“文件”下的子菜单

按热键“M”或“Alt_M”弹出“修改”下的子菜单

按热键“I”或“Alt_I”弹出“插入”下的子菜单

按热键“D”或“Alt_D”弹出“删除”下的子菜单

按热键“S”或“Alt_S”弹出“查询”下的子菜单

按热键“C”或“Alt_C”弹出“统计”下的子菜单

还有一个“退出”的快捷键:

“Alt+X”.

不用快捷键的话,可以通过按“←”“→”键选择其他主菜单。

当选中某一主菜单时,按“↓”或Enter,可以显示子菜单。

再通过“↑”“↓”键选择子菜单,按Enter,就可以进入相应函数,屏幕颜色改变,执行相应功能。

3.2.1在文件处理菜单中,选择“创建”,屏幕显示需要输入的内容,输入后按Enter,会询问是否输入另一类图书类别基本信息,”y”,则继续录入另一类图书类别基本信息,“n”,则询问是否输入%c%s类图书的基本信息,“y”则显示需要输入的内容,“n”则询问是否输入另一本类图书的基本信息。

租阅链类似。

3.2.2在文件处理菜单中,选择“保存”,保存已录入的信息,如果保存成功,屏幕显示“保存成功”。

3.2.3在文件处理菜单中,选择“载入”,载入已录入的信息,如果载入成功,屏幕显示“载入成功”。

3.2.4在文件处理菜单中,选择“退出”,则退出整个系统。

图9创建一级链表界面

图10修改二级链表界面

3.3.1在修改处理菜单中,选择“修改类别信息”,屏幕显示提示“请输入要修改的图书的类别编号:

”,输入后,如果有此类图书,则输出此类图书的类别信息,并输出可修改的选择项供选择,选择修改项后输入修改内容,按Enter,会提示“修改成功”并输出修改后数据;如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。

3.3.2在修改处理菜单中,选择“修改基本信息”,屏幕显示提示“请输入要修改的图书的类别编号:

”,输入后,如果有此类图书,则提示输入要修改的图书编号,如果有此本图书,则输出此本图书的基本信息,并输出可修改的选择项供选择,选择修改项后输入修改内容,按Enter,会提示“修改成功”并输出修改后数据。

如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。

如果没有此本图书,则提示输入错误,询问是否重新输入,是则提示输入要修改的图书编号,否则退出此功能。

3.3.3在修改处理菜单中,选择“修改租阅信息”,步骤与3.3.2类似。

图11插入一级链表界面

3.4.1在插入处理菜单中,选择“插入类别信息”,屏幕显示提示“想把信息插入到哪类图书后面?

请输入相应图书类别编号:

”,输入后,如果有此类图书,屏幕显示需要输入的内容,输入后按Enter,会提示“插入成功”。

如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。

3.4.2在插入处理菜单中,选择“插入基本信息”,屏幕显示提示“想把信息插入到哪类图书后面?

请输入相应图书类别编号:

”,输入后,如果有此类图书,则提示"想把信息插入到哪本图书后面?

请输入相应图书图书编号:

",如果有此本图书,屏幕显示需要输入的内容,输入后按Enter,会提示“插入成功”。

如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。

如果没有此本图书,则提示输入错误,询问是否重新输入,是则提示输入相应的图书编号,否则退出此功能。

3.4.3在插入处理菜单中,选择“插入租阅信息”,步骤与3.4.2类似。

图12删除三级链表界面

3.5.1在删除处理菜单中,选择“删除类别信息”,屏幕显示提示"请输入要删除的图书的类别编号:

",输入后,如果有此类图书,则提示“删除成功”,如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。

3.5.2在删除处理菜单中,选择“删除基本信息”,情况参考3.5.1和3.3.2

3.5.3在删除处理菜单中,选择“删除租阅信息”,步骤类似3.5.2。

图13查询三级链表界面

3.6.1在查询处理菜单中,选择“查询类别信息”,屏幕显示提示"请输入要查询的图书的类别编号:

",输入后,如果有此类图书,则输出此类图书类别信息,如果没有此类图书,则提示输入错误,询问是否重新输入,是则返回刚开始进入的页面,否则退出此功能。

3.6.2在查询处理菜单中,选择“查询基本信息”,屏幕显示提示"请输入要删除的图书的类别编号:

",输入后,如果有此类图书,且有书,则提示“1输出此类所有图书基本信息

2输出某本图书详细基本信息”请选择,选1则输出所有图书基本信息,选2,则需输入要查询的图书的图书编号,有此本书则输出,否则提示输入错误,询问是否重新输入是则返回上一步,否则退出此功能。

3.6.3在查询处理菜单中,选择“查询基本信息”,步骤类似3.6.2。

图14统计三级链表界面

3.7.1在统计处理菜单中,选择“统计类别信息”,屏幕直接输出总共的类别数和所有类别信息。

3.7.2在统计处理菜单中,选择“统计基本信息”,屏幕直接输出总共的图书本数和所有图书基本信息。

3.7.3在统计处理菜单中,选择“统计租阅信息”,查询某月各图书的租阅次数,屏幕显示提示“请输入要统计的年月:

”,输入后按Enter,将输出各图书在当月内的租阅次数,且已按租阅次数从高到低排序。

四、程序结构(流程图)

删除图书基本信息函数流程图

五、各模块的功能

具体介绍参见第3节(系统操用法及功能说明),运行结果请参见第6节(试验结果)

Ø数据文件处理

"载入","创建","保存","退出"

Ø数据修改处理

"修改类别信息","修改基本信息","修改租阅信息"

Ø数据插入处理

"插入类别信息","插入基本信息","插入租阅信息"

Ø数据删除处理

"删除类别信息","删除基本信息","删除租阅信息"

Ø数据查询处理

"查询类别信息","查询基本信息","查询租阅信息","输出全部信息"

Ø数据统计处理

"统计类别信息","统计基本信息","统计租阅信息"

六、试验结果

1.数据文件处理

1.1创建

录入数据

1.2载入

2修改处理

修改图书基本信息

输入错误的处理:

 

选择修改项并输入修改信息:

修改结果:

 

3.插入处理

插入图书类别信息:

输入后按Enter,显示插入成功:

 

4.删除处理

删除图书租阅信息

输入错误的处理:

 

输入无误,显示“删除成功”:

5.查询处理

查询图书类别信息:

 

查询结果:

输出全部:

 

6.统计处理

统计总图书本数:

七、体会

第一次写这么大的一个程序,其中经历了诸多纠结痛苦,也尝到了调通程序而获得的快乐,学到了很多编程方面的知识,并提高了自己的编程能力。

刚开始听其他同学说这个程序有两千行代码要写,感觉头都大了,有一点畏惧心理,于是在暑假的时候就开始看书,照着书上的例题自己先编一些较小的程序,慢慢试着调试运行。

当已经没有例题可参考时,我就只能按照自己的思路来编写程序。

在编写的过程中,我遇到过一些麻烦。

知道自己的思路,但是要把思路具体到代码,有时候就不知道该用什么式子来实现它。

这时候就只能到处找资料或请教同学,通过查阅资料,和同学讨论,代码最终都写出来了。

但是在调试的过程中,就又是一大堆的错误。

这就让我充分体会到了细心和耐心的重要性,也就是在这个过程中,我了解了更多编程知识,也更知道该如何去调试程序了。

有时候只是一个小小的输入错误,都能引出一大堆的Warning和Error,还让你不知道该到哪里去找这个错误的源头。

像这样的错误,我犯过几次。

有一次,我把一个删除函数中的“:

”写成了“;”,结果运行的时候,出现3个Warning,26个Error,最后一个Error还说这个程序错误太多,不能一一列举,请仔细检查。

这个错误我找了好长时间都没找出来,最后还是我叫一个同学帮我找才找出来的。

这个错误一改正,整个程序就都可以运行了。

在运行的过程中也发现了很多逻辑错误,最后经过我一步步的单步调试,终于把它调通了。

当时高兴得简直快要跳起来了

这还只是写系统的内核部分,在写菜单程序时,我也纠结了好长时间。

检查内核部分是否正确的时候用的是简易菜单,不过那个太简陋,我决定用文本菜单。

图形菜单不是没考虑过,只是在看图形菜单参考程序的时候,我发现好多地方都没办法理解,好多函数都很陌生,而且那个点阵字符运用起来还比较麻烦,所以就放弃了。

在看文本菜单参考程序的时候,我也有一些地方看不懂,通过上网查资料,请教同学,并借助TC编译器边运行边理解,最终把大部分都弄懂了,然后根据自己系统的需要将参考程序进行了修改,通过调试,是这个系统能够正确运行。

通过这次大型作业,我对链表的知识了解得更透彻了,也提高了自己的编程能力,养成了自己的编程风格,也让自己以后在编程时更细心、更有耐心。

八、参考文献

1.C语言程序设计.曹计昌,卢萍,李开编著.科学出版社

2.TurboC使用大全第一册、第二册.徐金梧等编译.北京科海培训中心

九、附录(源代码):

#include

#include

#include

#include

char*Menu[]={"F文件","M修改","I插入","D删除","S查询","C统计"};

/*存放主菜单信息的字符数组*/

char*Menus[]={"载入","创建","保存","退出",

"修改类别信息","修改基本信息","修改租阅信息",

"插入类别信息","插入基本信息","插入租阅信息",

"删除类别信息","删除基本信息","删除租阅信息",

"查询类别信息","查询基本信息","查询租阅信息","输出全部信息",

"统计类别信息","统计基本信息","统计租阅信息",};

/*存放子菜信息单的字符数组*/

intMnN[]={4,3,3,3,4,3};/*存放每个菜单下面有多少个子菜单的数组*/

intMnLoc[][5]={{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}};/*存放主菜单起始位置和子菜单窗口位置数组*/

intMnm,Mns,flag;/*主菜单Mnm,子菜单Mns,由flag的值决定是否退出系统*/

charbuf[16*25*2],buf1[75*25*2];/*存放屏幕缓存区*/

typedefstructrent_info{/*定义图书租阅基本信息结构类型rent*/

chartype;/*类别*/

charnum[10];/*图书编号*/

charrenter_name[20];/*姓名*/

charID_card[19];/*身份证*/

charrent_date[11];/*租书日期*/

intrental_days;/*可租天数*/

charpreturn_date[11];/*应还日期*/

charreturn_date[11];/*归还日期*/

intoverlap_days;/*超期天数*/

doublerenewal_fee;/*续费*/

structrent_info*next;/*指向下一结点的自引用指针*/

}rent;

typedefstructbasic_info{/*定义图书基本信息结构类型basic*/

chartype;/*类别编号*/

charnum[10];/*图书编号*/

charname[30];/*图书名称*/

charauthor[20];/*作者*/

charpub_house[30];/*出版社*/

doublesell_price;/*售价*/

doublerent_price;/*租价*/

doublemem_price;/*会员价*/

intsup_num;/*库存数*/

charsh_date[11];/*上架日期*/

charsh_place[3]/*架位*/

rent*head_/*指向租阅信息链的头指针*/

structbasic_info*next;/*指向下一结点的自引用指针*/

}basic;

typedefstructbooktype_info{/*定义图书类别基本信息结构类型type*/

chartnum;/*类别编号*/

chartname[10];/*类别名称*/

doublerenewal_rate;/*续费率*/

doublediscount_rate;/*会员出租折扣率*/

basic*head_basic;/*指向基本信息链的头指针*/

structbooktype_info*next;/*指向下一结点的自引用指针*/

}type;

typedefstructrent_times{/*定义图书租阅次数结构类型rtimes*/

chartype;/*类别编号*/

charnum[10];/*图书编号*/

charname[30];/*图书名称*/

intk;/*租阅次数*/

structrent_times*next;/*指向下一结点的自引用指针*/

}rtimes;

voidShowMenuM(void);/*显示主菜单函数*/

voidSetMenuM(int);/*设置选中的主菜单函数*/

voidClrMenuM(int);/*清除已选中的主菜单函数*/

voidShowMenuS(int);/*显示选中主菜单的子菜单函数*/

voidHideMenuS(int);/*收回选中主菜单的子菜单函数*/

voidSetMenuS(int);/*设置子菜单函数*/

voidClrMenuS(int);/*清除子菜单函数*/

voidSelLR(int);/*选择左边或右边的主菜单函数*/

voidSelUD(int);/*选择上边或下边的子菜单函数*/

voidExeItem(int,int);/*执行相应函数的函数*/

voidScanKb(int*,int*);/*接受键入的键值函数*/

voidcreat_cross_list(type**head);/*创建十字交叉链表函数*/

voidsave(type*head);/*保存数据函数*/

voidload(type**head);/*载入数据函数*/

voidmodify_type(type*head);/*修改一级链表函数*/

voidmodify_basic(type*head);/*修改二级链表函数*/

voidmodify_rent(type*head);/*修改三级链表函数*/

voiddelet_type(type*head);/*删除一级链表函数*/

voiddelet_basic(type*head);/*删除二级链表函数*/

voiddelet_rent(type*head);/*删除三级链表函数*/

voidinsert_type(type*head);/*插一级链表函数*/

voidinsert_basic(type*head);/*插入二级链表函数*/

voidinsert_rent(type*head);/*插入三级链表函数*/

voidsearch_type(type*head);/*查询一级链表函数*/

voidsearch_basic(type*head);/*查询二级链表函数*/

voidsearch_rent(type*head);/*查询三级链表函数*/

voidtraverse(type*head);/*输出所有信息函数*/

voidcount_type(type*head);/*统计一级链表函数*/

voidcount_basic(type*head);/*统计二级链表函数*/

voidcount_rent_date(type*head);/*统计逾期未还图书并排序输出函数*/

intoverlap_days(char*s1,char*s2);/*计算超期天数函数*/

voidmain()

{

inti,key0,key1,idx;

s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

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

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