图书信息管理系统.doc_第1页
图书信息管理系统.doc_第2页
图书信息管理系统.doc_第3页
图书信息管理系统.doc_第4页
图书信息管理系统.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

黑龙江东方学院题目:教材管理系统设计学生姓名 张珂 学 号 15101133 专 业 软件工程 班 级 软件一班 学 部 计算机科学与电气工程学部 目录第1章 绪论11.1 设计目的11.2 内容与要求1第2章 系统总体设计22.1系统框图22.2 系统功能描述22.3 开发环境介绍2第3章 系统详细设计33.1系统流程图33.2各个模块功能描述33.3 主要算法描述43.4后台数据库设计4第4章 系统使用与测试6 4.1 系统使用说明64.2 系统运行结果6第5章 结论115.1系统主要知识点115.2系统难点与解决办法115.3编程总结115.4系统分工115.5自评成绩12黑龙江东方学院课程设计报告 第1章 绪论1.1 设计目的设计目的本程序是为了课程设计准备。在熟悉C语言和数据结构的基础下,完成了教材管理系统。本程序中涉及了结构体,和C语言文件等方面的知识。通过本程序的训练,可以进一步了解C语言在文件操作有更深刻的了解,掌握单链表存储实现对教材管理的原理,为进一步学习和进步打下基础。设计的不同之处 在这次的程序设计中,我研究了图书馆的一些基本情况,例如,教材的作者,出版社,现存量等的输入,输出,同时我还在设计中进行了插入,修改等操作等,让学习到的知识更加运用到实践中。1.2 内容与要求1.了解教材的各种信息,然后确定教材管理系统要实现的功能,并对这些功能能否实现进行详细的分析2.对要完成的教材的系统进行信息采集和分析。对教材信息包括教材名、教材编号、所用册数、所用班级等各项信息进行详细分析。3.对教材管理系统的各个模块进行划分,确定各个模块所要实现的功能。4.对教材管理系统模块进行描述,确定各个模块之间的关系。5.使用函数调用方式完成各模块调用,采用文件读取的方式完成数组存储。程序在系统中以菜单方式工作,总体分为4个模块。在设计中,运用了单链表。在单链表中进行了各种操作,包括,删除,查找,修改。将所输入的信息和记录保存到与此程序同目录下的library文件夹下。第2章 系统总体设计2.1系统设计的组成框图。信息增加。教材信息的录入添加教材信息的查询模块教材信息的排序模块教材信息的修改模块教材信息的删除模块教材的借阅模块教材的归还模块退出教材管理系统教材 管 理 系 统主 程 序 模 块显示信息模块2.2 功能描述利用图书信息主函数分别调用添加图书信息子函数、删除图书信息子函数、查找图书信息子函数、显示所有图书子函数2.3 开发环境介绍在熟悉C语言和数据结构的基础下,完成了教材管理系统。本程序中涉及了结构体,和C语言文件等方面的知识。通过本程序的训练,可以进一步了解C语言在文件操作有更深刻的了解,掌握单链表存储实现对图书信息管理的原理,为进一步学习和进步打下基础。设计的不同之处 在这次的程序设计中,我研究了图书的一些基本情况,例如,教材名、教材编号、所用册数、所用班级等的输入,输出,同时我还在设计中进行了插入,修改等操作等,让学习到的知识更加运用到实践中。第3章 系统详细设计3.1程序设计流程图是开始为读写的方式打开一个数据文件将文件的内容读入,并存入新的单链表但用目录菜单这个函数进入while(l)主循环程序输入0到6中的一个选择相应的操作输入是否为0判读输入的是什么,调用相应的函数,完成相应功能是否已经存盘调用函数,进行文件写数据结束是否否主程序流程图如下3黑龙江东方学院课程设计报告3.2功能模块设计所用数据结构:线性表、查找、排序链表:用一组地址任意的存储单元存放线性表中的数据元素。以元素(数据元素的映象) + 指针(指示后继元素存储位置)= 结点(表示数据元素 或 数据元素的映象)以“结点的序列”表示线性表称作线性链表(单链表)单链表是一种链式存取的结构,为找第 i 个数据元素必须先找到第 i-1 个数据元素。因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i。(1)malloc(size)在内存的动态存储区申请一个长度为size字节的连续空间。(2)calloc(n,size)在内存的动态存储区申请n个长度为size字节的连续空间,函数返回值为分配空间的首地址。若此函数未被成功执行,函数返回值为0。(3)free(p)释放由指针p所指向的存储单元,而存储单元的大小是最近一次调用malloc()或calloc()函数时所申请的存储空间。运用了单链表的插入、删除、排序、修改等一些操作!3.3主要算法描述在这个程序中,我运用了结构体,c语言文件读写,删除,查询和修改函数。在这个程序中,我使用了while循环,ifelse和选择语句swicth。我借鉴了一些书上的函数,用来完成某个功能模块的实现。在这个教材管理系统,只有一些相对简单的数据结构的知识。只是在c语言的文件上,有一些问题,对这个文件的读写上我还有很多的不足。主函数的执行步骤是有很多的缺陷,需要在以后的中逐步的改善一下。第4章 系统使用与测试4.1使用说明本教材管理系统执行的过程是它首先以读写的方式打开数据文件,文件默认为在C盘下的people,若该文件不存在,则需要重新输入文件。当进入教材管理系统的目录中,按键操作,从键盘中输入0到6之间任何按键的数值,进行操作,就可检测所有的程序了。4.2 系统运行结果主菜单显示运行结果第5章 结论5.1系统中主要的知识点本程序中涉及了结构体,和C语言文件等方面的知识。5.2系统难点以及解决办法在整个的测试中,开始是遇到了很多的错误,起初是一些表达式,语法的错误。我进行了修改工作。这些工作是简单修改。但是在后来操作中又出现了没对齐的错误。我还经常出现字符数组的问题。最后在老师提醒下改正了。5.3 编程总结在这个程序中,我运用了结构体,c语言文件读写,删除,查询和修改函数。在这个程序中,我使用了while循环,ifelse和选择语句swicth。我借鉴了一些书上的函数,用来完成某个功能模块的实现。在这个教材管理系统,只有一些相对简单的数据结构的知识。只是在c语言的文件上,有一些问题,对这个文件的读写上我还有很多的不足。主函数的执行步骤是有很多的缺陷,需要在以后的中逐步的改善一下。5.4系统的分工图书管理系统管理信息录入模块、信息浏览模块、更新记录模块、信息查询模块。信息录入模块又分为从文件中提取和从键盘中读入两个部分。信息浏览模块分为输出至屏幕和输出至文件。更新记录模块分为删除记录修改记录。信息查询模块分为按图书号查询和按学历查询。5.5自评成绩通过本程序的训练,可以进一步了解C语言在文件操作有更深刻的了解,掌握单链表存储实现对图书信息管理的原理,为进一步学习和进步打下基础。设计的不同之处 在这次的程序设计中,我研究了图书的一些基本情况,例如,图书学历,工资,住址等的输入,输出,同时我还在设计中进行了插入,修改等操作等,让学习到的知识更加运用到实践中。 在这个教材管理系统,只有一些相对简单的数据结构的知识。只是在c语言的文件上,有一些问题,对这个文件的读写上我还有很多的不足。主函数的执行步骤是有很多的缺陷,需要在以后的中逐步的改善一下。附 录(1) 基本思想:(2) 图书信息录入、图书信息的查询、图书信息的排序、图书信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统。(3) 程序中的主要函数有:void main() /主函数int CreateListR(LinkList *L) /尾插法建表void LocateElem(LinkList *L) /查询 int Sort(LinkList *L) /递增有序排序(直接插入排序法)void Display(LinkList *L) /输出排序结果ModifyList(LinkList *L) /修改int ListDelete(LinkList *L) /删除 void Borrow(LinkList *L) /借阅void Return(LinkList *L) /归还/*程序源代码*/#include #include #include#includetypedef struct int num;char name20;char author20;char press20;int count;char price10; ElemType;typedef struct LNode/定义单链表结点类型ElemType data;struct LNode *next; LinkList;void InitList(LinkList *L) /初始化线性表L-next = NULL;int CreateListR(LinkList *L) /尾插法建表int i, n;LinkList *s, *q, *p;p = L;while (p-next != NULL )p = p-next;printf(请输入需要录入的图书信息的个数:n=);scanf(%d, &n);for (i = 1; i data.num, , s-data.author,s-data.press, &s-data.count, s-data.price);q = L-next;if (q = NULL ) p-next = s;p = s;p-next = NULL;printf(录入成功!n);continue;while (q != NULL ) if (strcmp(, ) = 0) printf(此图书已存在!);printf(请重新输入:n);scanf(%d%s%s%s%d%s, &p-data.num, ,p-data.author, p-data.press, &p-data.count,p-data.price);q = q-next;p-next = s;p = s;p-next = NULL;printf(录入成功!n);return 0;void LocateElem(LinkList *L) /查询LinkList *p = L-next; /p指向第一个数据结点int c;int x = 0;char name110, author110, press110;printf( 1 按书名查询:n);printf( 2 按作者名查询:n);printf( 3 按出版社名称:n);printf( 4 返回n);printf( 请选择1-4进行操作:n);scanf(%d, &c);if (c 4 | c ) != 0) /查找图书书名p = p-next;else printf(书号 书名 作者 出版社名称 存馆数量 定价n);printf(%dt%st%st%st%dt%s, p-data.num, ,p-data.author, p-data.press, p-data.count,p-data.price);printf(n);p = p-next;x+;if (p = NULL & x = 0)printf(对不起,不存在此图书!n);break;case 2:printf(请输入图书作者:n);scanf(%s, author1);while (p != NULL ) if (strcmp(author1, p-data.author) != 0) /查找图书作者p = p-next;else printf(书号 书名 作者 出版社名称 存馆数量 定价n);printf(%dt%st%st%st%dt%s, p-data.num, ,p-data.author, p-data.press, p-data.count,p-data.price);printf(n);p = p-next;x+;if (p = NULL & x = 0)printf(对不起,不存在此图书!n);break;case 3:printf(请输入图书的出版社名称: n);scanf(%s, press1);while (p != NULL ) if (strcmp(press1, p-data.press) != 0) /查找图书出版社名称p = p-next;else printf(书号 书名 作者 出版社名称 存馆数量 定价n);printf(%d %s %s %s %d %s,p-data.num, , p-data.author,p-data.press, p-data.count, p-data.price);printf(n);p = p-next;x+;if (p = NULL & x = 0)printf(对不起!不存在此图书n);break;case 4:break;int Sort(LinkList *L) /递增有序排序(直接插入排序法)LinkList *p = L-next, *q, *r; /p指向第一个数据结点if (p != NULL ) /若原单链表中有一个或以上的数据结点r = p-next; /r保存*p结点直接后继结点的指针p-next = NULL; /构造只含一个数据结点的有序表p = r;while (p != NULL ) r = p-next; /r保存*p结点的直接后继结点的指针q = L;while (q-next != NULL & q-next-data.num data.num)q = q-next; /在有序表中找插入*p的直接前驱结点*q的位置p-next = q-next; /将*p插入到*q之后q-next = p;p = r; /扫描原单链表余下的结点return 0;void Display(LinkList *L) /输出排序结果LinkList *p = L-next;while (p != NULL ) printf(书号 书名 作者 出版社名称 存馆数量 定价n);printf(%d t %s t %st %st%dt %s, p-data.num,, p-data.author, p-data.press, p-data.count,p-data.price);printf(n);p = p-next;int ModifyList(LinkList *L) /修改LinkList *p = L;char name110;printf(请输入要修改的图书的书名:n);scanf(%s, name1);while (p != NULL ) if (strcmp(name1, ) = 0) /查找所要修改的书名printf(请输入修改后的信息!n);printf(书号 书名 作者 出版社名称 存馆数量 定价n);scanf(%d%s%s%s%d%s, &p-data.num, , p-data.author,p-data.press, &p-data.count, p-data.price);printf(修改成功!n);return 0;p = p-next;printf(不存在此图书n);return 0;int ListDelete(LinkList *L) /删除LinkList *p = L-next, *q = L;char name110;if (p != NULL ) printf(请输入要删除的书名:);scanf(%s, name1);while (p-next != NULL & strcmp(, name1) != 0) p = p-next;q = q-next;if (p-next != NULL ) /如果p此时不是最后一个节点,说明此时已经找到书q-next = p-next;printf(删除成功!n);return 0;if (p-next = NULL & strcmp(name1, ) != 0) /如果p此时为最后一个结点并且没有找到与之相符的书名printf(你输入的书名不存在,请核实后重新输入!n); else q-next = NULL;printf(删除成功!n);return 0;void Borrow(LinkList *L) /借阅LinkList *p = L-next;char name110;printf(请输入要借阅的图书的书名:n);scanf(%s, name1);while (p-next != NULL & strcmp(name1, ) != 0)p = p-next;if (p-next = NULL & strcmp(name1, ) != 0)printf(此图书不存在!n);else if (p-data.count ) = 0) printf(借书成功!n);p-data.count-;void Return(LinkList *L) /归还LinkList *p = L-next;char name110;printf(输入归还书的书名: n);scanf(%s, name1);while (p-next != NULL & strcmp(name1, p-data

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论