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

下载本文档

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

文档简介

精品实用文档.精品黑龙江东方学院题目:教材管理系统设计学生姓名张珂学号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章系统使用与测试 64.1系统使用说明 64.2系统运行结果 6第5章结论 115.1系统主要知识点 115.2系统难点与解决方法 115.3编程总结 115.4系统分工 115.5自评成绩 12精品实用文档.精品第1章绪论设计目的设计目的本程序是为了课程设计准备。在熟悉C语言和数据构造的根底下,完成了教材管理系统。本程序中涉及了构造体,和C语言文件等方面的知识。通过本程序的训练,可以进一步了解C语言在文件操作有更深刻的了解,掌握单链表存储实现对教材管理的原理,为进一步学习和进步打下根底。设计的不同之处在这次的程序设计中,我研究了图书馆的一些根本情况,例如,教材的作者,出版社,现存量等的输入,输出,同时我还在设计中进展了插入,修改等操作等,让学习到的知识更加运用到实践中。1.2内容与要求教材的各种信息,然后确定教材管理系统要实现的功能,并对这些功能能否实现进展详细的分析教材的系统进展信息采集和分析。对教材信息包括教材名、教材编号、所用册数、所用班级等各项信息进展详细分析。教材管理系统的各个模块进展划分,确定各个模块所要实现的功能。教材管理系统模块进展描述,确定各个模块之间的关系。5.使用函数调用方式完成各模块调用,采用文件读取的方式完成数组存储。程序在系统中以菜单方式工作,总体分为4个模块。在设计中,运用了单链表。在单链表中进展了各种操作,包括,删除,查找,修改。将所输入的信息和记录保存到与此程序同目录下的library文件夹下。精品实用文档.精品第2章系统总体设计系统设计的组成框图。信息增加。教材教材信息的录入添加教材信息的查询模块教材信息的排序模块教材信息的修改模块教材信息的删除模块教材的借阅模块教材的归还模块退出教材管理系统教材管理系统主程序模块显示信息模块显示信息模块功能描述利用图书信息主函数分别调用添加图书信息子函数、删除图书信息子函数、查找图书信息子函数、显示所有图书子函数2.3开发环境介绍在熟悉C语言和数据构造的根底下,完成了教材管理系统。本程序中涉及了构造体,和C语言文件等方面的知识。通过本程序的训练,可以进一步了解C语言在文件操作有更深刻的了解,掌握单链表存储实现对图书信息管理的原理,为进一步学习和进步打下根底。设计的不同之处在这次的程序设计中,我研究了图书的一些根本情况,例如,教材名、教材编号、所用册数、所用班级精品实用文档.精品等的输入,输出,同时我还在设计中进展了插入,修改等操作等,让学习到的知识更加运用到实践中。第3章系统详细设计程序设计流程图是是开场为读写的方式翻开一个数据文件将文件的内容读入,并存入新的单链表但用目录菜单这个函数进入while〔l〕主循环程序输入0到6中的一个选择相应的操作输入是否为0判读输入的是什么,调用相应的函数,完成相应功能是否已经存盘调用函数,进展文件写数据完毕是否否主程序流程图如下精品实用文档.精品功能模块设计所用数据构造:线性表、查找、排序链表:用一组地址任意的存储单元存放线性表中的数据元素。以元素(数据元素的映象)+指针(指示后继元素存储位置)=结点(表示数据元素或数据元素的映象)以“结点的序列〞表示线性表称作线性链表〔单链表〕单链表是一种链式存取的构造,为找第i个数据元素必须先找到第i-1个数据元素。因此,查找第i个数据元素的根本操作为:移动指针,比较j和i。(1)malloc(size)在内存的动态存储区申请一个长度为size字节的连续空间。(2)calloc(n,size)在内存的动态存储区申请n个长度为size字节的连续空间,函数返回值为分配空间的首地址。假设此函数未被成功执行,函数返回值为0。(3)free(p)释放由指针p所指向的存储单元,而存储单元的大小是最近一次调用malloc()或calloc()函数时所申请的存储空间。运用了单链表的插入、删除、排序、修改等一些操作!主要算法描述在这个程序中,我运用了构造体,c语言文件读写,删除,查询和修改函数。在这个程序中,我使用了while循环,if…else…和选择语句swicth。我借鉴了一些书上的函数,用来完成某个功能模块的实现。在这个教材管理系统,只有一些相对简单的数据构造的知识。只是在c语言的文件上,有一些问题,对这个文件的读写上我还有很多的缺乏。主函数的执行步骤是有很多的缺陷,需要在以后的中逐步的改善一下。精品实用文档.精品第4章系统使用与测试使用说明本教材管理系统执行的过程是它首先以读写的方式翻开数据文件,文件默认为在C盘下的people,假设该文件不存在,那么需要重新输入文件。当进入教材管理系统的目录中,按键操作,从键盘中输入0到6之间任何按键的数值,进展操作,就可检测所有的程序了。4.2系统运行结果主菜单显示运行结果精品实用文档.精品精品实用文档.精品精品实用文档.精品第5章结论5.1系统中主要的知识点本程序中涉及了构造体,和C语言文件等方面的知识。5.2系统难点以及解决方法在整个的测试中,开场是遇到了很多的错误,起初是一些表达式,语法的错误。我进展了修改工作。这些工作是简单修改。但是在后来操作中又出现了{}没对齐的错误。我还经常出现字符数组的问题。最后在教师提醒下改正了。5.3编程总结在这个程序中,我运用了构造体,c语言文件读写,删除,查询和修改函数。在这个程序中,我使用了while循环,if…else…和选择语句swicth。我借鉴了一些书上的函数,用来完成某个功能模块的实现。在这个教材管理系统,只有一些相对简单的数据构造的知识。只是在c语言的文件上,有一些问题,对这个文件的读写上我还有很多的缺乏。主函数的执行步骤是有很多的缺陷,需要在以后的中逐步的改善一下。系统的分工图书管理系统管理信息录入模块、信息浏览模块、更新记录模块、信息查询模块。信息录入模块又分为从文件中提取和从键盘中读入两个局部。信息浏览模块分为输出至屏幕和输出至文件。更新记录模块分为删除记录修改记录。信息查询模块分为按图书号查询和按学历查询。5.5自评成绩通过本程序的训练,可以进一步了解C语言在文件操作有更深刻的了解,掌握单链表存储实现对图书信息管理的原理,为进一步学习和进步打下根底。设计的不同之处在这次的程序设计中,我研究了图书的一些根本情况,例如,图书学历,工资,住址等的输入,输出,同时我还在设计中进展了插入,修改等操作等,让学习到的知识更加运用到实践中。在这个教材管理系统,只有一些相对简单的数据构造的知识。只是在c语言的文件上,有一些问题,对这个文件的读写上我还有很多的缺乏。主函数的执行步骤是有很多的缺陷,需要在以后的中逐步的改善一下。附录根本思想:图书信息录入、图书信息的查询、图书信息的排序、图书信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统。精品实用文档.精品程序中的主要函数有:voidmain()//主函数intCreateListR(LinkList*L)//尾插法建表voidLocateElem(LinkList*L)//查询intSort(LinkList*L)//递增有序排序(直接插入排序法)voidDisplay(LinkList*L)//输出排序结果ModifyList(LinkList*L)//修改intListDelete(LinkList*L)//删除voidBorrow(LinkList*L)//借阅voidReturn(LinkList*L)//归还/*程序源代码*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>typedefstruct{ intnum; charname[20]; charauthor[20]; charpress[20]; intcount; charprice[10];}ElemType;typedefstructLNode //定义单链表结点类型{ ElemTypedata; structLNode*next;精品实用文档.精品}LinkList;voidInitList(LinkList*L)//初始化线性表{ L->next=NULL;}intCreateListR(LinkList*L)//尾插法建表{ inti,n; LinkList*s,*q,*p; p=L; while(p->next!=NULL) { p=p->next; } printf("请输入需要录入的图书信息的个数:n="); scanf("%d",&n); for(i=1;i<n+1;i++){ s=(LinkList*)malloc(sizeof(LinkList)); printf("书号书名作者出版社名称存馆数量定价\n"); scanf("%d%s%s%s%d%s",&s->data.num,s->,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(s->,q->)==0){ printf("此图书已存在!"); printf("请重新输入:\n"); scanf("%d%s%s%s%d%s",&p->data.num,p->, 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"); } return0;}精品实用文档.精品voidLocateElem(LinkList*L)//查询{ LinkList*p=L->next;//p指向第一个数据结点 intc; intx=0; charname1[10],author1[10],press1[10]; printf("1按书名查询:\n"); printf("2按作者名查询:\n"); printf("3按出版社名称:\n"); printf("4返回\n"); printf("请选择1--4进展操作:\n"); scanf("%d",&c); if(c>4||c<1){ printf("您的输入有误!\n"); scanf("%d",&c); } switch(c){ case1: printf("请输入图书书名:\n"); scanf("%s",name1); while(p!=NULL){ if(strcmp(name1,p->)!=0)//查找图书书名 p=p->next; else{ printf("书号书名作者出版社名称存馆数量定价\n");精品实用文档.精品 printf("%d\t%s\t%s\t%s\t%d\t%s",p->data.num,p->, 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; case2: printf("请输入图书作者:\n"); scanf("%s",author1); while(p!=NULL){ if(strcmp(author1,p->data.author)!=0)//查找图书作者 p=p->next; else{ printf("书号书名作者出版社名称存馆数量定价\n"); printf("%d\t%s\t%s\t%s\t%d\t%s",p->data.num,p->, 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; case3: 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->,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; case4:精品实用文档.精品 break; }}intSort(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<p->data.num) q=q->next;//在有序表中找插入*p的直接前驱结点*q的位置 p->next=q->next;//将*p插入到*q之后 q->next=p; p=r;//扫描原单链表余下的结点 } }精品实用文档.精品 return0;}voidDisplay(LinkList*L)//输出排序结果{ LinkList*p=L->next; while(p!=NULL){ printf("书号书名作者出版社名称存馆数量定价\n"); printf("%d\t%s\t%s\t%s\t%d\t%s",p->data.num, p->,p->data.author,p->data.press,p->data.count, p->data.price); printf("\n"); p=p->next; }}intModifyList(LinkList*L)//修改{ LinkList*p=L; charname1[10]; printf("请输入要修改的图书的书名:\n"); scanf("%s",name1); while(p!=NULL){ if(strcmp(name1,p->)==0)//查找所要修改的书名 { printf("请输入修改后的信息!\n"); printf("书号书名作者出版社名称存馆数量定价\n");精品实用文档.精品 scanf("%d%s%s%s%d%s",&p->data.num,p->,p->data.author, p->data.press,&p->data.count,p->data.price); printf("修改成功!\n"); return0; } p=p->next; } printf("不存在此图书\n"); return0;}intListDelete(LinkList*L)//删除{ LinkList*p=L->next,*q=L; charname1[10]; if(p!=NULL){ printf("请输入要删除的书名:"); scanf("%s",name1); } while(p->next!=NULL&&strcmp(p->,name1)!=0){ p=p->next; q=q->next; } if(p->next!=NULL)//如果p此时不是最后一个节点,说明此时已经找到书 {精品实用文档.精品 q->next=p->next; printf("删除成功!\n"); return0; } if(p->next==NULL&&strcmp(name1,p->)!=0)//如果p此时为最后一个结点并且没有找到与之相符的书名 { printf("你输入的书名不存在,请核实后重新输入!\n"); }else{ q->next=NULL; printf("删除成功!\n"); } return0;}voidBorrow(LinkList*L)//借阅{ LinkList*p=L->next; charname1[10]; printf("请输入要借阅的图书的书名:\n"); scanf("%s",name1); while(p->next!=NULL&&strcmp(name1,p->)!=0) p=p->next; if(p->next==NULL&&strcmp(name1,p->)!=0) printf("此图书不存在!\n"); elseif(p->data.count<1) printf("此书已借完!\n"); elseif(strcmp(name1,p->)==0){ printf("借书成功!\n");精品实用文档.精品 p->data.count--; }}voidReturn(LinkList*L)//归还{ Lin

温馨提示

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

评论

0/150

提交评论