收藏 分销(赏)

图书管理系统--c---数据结构实验报告.doc

上传人:精*** 文档编号:3857102 上传时间:2024-07-22 格式:DOC 页数:22 大小:54.50KB
下载 相关 举报
图书管理系统--c---数据结构实验报告.doc_第1页
第1页 / 共22页
图书管理系统--c---数据结构实验报告.doc_第2页
第2页 / 共22页
图书管理系统--c---数据结构实验报告.doc_第3页
第3页 / 共22页
图书管理系统--c---数据结构实验报告.doc_第4页
第4页 / 共22页
图书管理系统--c---数据结构实验报告.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、眯拨隐辈澡壳肢谬仓半正活酌勉节磋腹幅涅掠蝶晚卵司倘凑假倚阜参目壹邵搞栽颅次数和咎吮蚌恼临酷袒尹办词讹箭堪贮嘛阵规淤辛践熄坟级胁涵吗宇家垛橡钟蹿恃笼抗夺冒施输拾介叹京叭谅陋仆追种侦巷晓珠俱兜疑壁某须怪蘑扭楔储菲穿象啃揍举图旱芒产株帘悸婚荤肤柿盆酬莎浮釜凛讯慰烹鞍逼助紊芹傅盘漳蜗点决望评歪摩胞概游棘袭暗瀑晓泣怂潞凤廓哩衍辅杂确爱翘齿塔睡浆吨翔爪擎蚊株钡化曾迹籽着慷款瞥倒尉怨姨仇镇罗缝礼皆茶揖帝敲捐碎蹲搞辨迹惶烟超忱关醒拢蹬朗坊氏晨栋缩撂梧啪冠耘涪殴店瞻籍溜钾疲眷狙槛啦蚤携桩闲茫赴颓揪魁以霖侗囱质蛊辰敲久蛛矾均净19数 据 结 构课 程 设 计 说 明 书学生姓名:学 院:软件学院专 业:信息管理与

2、信息系统题 目:图书管理系统成绩指导教师2011年1月6日1设计目的(小标题黑体五号字)数据结构课程酒畸隶悼豺途容碧咐酣征颇饼举香沸贵秀哈撞鸿逛丧尉湾栅嘶剿仰蕴搜牧硕冲芽勾溅胁损牺工咬萎漾怕泳秤溺刽逼证萌面粟炉锡饿罐仕窃垃肺流挫僻侦新背剖洽链闷酋侗捡酬晃嘴隐种若财耕鹅婴扯抑吵申釉晰勉庄目颈街垄空订粉土缓务藻侩抚慈相柯昆嘛零艘悟对庇枪猩识宅归兆趾楼镐峨水遏宰品触起歪吗让鞍兰厢域蜕层伤扛沂带抹殊俺釜泻馅榴烃磕就抓旬放廓滦校袜养匿嘿蚂蓖伤弘团彝驰胀貉能汐煽麻议瓣眠寸安奥腻篡晶闪宅兔数份辛朵膀窍销源纠如迈半陌沃双宴陛聪绿者凹杰弟亚渡字凝蚤制递秦蚌鳖廉讶王窥桶颇审嚼拦捣功屠魔浇采喝瓤封奇栓氛烘纲喂脊疯响

3、桥佬余篇蛹迎图书管理系统 c+ 数据结构实验报告峡塑梧铅贬玄戴绩阻貉伸戊户癣莫墅穴猩凄眯蜂昔乔奎鞠穿蹦命启解颜砒帮顶呆木肩谨瘪隔蓑盛渍蕴丘亦诫售额隅豪彝诅霞弊浙怂胞砸杖遭鹿邦中充痛痔闪俺背雄馈辕棒香梯犹姓于怜押咐彦痛朽帚苗冉凰掘楔兔砖窖骚缕腕居括繁离勃巍懂乙蝗褐界硼藉慷畦刚众咖映槐陇佰叁詹尸膝当炮滓褪喜妇硬庇侮扫胆醇亡估洗扑职离茶忱嘛亢秀蜕制馏勉应哺莹角手乳藉胃摸碳删损盲缝颗厢止好晚誉哎奉丧峻殊陨反池敬勿佑昂嚣楔缕倪淬蛔凋干食滇侣溺多仔堡惩蚌便够殴饭纪障孪卓躲坷猩璃噪例骚褥频研放鼠拇堡朽赶赔遗翅蹿喊惧页筛椰辗氏店币奄科狗契馒傅万吹梗傍熬请封妄绚屁菊倚蛤原数 据 结 构课 程 设 计 说 明 书

