C语言《图书借阅管理系统》课程设计报告_第1页
C语言《图书借阅管理系统》课程设计报告_第2页
C语言《图书借阅管理系统》课程设计报告_第3页
C语言《图书借阅管理系统》课程设计报告_第4页
C语言《图书借阅管理系统》课程设计报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课程名称C 语言程序设计课题名称图书借阅管理系统专业机械设计班级15 机械二班学号2015030220姓名指导教师2016年 6 月 14日西安理工大学高科学院课程设计任务书课程名称课题C 语言程序设计图书借阅管理系统专业班级网络工程 1002 班学生姓名学号201003120224指导老师唐北平、陈淑红、谭小兰审批任务书下达日期 2011 年 6 月 20 日任务完成日期 2011 年 7 月 03 日2一、设计内容与设计要求1设计内容: 对一个有 N 本图书的图书馆,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。(1)、本系统采用一个包含 N

2、个数据的结构体数组,每个数据的结构应当包括:书号、书名、作者、出版社、出版日期、单价、是否借出等。(2)、本系统显示这样的菜单:a. 图书基本信息录入b. 图书基本信息显示c. 图书基本信息删除d. 图书基本信息修改e. 图书基本信息查询(按书号查询、书名等)g.退出系统(3)、执行一个具体的功能之后,程序将重新显示菜单。2设计要求: 掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。1. 设计正确,方案合理。2. 界面友好,使用方便。3. 程序精炼,结构清晰。4. 设计报告 5000 字以上,含程序设计说明,用户使用说

3、明,源程序清单及程序框图。5. 上机演示。6. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的C 源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;7. 按本任务书的要求, 按附录的要求编写 课程设计报告(Word 文档格式)。并用 A4 的复印纸打印并装订;二、进度安排第十八 周星期 1 8时 00分11时 30分星期 2 14时00分18时 15分星期 3 8时 00分11时 30分星期 4 8时 00分11时 30分3第十九 周星期 1 8时 00分11时 30分星期 2 14时00分18时 15分4三、课程设计报告1. 程序设计准备做系统前,首先,自己详细看了C 程

4、序设计(教科书),基本自学会了文件的相关内容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统, 都详细的看了一遍, 加深了对 C 的理解以及对文件的相关内容进一步理解。 学习了 C 语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、文件、函数、结构体变量等基本知识的进一步理解。 另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。2. 程序设计说明根据题目要求, 应当把图书信息用结构体形式输入, 再定义一个全局变量和文件指针进行整个程序的运行, 然后把图书信息送到文件中去, 所以应该提供下个结构体和

5、文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作, 所以需要建立相应的模块来实现: 另外还需提供选择菜单实现功能,在运行时达到所要求的目的。3. 程序的主要功能图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管理。图书借阅管理系统是对图书信息的基本管理,它包括:图书信息的录入、图书信息的显示、图书信息的删除、图书信息的修改、图书信息的查询。通过编译一个 C 语言函数,其中包含一个主函数, 多个子函数, 主函数调用其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能。1、图书基本信息录入:对新到图书馆的图书的信息(编号、书名、出版社

6、、作者、价格)进行录入。2、图书基本信息显示:显示已被录入图书的所有信息。3、图书基本信息删除:通过输入书名,判断此图书是否存在,若存在,则删除该图书所有信息,若不存在则提示用户重新输入图书书名。4、图书基本信息修改:通过输入书名,判断此图书是否存在,若不存在则提示用户重新输入图书书名,若存在,则可对图书各项信息进行修改。5、图书基本信息查询:将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。56、退出系统:即退出图书借阅管理系统。使用模块化编程的方法每项功能有一个或多个函数组合来完成,其中菜单选项模块对应如下:图书基本信息录入 => void insert()图书基本信息

7、显示 => void print()图书基本信息删除 => void del()图书基本信息修改 => void modify()图书基本信息查询 => void find()这份代码中各个变量的定义如下:num图书编号name书名author作者pub出版社where出版日期count单价四 . 功能模块的划分1. 主函数模块根据图书馆信息管理系统的要求, 可设计一个主函数, 及定义多个用户自定义函数。在主函数中定义全局变量, 即是在函数外部定义的变量, 其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用。62. 图书基本信息显示模块当用户选择图书基

8、本信息显示时,程序会将所有图书信息列出。3.图书基本信息输入模块在程序开始运行, 创建文件库时, 调动此模块, 提示用户输入新的图书编号(编号为 0 时结束输入),然后继续输入图书书名,作者,出版社,出版日期,单价等信息。结束输入时提示用户图书输入完成4.图书基本信息查询模块用户先选择图书查询方式 (按书名查找或按书号查找) 输入图书书名或书号后,查找出该图书是否存在,若存在,则显示该图书信息,若不存在则提示用户无此图书信息。75.图书基本信息删除模块用户输入所要删除的图书书名,先查找该图书是否存在, 若存在,则删除该图书所有信息,若不存在则提示无此图书信息。86.图书基本信息录入模块首先输入

