




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程名称: 数据结构 设计题目: 图书借阅管理系统 系 别: 计算机系 专 业: 计算机科学与技术 组 别: 10 学生姓名: 学 号: 起止日期: 2012年4月1日 2012年 6月11日指导教师: 目录第一章 需求分析21.1课程设计题目21.2课程设计内容及要求21.3课程设计思想21.4开发环境及开发工具2第二章 设计概要22.1课程设计流程图22.2 菜单设计8第三章 详细设计33.1 硬件设计与软件设计33.2 程序代码33.2.1建立算法33.2.2装载算法63.2.3排序算法8第四章调试与操作说明9第五章课程设计总结与体会9谢辞:11参考文献:11第一章 需求分析
2、1.1课程设计题目 图书借阅管理系统(采用无头结点并且带头尾指针的双循环链表利用类型定义一)1.2课程设计内容及要求 1.设计一个图书借阅管理系统(借书证号,姓名,书号,书名,单价天,借书日期,还书日期,总天数,总利润;) 2.系统模块:密码启动修改模块,数据保存读入模块,数据库建立模块,数据查找模块(借书证号查询,姓名(包括模糊)查询),图书借阅模块,图书还书模块,数据统计模块(分别统计:数据库中还书说收回的总金额,及到当前为止没有还书所应得的总金额),数据排序模块; 3.可同时借阅四本书,每本书最长可借2年时间,总天数,总利润有算法自动计算;1.3课程设计思想 先用c语言和数据结构学过的知
3、识把每个模块编写出来,再利用函数调用等方式将这些模块一一连接起来,最后通过修改和调试成为符合题目要求的图书借阅管理系统。1.4开发环境及开发工具microsoft visual c+ 6.0第二章 设计概要2.1课程设计流程图退出界面开始界面始界面输入密码主程序模块模块密码启动修改数据保存读入图书借阅归还数据排序模块数据统计模块数据查找模块数据库建立图1流程图2.2 菜单设计图书信息建立图书信息显示归还图书统计操作查找操作借阅图书主菜单排序操作删除操作修改系统的密码操作将数据存入磁盘文件将磁盘文件装入内存插入操作退出系统图2 设计图第三章 详细设计3.1 硬件设计与软件设计 系统设计是把需求转
4、化为软件系统的最重要的环节。系统设计的优劣在根本上决定了软件系统的质量。良好的数据结构设计,可以提高数据信息的存储效率,保证数据信息的完整性和一致性。同时,一个合理的数据结构有利于程序的实现。这里采用visual c+作为编译环境,同时有时候也用turboc2编译。3.2 程序代码3.2.1建立算法link setlink(link *head,link tail) /*数据库建立模块*/ link p,q; char str10,ch; printf(是否录入信息(y/n)?n); scanf(%c%*c,&ch); if(ch=y); printf(请输入借书证号,姓名,书号,书名,单价每
5、天,借书日期,还书日期,总天数,总利润nn); q=(link)malloc(sizeof(lnode); q-next=q; q-pre=q; *head=q; p=q; while(ch=y) printf(请输入借书证号:n); gets(str); while(strlen(str)=0|checkxsd(str) printf(借书证号中不能包含字符和小数点,请重新输入借书证号:n); gets(str); strcpy(q-num,str); printf(请输入姓名:n); gets(str); while(strlen(str)=0|checksz(str) printf(姓名
6、中不能包含数字和小数点,请重新输入姓名:n); gets(str); strcpy(q-name,str); printf( t请输入书名: n); gets(str); while(strlen(str)=0|checksz(str) printf(书名中不能包含数字和小数点,请重新输入:n); gets(str); strcpy(q-sname,str); printf( t请输入书号: n); gets(str); while(strlen(str)=0|checkxsd(str) printf(书号中不能包含字符和小数点,请重新输入:n); gets(str); strcpy(q-sh
7、u,str); printf(t请输入单价:); scanf(%f,&price); getchar(); if (priceprice=price; printf(请输入借书日期,年月日用点号分隔(2012.03.02):n); gets(str); while( jcrq(str) | strlen(str)!=10) printf(日期输入错误,请重新输入:n); gets(str); strcpy(q-jdate,str); printf(请输入还书日期,年月日用点号分隔(2012.03.02):n); gets(str); while( jcrq(str) | strlen(str)
8、!=10 | checkjh(q-jdate,str) printf(日期输入错误请重新输入:n); gets(str); strcpy(q-hdate,str); q-day=date(q-jdate,q-hdate); q-profit=(q-day)*(q-price); if(q!=*head) q-next=p-next; /*链接后继指针*/ p-next=q; q-pre=p; /* 链接前驱指针 */ p=q; tail=p; printf(是否继续录入信息(y/n)?n); scanf(%c%*c,&ch); if(ch=y)q=(link)malloc(sizeof(lno
9、de); return(tail);3.2.2装载算法link load(link *head,link tail) /*数据载入模块*/ lnode *p,*q=null; char str30; file *fp; int i=0; clrscr(); /* 清屏 */ printf(n); printf(n); printf( * n); printf( * * n); printf( * * n); printf( * 课程设计双循环链表文件载入窗口 * n); printf( * * n); printf( * * n); printf( * * n); printf( * n);
10、printf(n); printf(n); printf( 输入载入磁盘文件名(可带路径) : ); gets(str); fp=fopen(str,rb); while(fp=null) i+; if(i=3) printf(n); printf(n); printf(n); printf(n); printf( * n); printf( * * n); printf( * * n); printf( * 请建立新链表后存盘保存 * n); printf( * * n); printf( * 选择新磁盘文件载入 * n); printf( * * n); printf( * * n); p
11、rintf( * n); printf(n); printf(n); scanf(%*c); exit(0); printf( 磁盘文件 %s 不存在!n,str); printf( 输入载入磁盘文件名(可带路径) : ); gets(str); fp=fopen(str,rb); printf(n 磁盘文件 %s 装入内存成功!n,str); *head=(lnode *)malloc(sizeof(lnode); (*head)-next=*head; (*head)-pre=*head; p=*head; while(!feof(fp) q=(lnode *)malloc(sizeof(
12、lnode); if(!p) printf(内存中无容量n); return null; if(1!=fread(q,sizeof(lnode),1,fp) break; q-next=p-next; p-next=q; q-pre=p; p=q; tail=p; p=*head; *head=(*head)-next; (*head)-pre=tail; tail-next=*head; free(p); fclose(fp); printf(nn); printf( 按任意键返回到主窗口!); scanf(%*c); return(tail);/*检测字符串中是否有小数点和数字*/int
13、checksz(char str)int i,k=0;for(i=0;stri!=0;i+)if(stri=46|(stri=0 & stri=9)k=1;break;return k;/*检测字符串中是否有小数点和字符*/int checkxsd(char str)int i,k=0;for(i=0;stri!=0;i+)if(stri9)k=1;break;return k;3.2.3排序算法link paixulink(link *head,link tail) /*数据排序模块*/ /* 按借书证号排序 */ lnode *p,*q,*r,*s,*t,*m; s=(lnode *)ma
14、lloc(sizeof(lnode); /*取一个临时的空间代替头结点*/ s-next=s; p=*head; t=s; m=*head; while(p-next!=*head) q=p; /* q始终指向最小值 */ r=q-next; /* r移动指针 */ while(r!=*head) /* 查找最小值 */ if(strcmp(q-num,r-num)next; if(q!=p) /* 如果假设的最小值不正确 */ q-pre-next=q-next; /* 删除最小值结点 */ q-next-pre=q-pre; else p=p-next; t-next-pre=q; q-n
15、ext=t-next; /* 将最小值结点链接到此趟的第一个位置处 */ t-next=q; t=q; t-next-pre=p; p-next=t-next;/*将最后一个结点链接到临时空间之后*/ t-next=p; t=p; tail=p; *head=s-next; (*head)-pre=tail; tail-next=*head; printf(图书已按编号排序,可返回到主菜单来显示!); return(tail);第四章 调试与操作说明在系统的制作过程中,我们不免会遇到很多问题。当遇到问题时,系统会提示出在哪一个地方出现了错,我们可以根据系统提示,仔细检查代码做出相应的改进。有错
16、误时就无法进入界面进行相应的操作。当然由于我的经验还不足,该程序还不是特别的完美。系统就无法进入页面,必须确保程序没有任何错误才可进入。第五章 课程设计总结与体会不知不觉中一个学期已经过完了,又一漫长的暑假即将到来,数据结构的课程设计也接近尾声了。从选到课程设计的题目到现在也有两三个月的时间了,回想一下,这些时间里,时时刻刻的在提心吊胆中度过,有太多的不尽人意,也有很多的惊喜,可谓是酸甜苦辣,五味俱全。这对我是一个打击,是一个激励,是无数次失败后成功的喜悦!通过这次课程设计我终于明白了有压力才有动力这句话,坚持则是成功的必要条件,还记得上第一节数据结构课的时候老师告我们这个学期要做课程设计,虽
17、然之前听高年级的同学们说过课程设计很难,并且孙老师的要求很严,但是当时的我什么也不懂,也没对课程设计有太多的想法,对此总是一副很不在乎的样子,只觉得不就是课程设计么,有什么大不了的,所以对它没有足够的重视。虽然老师总是一遍一遍的重复强调,但是我总没把它放在心上!因为我觉得那是一件很容易的事,没必要把太多的时间用在课程设计上。听已经做过的同学们说过,数据结构的课程设计很难,尤其是孙老师的数据结构课通过的过程是相当艰难的,终于我知道我已经到了悬崖边上了,必须放手一搏了。当课程设计的题目出来后,我随便选了一道题,因为我觉得什么题都一样没必要刻意的选择,于是在我就很随意的选了书借阅管理系统。但是当我听
18、说这是最难得一道题时,还是有点懵了,觉得真是“中奖了”,居然让我做最难的题。但是没办法,箭在弦上不得不发啊,我只有硬着头皮慢慢做了!我从课本上查找有用的东西,c语言,数据结构,还有笔记,都被我翻了个遍。哎,说实话当时还有点怪自己运气不好,怎么偏偏就抽了个最难的呢,但是既然选择了就坚持做下去吧,越难得题越能锻炼自己,如果能完成这么一个课程设计,是相当有成就感的啊。这学期开始几周时间是我们自己选题上机的时间,虽然上机时间只有短短几个星期但从中确实学到了不少知识。数据结构可以说是计算机里一门基础课程,但我觉得我们一低定要把基础学扎实,然而这次短短的上机帮我又重新巩固了c语言知识,让我的水平又一部的提
19、高。数据结构这是一门纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。能把它学好也是很有用的。于是我就去问同学,上网查,终于清楚了课程设计的大概要求,也慢慢想通了设计思路。问题是一个接着一个的来,在接下来的编程中更是困难重重,但是没办法还得硬着头皮继续。每天一有空就打开电脑看题,看书,看笔记。有那么一段时间,程序毫无进展,把我愁的啊!真是像古人说的那样,书到用时方恨少。 难题一个接一个,解决了一个又来一个,真是一波未平一波又起。程序终于编完了,就是不能运行。坐在电脑前抱怨啊,纠结啊,但是抱怨纠结是没有用的,再怎么样程序还是得继续编啊,不能轻
20、易放弃,最起码的辛苦就不说了,到最后过不了是大事啊。其实事后想一想,也没啥抱怨的,有抱怨那点时间还不如继续研究呢,也许还能看出点什么呢,而且抱怨完了,程序不是还没有解决吗,还不得自己编吗?所以经过自我调节,更加坚定了我的决心,一定要继续编下去。只要一有时间就打开程序看看,问问同学。听说有同学的能运行了,我更加着急了,然后问问人家是怎么弄的。经过很长时间的纠结,突然在一次运行的时候出现了黑屏,好是激动啊,久违了的黑色出现在了我眼前,说不出的高兴啊,总算离成功更进一步了,这些天没白熬。再后来,运行程序的时候,啥情况也出现,真是怪了。比如出现乱码了,程序永无止境的运行等等。 总之,是各种问题都出现过
21、。让我觉得,改程序甚至比编程还麻烦,看一次程序看不出毛病,得看好多次呢,眼睛盯着电脑都快花了,有时还眼睛疼。而那程序呢,是一点都不争气,总是有问题,几乎每一个程序运行的时候都要出现问题,我又傻眼了,该怎么办。每个人都忙着课程设计,后来那段时间每天聊天的内容都是围绕着课程设计,同学们都也投入了好多精力,一点没有快放假了,要回家的气氛。一步一个脚印地解决每一个问题,看着一个一个的程序问题不断解决,心里有说不出来的高兴。但是有几个程序还是改不对,怎么改也不行。眼看一个星期的时间就要到了,我真是急死了,还有几个程序不对啊。有时候晚上睡不着满脑子想的都是程序,有时候还能想出点原因,第二天就赶快试一试,但
22、是开始几次还是不对,我盯着程序半天也看不出问题,都快被电脑辐射死了,看着脸色苍白,有点像营养不良似得,但是程序还是没弄好。心里那个滋味啊!不过经过好几天的折腾终于把程序弄好了。持续了好久,也让人纠结了好久的课程设计告一段落了,我从当初什么也不懂并且只能看着老师给演示,到现在自己也能编出一个可以说是我目前编的最长的一个程序了,从刚开始的惊奇到现在的了解,是一段艰难而又充实的日子,可以作为我人生中的一个第一次了。很是有成就感。这次课程设计给我最大的收获就是:不仅考验了我的编程能力,也考验了我的毅力。让我深刻地体会到了,遇事不要抱怨,而是要全身投入,持之以恒。要是放到以往,我怎么也不敢想我能坚持到最
23、后,因为我是个不怎么耐心的人。与其临渊羡鱼,不如退而结网。这次数据结构课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个数据结构开始无论遇到什么困难,我都努力克服。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次数据结构课程设计,不过这只是我学习路上的驿站。语言并不重要,毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊!以前每天都在电脑上使用各个软件,但是却从来从来没有想过它的源代码是什么,更是没想到自己也能尝试编一下,这次编程的经历也让我体会到了那些软件设计人的艰辛,让我明白了有付出才有收获。知识方面还有很大的上升空间,学到了好多以前想都没想过的东西。这次锻炼不仅仅在知识方面让我学到好多,而且还在其它方面帮助了我,比如在与同学的交流过程中,促进了我们的友谊。另外还使我在处理事情方面有了很大的提高,比如遇到问题时不能慌,要冷静的分析其原因,并通过各种方法来解决难题,如果遇到问题不去解决,而是抱怨,那问题永远都解决不了。还有就是只有把东西装进自己的脑子里,才是最有用的,才是属于自己的。就说我们上课做的那一本本厚
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年卫生管理医务合作试题及答案
- 2024年网络规划设计师考场指南试题及答案
- 乡村全科助理医师复习路径的探索试题及答案
- 幼儿教师的试题及答案
- 宠物行业入股合同协议
- 2025年乡村执业医师考核内容试题及答案
- 室内外装修工程合同协议
- 宣传栏订货合同协议
- 激光工程师复习要点分析试题及答案
- 中考机械效率试题及答案
- 2024-2025学年中考历史复习- 阶段检测卷三(中国现代史)(含答案)
- 校园安全管理体系总结与改进措施分析
- 成人原发性腹壁疝腹腔镜手术中国专家共识(2025版)解读
- 【中国信通院苏州市机器人产业协会】2025“机器人+人工智能”工业应用研究报告
- 公司签约主播合作协议(2025年版)
- 四川省2024年普通高校招生体育类本科批调档线
- 2024年广东广州大学招聘编制内管理和教辅人员笔试真题
- 2024年四川甘孜州招聘事业单位人员笔试真题
- 湖北省部分省级示范高中2023-2024学年高二下学期数学期中试题(含答案)
- 试剂冷链配送方案
- 统编版(2024)七年级下册语文期末复习:古诗文默写 刷题练习题(含答案解析)
评论
0/150
提交评论