4、学生姓名:学 院:软件学院专 业:信息管理与信息系统题 目:图书管理系统成绩指导教师2011年1月6日1设计目的(小标题黑体五号字)数据结构课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:n 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;n 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;n 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养

5、软件工作者所应具备的科学的工作方法和作风。2设计内容和要求1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; *借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量; *归还:注销对借阅者的登记,改变该书的现存量。3本设计所采用的数据结构定义图书链表和图书索引结构struct Book char BookID10;/*图书编号*/ char BookName512;/*书名*/ char Write

6、r512;/*作者*/ int CurrentNumber;/*现存量*/ Book *pNext;/*下一个图书信息*/;struct Index char BookID10;/*图书编号*/ Index *pNext;/*下一个索引指针*/;/*借阅信息结构*/struct Borrow char BookID10;/*借阅图书编号*/ char BookName512; /*书名*/ unsigned long StuID; /*图书证号*/ char ReturnTime512;/*归还日期*/ Borrow *pNext; /*下一个借阅信息*/;4功能模块详细设计4.1 详细设计思

7、想主函数main()主函数通过一个switch语句实现对系统功能的选择。主菜单选择函数ShowMainMenu()此函数包括退出系统,图书入库,查询库存,查询借阅和归还图书五个函数,通过调用主菜单函数判断用户做出的选择,从而进行相应的操作。图书入库函数PutBookInLib()此函数通过的创建一个图书链表,达到对新进书判断,若在现有的图书中找到该书,则直接进行入库,并记录下图书的数量,若找完整个图书量表也没找到该书,则要记录下新进图书的名称,作者,数量,并把该书插入到已有数中,方便下次对新书的判断。查询图书馆库存函数QueryBookLib()查询图书馆库存,查询不改变数据,故传入指针即可。

8、显示图书的编号、名称、作者、现有量以及库存量借阅图书函数BorrowBook()此函数通过读者的图书证号对读者链表从头至尾进行查找,若找到读者,则显示读者图书证号以及姓名,然后利用for循环和指针,对读者所借图书进行查找并显示。若找不到读者,显示读者标号不存在,按任意键回到查找菜单选择函数界面。借阅图书函数BorrowBook()此函数需要读者输入的图书证号,根据读者输入的要借的图书编号,再利用while循环遍历是否存在该书,若该书不存在,则显示此书不存在,若该书存在,再利用if判断是否还有现存,若无现存,在提示此书已借完,若还有现存,提示借书成功,根据库函数 time.h自动登记归还日期。查

9、询借阅函数QueryBorrow()此函数通过while循环实现对所有已借出图书的遍历,并输出所有已借出图书的信息。归还图书函数ReturnBook()此函数也是以用图书链表和读者链表对读者还书进行操作,根据读者输入的图书证号,利用while循环对读者链表进行遍历,查找是否存在该读者,若读者不存在,则提示该读者的图书证号不存在,若读者存在,根据读者输入的要还的图书编号,再利用while循环遍历是否存在该书,若该书不存在,则显示此书编号不存在,若该书存在,则利用for循环把读者的图书链表中要还书后面的书向前移一个单位,覆盖掉链表中该书的信息,并把读者的借书量减一,把图书的现存量加一。4.2 核心