9、图书录入的编号(不为0)判断是否有重复的编号,若有,则提示用户该书已存在,若无则继续录入书名、作者、出版社、单价。97.图书基本信息修改模块用户输入要修改的书名,判断该书是否存在,若不存在,则提示用户无此图书信息;若存在,则提示用户选择修改项目, 然后提示用户图书信息修改完成。8. 读文件模块在运行该程序时,程序会自动检测是否存在图书信息,若存在,则会显示图书信息,若不存在,则会提示用户创建文件库,录入图书信息。109. 文件保存模块当用户对图书信息有录入,修改,删除等操作时,程序会自动保存操作和新的图书信息。五 . 主要功能的实现程序运行流程:但每个模块运行完即会回到主函数,然后选择其他或退

10、出。11六 . 程序调试1.第一次运行程序时,库文件不存在图书信息,于是录入图书信息。图书编号书名作者出版社出版日期单价1英语张三人民教育出版社2011.06302.主界面。123.在主界面选择1,开始录入新的图书信息。图书编号书名作者出版社出版日期单价2数学李四高等教育出版社2011.06284.在主界面选择 2,查询图书信息,按 1 或 2 分别选择按书名或书号查询。(以英语为例)13选择 2,按书号查找,输入书号:1,即可查询图书英语所有信息。选择 1,按书名查找,输入书名:英语,即可获得图书英语所有信息。145.在主界面选择 3,对图书资料进行删除(以数学为例) ,在后续图书信息显示时

11、无数学图书信息。6.在主界面选择 4,对图书进行修改(以英语为例,修改图书作者,将作者更换为王五),在后续图书基本信息显示时,作者不将是张三,而是王五。157.在主界面选择 5,图书基本信息显示,此时图书信息经过删除和修改,和初始信息不同。16七. 总结通过为期一周的课程设计,对 C 语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础, 在我们网络工程专业的学习中占据着十分重要的地位。自己 C 语言编程的能力有了提高,特别是在文件、指针、数组、函数和结构体方面有了很大提高, 另外还学习了课本没有讲到的知识, 学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有

12、了体会。循环是 C 语言的重要方法,也是本程序的灵魂,它在本程序中既有“穿针引线”的作用,也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用循环过程中对循环进行了多方法的应用也是一个“亮点”,它使程序变得结构合理,通俗易懂,也降低了程序的难度。以后要对这种方法进行深刻的体会。数组在程序中有着很重要的作用, 对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进行输入、 贮存、读取方便了对数据的处理和输入,数组的的使用在本程序中有很大的好处。函数是实现模块化编程的基础, 它使程序变得方面易懂, 对修改起了很大作用,降低了编程的难度, 一个函数就是一个功能, 它使各个功能

13、之间有了一定的独立性,但也有了一定的联系性, 一个函数的错误,不会导致整个程序的失败 (主函数除外),对函数的良好应用时在本程序中又以深刻的体会,有了很大提高。结构体的使用, 为本程序提供了很大方便, 也提高了程序的可读性, 结构数组方便了对数据的管理。这个程序的结构大体是从网络上借鉴的, 但是大部分功能模块与任务要求不同,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的, 还要有较强的实践能力。 因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。同时提高了自己对编程的兴趣, 使自己对编程有了更深的理解, 体会

14、到编程的乐趣。17八附件原代码清单及注释#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define N sizeof(struct book)#definePT"%-5d%10s%6s%6s%8s%3dn",p->num,p->name,p->author,p->pub,p->where,p->countstruct book /*图书信息 */int num;/*书号 */char name10