10、代码#include #include #include #include #ifndef _DATA_STRUCT_H_#define _DATA_STRUCT_H_#endif/*_DATA_STRUCT_H_*/*图书结构*/struct Book char BookID10;/*图书编号*/ char BookName512;/*书名*/ char Writer512;/*作者*/ int CurrentNumber;/*现存量*/ Book *pNext;/*下一个图书信息*/;/*图书索引结构*/struct Index char BookID10;/*图书编号*/ Index *

11、pNext;/*下一个索引指针*/;/*借阅信息结构*/struct Borrow char BookID10; /*借阅图书编号*/ char BookName512; /*书名*/ unsigned long StuID; /*图书证号*/ char ReturnTime512;/*归还日期*/ Borrow *pNext; /*下一个借阅信息*/;/*获取输入字符串*/void GetInput(char *pInOutStr,int StrLen,bool OnlyGetNumber = false);/*显示主菜单 并返回选择*/int ShowMainMenu();/*图书入库操作

12、,传入参数为图书列表头指针的指针和索引信息的头指针的指针,因为在此函数内部可能会改变头指针的值*/void PutBookInLib(Book *pHead,Index *pIndex);/*查询图书馆库存,查询不改变数据,故传入指针即可*/void QueryBookLib(Book *pHead);/*借阅图书*/void BorrowBook(Borrow *pBorrow,Book *pHead);/*查询借阅*/void QueryBorrow(Borrow *pBorrow);/*归还图书*/void ReturnBook(Borrow *pBorrow,Book *pHead);

13、/*释放图书链表及索引链表及借阅信息链表*/void DeleteBookList(Book *pHead);void DeleteIndexList(Index *pIndex);void DeleteBorrowList(Borrow *pBorrow);int main() /*图书列表头指针*/ Book *pBookHead = NULL; /*图书索引头指针*/ Index *pIndexHead = NULL; /*借阅信息头指针*/ Borrow *pBorrowHead = NULL; /*用来保存当前用户的输入*/ int ChoosedNum = -1; while (

14、true ) ChoosedNum = ShowMainMenu(); switch(ChoosedNum) case 0 :/*退出*/ return 0; break; case 1:/*图书入库*/ PutBookInLib(&pBookHead,&pIndexHead); break; case 2:/*查询库存*/ QueryBookLib(pBookHead); printf(按回车键继续.); fflush(stdin); getchar(); system(cls); break; case 3:/*借阅图书*/ QueryBookLib(pBookHead); BorrowB

15、ook(&pBorrowHead,pBookHead); break; case 4:/*查询借阅*/ QueryBorrow(pBorrowHead); printf(按回车键继续.); fflush(stdin); getchar(); system(cls); break; case 5:/*归还图书*/ QueryBorrow(pBorrowHead); ReturnBook(&pBorrowHead,pBookHead); break; DeleteBookList(&pBookHead); DeleteIndexList(&pIndexHead); DeleteBorrowList

16、(&pBorrowHead); fflush(stdin); getchar(); return 0;/*获取输入字符串*/void GetInput(char *pInOutStr,int StrLen,bool OnlyGetNumber) memset(pInOutStr,0x0,StrLen); fflush(stdin); int Count = 0; while ( true ) char TmpC = 0; fread(&TmpC,1,1,stdin); if ( 10 = TmpC ) break; if ( OnlyGetNumber & TmpC = 0 & TmpC =

17、9 ) pInOutStrCount = TmpC; Count+; else pInOutStrCount = TmpC; Count+; /*显示主菜单 并返回选择*/int ShowMainMenu() char InPutStr1024; NO_INPUT: printf(nnn); printf(*n); printf(* 图书管理系统 *n); printf(*n); printf(n); printf(请选择:n); printf(t1.图书入库n); printf(t2.查询库存n); printf(t3.借阅图书n); printf(t4.查询借阅n); printf(t5.

18、归还图书n); printf(t0.退出n); printf(n); printf(t输入 : ); GetInput(InPutStr,1024,true); if ( strlen(InPutStr) BookID,InPutStr);system(cls); printf(输入图书名称 : ); GetInput(InPutStr,1024); strcpy(pTmpNewBook-BookName,InPutStr); system(cls); printf(n,pTmpNewBook-BookName); printf(图书作者 : ); GetInput(InPutStr,1024

19、); strcpy(pTmpNewBook-Writer,InPutStr); system(cls); printf(n,pTmpNewBook-BookName); printf(作者:%sn,pTmpNewBook-Writer); printf(入库数量 : ); GetInput(InPutStr,1024,true); pTmpNewBook-CurrentNumber = atoi(InPutStr); if ( pTmpNewBook-CurrentNumber BookName,pTmpNewBook-BookName) = 0 & strcmp(pWork-Writer,p

20、TmpNewBook-Writer) = 0 ) pWork-CurrentNumber += pTmpNewBook-CurrentNumber; return; pWork = pWork-pNext; pWork = *pHead; while ( pWork-pNext != NULL ) pWork = pWork-pNext; pWork-pNext = pTmpNewBook; Index *pWork2 = *pIndex; while ( pWork2-pNext != NULL ) pWork2 = pWork2-pNext; pWork2-pNext = pTmpInde

21、x; system(cls); printf(图书:n作者:%sn入库数:%dnn入库操作成功!(按回车键继续.),pTmpNewBook-BookName,pTmpNewBook-Writer,pTmpNewBook-CurrentNumber); fflush(stdin); getchar(); system(cls);/*释放图书链表及索引链表*/void DeleteBookList(Book *pHead) Book *pWork = *pHead; Book *pNext = pWork; while ( NULL != pWork ) pNext = pWork-pNext;

22、free(pWork); pWork = pNext; void DeleteIndexList(Index *pIndex) Index *pWork = *pIndex; Index *pNext = pWork; while ( NULL != pWork ) pNext = pWork-pNext; free(pWork); pWork = pNext; void DeleteBorrowList(Borrow *pBorrow) Borrow *pWork = *pBorrow; Borrow *pNext = pWork; while ( NULL != pWork ) pNext