15、;/*书名 */char where10;/*出版日期 */char author15;/*作者 */char pub20;/*出版社 */int count;/*单价 */struct book *next;void find1 (struct book *p0);void find2 (struct book *p0);/* 输出模块 */void print(struct book *p0)struct book *p;system("cls");p=p0->next;printf("nn图书信息表 ");printf("nn图书编

16、号 -图书名称 - 作者 -出版社 -出版日期18- 单价 nn"); while(p!=NULL)printf(PT);p=p->next;getch();/输入任意值返回system("cls");/* 输入模块 */struct book *creat()struct book *head,*p1,*p2;int i=0;head=p2=(struct book *)malloc(N);/分配新的内存给 p2head->next=NULL;printf("nntt录入图书信息 ");printf("n-")

17、;while(1) p1=(struct book *)malloc(N);printf("n请输入图书编号 ( 书号 0 为结束 ): ");scanf("%d",&p1->num);if(p1->num!=0)printf("nn书名 作者 出版社出版日期单价 nnn");scanf("%s%s%s%s%d",p1->name,p1->author,p1->pub,p1->where,&p1->count); p2->next=p1;p2=p1;i

18、+;19elsebreak;p2->next=NULL;free(p1);printf("n-");printf("ntt%d种书录入完毕 ",i);getch();system("cls");return head;/* 查找模块 */void find(struct book *p0)int v;system("cls");printf("1.按书名查找 nnn");printf("2.按书号查找 n");scanf("%d",&v);s

19、witch(v)case 1 : find1(p0);break;case 2:find2(p0);break;default: ;void find1 (struct book *p0)system("cls");char name10;int flag=1;20struct book *p;p=p0->next;printf("请输入要查找的书名: n");scanf("%s",&name);for(p=p0;p;p=p->next)if(strcmp(p->name,name)=0)printf(&qu

20、ot;nn图书编号 -图书名称 - 作者 -出版社 -出版日期 - 单价 nn");printf(PT);flag=0;break;if(flag) printf("n暂无此图书信息 n");/当 flag=1 时执行getch();void find2 (struct book *p0)system("cls");int num;int flag=1;struct book *p;p=p0->next;printf("请输入要查找的书号: n");scanf("%d",&num);for(

21、p=p0;p;p=p->next)if(p->num=num)printf("nn图书编号 -图书名称 - 作者 -出版社 -出版日期 - 单价 nn"); printf(PT);21flag=0;break;if(flag) printf("n暂无此图书信息 n");getch();/* 删除模块 */void del(struct book *p0)system("cls");char name10;int flag=1;struct book *p;p=p0;printf("请输入要删除的书名: n&quo

22、t;);scanf("%s",name);while(p!=NULL)if(strcmp(p->name,name)=0)p0->next=p->next;/后续结点连接到前驱结点之后free(p);printf("t该书资料已删除 .");flag=0;break;p0=p;p=p->next;if(flag)printf("nt无此图书信息。 ");getch();22system("cls");/* 录入模块 */void insert(struct book *p0)struct b

23、ook *p;system("cls");p=(struct book *)malloc(N);while(1)printf("n请输入要录入的图书编号( 书号 0 为退出 ): ");scanf("%d",&p->num);if(p->num!=0)if(p0->next!=NULL&&p0->next->num=p->num) /找到重号p=p->next;free(p);printf("t该书已存在 ");elseprintf("nn

24、 书名 作者 出版社 出版日期 单价 nnn"); scanf("%s%s%s%s%d",p->name,p->author,p->pub,p->where,&p->count); p->next=p0->next;p0->next=p;printf("t已成功录入 .");elsebreak;23getch();system("cls");/* 修改模块 */void modify(struct book *p0)system("cls");cha

25、r name10;int flag=1;int choice;struct book *p;p=p0->next;printf("请输入要修改的书名: nn");scanf("%s",name);while(p!=NULL&&flag=1)if(strcmp(p->name,name)=0)printf("nt请选择要修改的项: ");printf("nt1.修改图书编号 n");printf("nt2.修改图书出版日期 n");printf("nt3.修改

26、图书作者 n");printf("nt4.修改图书出版社 n");printf("nt5.修改图书单价 n");scanf("%d",&choice);switch(choice)case 1: printf("n 请输入新的图书编号 :"); scanf("%d",p->num); break;24case 2: printf("n请输入新的图书出版日期:");scanf("%s",p->where); break;case

27、 3: printf("n请输入新的图书作者 :");scanf("%s",p->author); break;case 4: printf("n请输入新的图书出版社 :");scanf("%s",p->pub); break;case 5: printf("n请输入新的图书单价 :");scanf("%d",p->count); break;printf("nt该项已成功修改。 nt新的图书信息: ");printf("nn图

28、书编号 -图书名称 - 作者 -出版社 -出版日期 - 单价 nn");printf(PT);flag=0;p0=p;p=p0->next;if(flag)printf("nt暂无此图书信息。 ");getch();system("cls");/* 读文件 */struct book *read_file()int i=0;struct book *p,*p1,*head=NULL;25FILE *fp;if(fp=fopen("library.txt","rb")=NULL)/ 以只读的方式打开文

29、件printf("nnt*库文件不存在,请创建!*");getch();return NULL;head=(struct book *)malloc(N);p1=head;head->next=NULL;printf("n已有图书信息: ");printf("nn图书编号 -图书名称 - 作者 -出版社 -出版日期- 单价 nn"); while(!feof(fp)p=(struct book *)malloc(N);while(fscanf(fp,"%d%s%s%s%s%d",&p->num,

30、p->name,p->author,p->pub,p->where,&p->count)!=EOF)printf(PT);i+;p1->next=p;p1=p;p1->next=NULL;fclose(fp);printf("n共种 %d 图书信息 ",i);printf("nnn文件中的信息以正确读出。按任意键返回。");getch();system("cls");26return (head);/* 保存文件 */void save(struct book *head)FILE *

31、fp;struct book *p;fp=fopen("library.txt","wb");/以只写方式打开二进制文件if(fp=NULL)/打开文件失败printf("n=>打开文件失败 !n");getch();return ;elsefor(p=head->next;p!=NULL;p=p->next)fprintf(fp,"%d %s %s %s %s %dn",p->num,p->name,p->author,p->pub,p->where,p->count);fclose(fp);printf("nt保存文件成功 !n");void main()struct book *head=NULL;int choice=1;h

温馨提示

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

评论

0/150

提交评论