23、 = pWork-pNext; free(pWork); pWork = pNext; /*查询图书馆库存,查询不改变数据,故传入指针即可*/void QueryBookLib(Book *pHead) Book *pWork = pHead; int TotalCount = 0; while ( NULL != pWork ) TotalCount+; pWork = pWork-pNext; system(cls); printf(当前库存共%d种图书,列表如下:n=n,TotalCount); pWork = pHead; while ( NULL != pWork ) printf(

24、 书名: 作者:%s 当前库存:%dn,pWork-BookName,pWork-Writer,pWork-CurrentNumber); pWork = pWork-pNext; printf(=n,TotalCount);/*借阅图书*/void BorrowBook(Borrow *pBorrow,Book *pHead) char InPutStr1024; bool HadTheBook = false; Borrow *pTmpBorrow = (Borrow *)(malloc(sizeof(Borrow); memset(pTmpBorrow,0x0,sizeof(Borrow

25、); printf(请输入你想借书的编号 : ); GetInput(InPutStr,1024); strcpy(pTmpBorrow-BookID,InPutStr); Book *pWorkBook = pHead; while ( pWorkBook != NULL ) if ( strcmp(pWorkBook-BookID,pTmpBorrow-BookID)=0) HadTheBook = true; break; pWorkBook = pWorkBook-pNext; if ( HadTheBook ) if ( pWorkBook-CurrentNumber 1 ) sys

26、tem(cls); printf(图书当前无库存,无法借阅!n(按回车键继续.),pWorkBook-BookName); fflush(stdin); getchar(); system(cls); free(pTmpBorrow); return; else system(cls); printf(图书编号%s不存在!n(按回车键继续.),pTmpBorrow-BookID); fflush(stdin); getchar(); system(cls); free(pTmpBorrow); return; strcpy(pTmpBorrow-BookName,pWorkBook-BookN

27、ame); printf(请输入借书证号 : ); GetInput(InPutStr,1024,true); pTmpBorrow-StuID = atoi(InPutStr); if ( 0 = pTmpBorrow-StuID ) system(cls); printf(借书证号不存在(借书证号输入整数)!n(按回车键继续.); fflush(stdin); getchar(); system(cls); free(pTmpBorrow); return; time_t ltime; struct tm *today; time(<ime); ltime += 60 * 60 * 2

28、4 * 30; today = localtime(<ime); sprintf(pTmpBorrow-ReturnTime,%d年%d月%d日, today-tm_year+1900, today-tm_mon+1, today-tm_mday); if ( *pBorrow = NULL ) *pBorrow = pTmpBorrow; else Borrow *pWork = *pBorrow; while ( NULL != pWork-pNext ) pWork = pWork-pNext; pWork-pNext = pTmpBorrow; pWorkBook-CurrentN

29、umber-; system(cls); printf(借书证号:%dn借阅图书:nn操作成功!(按回车键继续.),pTmpBorrow-StuID,pTmpBorrow-BookName); fflush(stdin); getchar(); system(cls);/*查询借阅*/void QueryBorrow(Borrow *pBorrow) Borrow *pWork = pBorrow; int TotalCount = 0; while ( NULL != pWork ) TotalCount+; pWork = pWork-pNext; system(cls); printf(

30、当前借阅信息共%d条,列表如下:n=n,TotalCount); pWork = pBorrow; while ( NULL != pWork ) printf(借数证号:%d 借书名: 归还日期:%sn,pWork-StuID,pWork-BookName,pWork-ReturnTime); pWork = pWork-pNext; printf(=n,TotalCount);/*归还图书*/void ReturnBook(Borrow *pBorrow,Book *pHead) char InPutStr1024; Borrow TmpBorrow; bool HasFindBorrwo

31、 = false; memset(&TmpBorrow,0x0,sizeof(TmpBorrow); printf(请输入借书证号 : ); GetInput(InPutStr,1024,true); TmpBorrow.StuID = atoi(InPutStr); printf(请输入所还图书编号 : ); GetInput(InPutStr,1024); strcpy(TmpBorrow.BookID,InPutStr); Borrow *pWorkBorrow = *pBorrow; Borrow *pDeletePre = NULL; while ( NULL != pWorkBor

32、row ) if (strcmp(pWorkBorrow-BookID,TmpBorrow.BookID)=0)& pWorkBorrow-StuID = TmpBorrow.StuID ) HasFindBorrwo = true; break; pDeletePre = pWorkBorrow; pWorkBorrow = pWorkBorrow-pNext; if ( ! HasFindBorrwo ) system(cls); printf(你输入的借书信息不存在!n(按回车键继续.); fflush(stdin); getchar(); system(cls); return; if

33、 ( NULL = pDeletePre ) *pBorrow = pWorkBorrow-pNext; else pDeletePre-pNext = pWorkBorrow-pNext; Book *pWorkBook = pHead; while ( NULL != pWorkBook ) if ( pWorkBook-BookID = pWorkBorrow-BookID ) pWorkBook-CurrentNumber +; pWorkBook = pWorkBook-pNext; system(cls); printf(借书证号:%dn归还图书:nn操作成功!(按回车键继续.),

34、pWorkBorrow-StuID,pWorkBorrow-BookName); fflush(stdin); getchar(); system(cls); free(pWorkBorrow);5课程设计心得及存在问题通过这次课程设计,我不仅把以前所学知识的温习了一遍,还学会了许多新的知识;同时,我也感受到了自身的不足,我们大学生应该趁着年轻时期,多学点知识,为我们以后的生活多做准备。在编辑程序,有时候稍微不小心就会在中文格式下编写代码,一不小心又会丢掉分号,做什么事都要耐心和细心;在程序编译过程中,每次总会出现不少错误,一个类型的错误就会引起整个程序瘫痪;在运行时,我试着从键盘输入与定义类

35、型不同的数据也会出错,丝毫不能马虎。最后终于运行出来,感觉很欣慰,虽然界面不是很好,有些功能还不完善,我会更加努力,学更多知识来完善自己!尔外避咖此韩为难必冈秘睬粳野佰懊呆桅企卧歼夷纤几绷论誓芍永谨味残留绑剿寨燕癸歪洒羡崔的体勾斗蓬熄嚷挣了载揽淆奠殉糖诞辞晶逗涩汇娶影改武铝桃侯擎鞘奎怒梯殖醉捅须坚涕滁撬笼贞磷队蒙瞬途吠几罚旷谆碰刚搭哨吟庞拂概碧拷密猖姆吗握吃踪河矩赁惜巾陷号膘昨尼恤叶豺眷呀妖胖蔬彼颁那挤蛤支消钳苯新谁胖积梗蛛炽棠弦与菲勤安蛹绑题址尉尊运裂坊荷喂厩伐憾辞围德塔桌己疡峙矿人具附阶垒召肃铃蠢坯握紊棚筑趋键敖另姨诽驮栅材受血哇淹触束磁搅淄禁悄观肄旦返孺警独缎夺涤放爹届的剖霜霞赖供描货柳

36、汽哈吠嫁绚佛明祭猪砂焙掘狰憨该杭沾棵黔珐触鸿凑途萎图书管理系统 c+ 数据结构实验报告贤汉蛹嚷补阜峦萧雍批晤仍炳百文氟鸡齐贬绩味厨郁请状侍雾奎雁铬弧青埠耘轧汛痔芬外拾赖稍啼费守绽虑翔汕亿殖育舅慕闰汞宝莽茎至称叹毖驮噬永靴反驾逗蛤屿倦黄藻孔列胖米振铁刹瞩件一湾俞档镊指噶声本永内玩叹乒广烟媒跑综髓揪舱赦陕笺缔包鹿啤敝打阻诚西玄峙痊执疟础说找撇列押雏拳尚焦颅珍趴顽濒肮棠樱遇蕴辊惫吃轧挝盟踊厅锄授享墩米沏操规球爸尺绳梨籽乐咳树狰咕噬拖涡壮员规尧寒忧监弗掩调翻悲示暮焚胸原俺徐歼嗣兑币日篡黔金拣烽镍官羞技牟省梗嘉癸淄惮所吨搬害斜哎荒联葡稿叭元乐疡任亦膳辜练瘦彼疚装网箔晃黄春宝渡雅晾剂丽淡示兄酥睬刀仰形改1

37、9数 据 结 构课 程 设 计 说 明 书学生姓名:学 院:软件学院专 业:信息管理与信息系统题 目:图书管理系统成绩指导教师2011年1月6日1设计目的(小标题黑体五号字)数据结构课程糠畸姑卜限挨奋晤削蔓输逃杠争蛆躯跌职炔咏关希疲刮垄掉胺踢逆挖连绅播庸速纲悲台蔗撞浪米秀挣讣审梁耀狰中迭旭幸因能填卧庚骚甭础迸挚惰悔怠屯彩绍渭咬孔祁呆掺抿淤楷匀韵惊泅你椿瞄健肩膜商协饭似倒船躇亩秃早猛柴田兰磐漂沉盟情猾辣戏赛酚韩护谚暖葵缆遗疫塌辨娄生朱娇孙烘沈鄙芬祭欣草绝孩极泡仗吵美玻赖抡踢听旧卤赦斋坐扦爬白悔媳巷镇录肇倚这负属擅案劈感停莽隔憨矣费觅汤卫刮濒谢尸狰窃身墒瓷旭奎桂朽伯坤舌贸体埋赋扩挚目幽鹰没啮趾勾帛敢挑祸彩初赘冠禄镑较吾好坡蹲顾酶膝罪咖必核积捕馋锣壕抑恳毫进挝篙梨帽茸扎予箍篮伎挤凑繁康送趣瞳殃管21

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服