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

下载本文档

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

文档简介

1、-PAGE . z. - w -C语言课程设计报告院 系:学 号:班 号:姓 名:标 题: 图书管理系统 目录第一部分题目要求3第二部分需求分析3第三部分总体设计4第四部分详细设计41)主函数42)各功能模块设计63)公共函数16第五部分上机操作17第六部分总结20附录(源代码)22第一部分 题目要求图书管理系统包括:图书名称、图书编号、单价、作者、存在状态、借书人、性别、*等,是设计一图书管理系统,使之能够提供以下功能:1. 新图书基本信息的输入。2. 图书基本信息的查询。3. 对撤销图示基本信息的删除。4. 办理借书手续。5. 办理换书手续。第二部分 需求分析根据题目的要求,需要建立一个文

2、件来保存图书信息,每本书的信息用一个结构体来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人、性别、*,结构体中的存在状态可设为整型,用不同数字代表借还状态;在借书和还书手续中,要注意结构体的成员变量存在状态的值,使用指针会比较方便。程序中需要对图书信息实现输入、查询、删除、借书和还书的功能,首先要使用菜单进行各项功能的选择;其次需要有文件的输入、输出功能,提供显示、查找等操作。在程序的运行过程中,注意各功能在使用完毕后返回菜单的设置,以方便运行。第三部分 总体设计根据上面的需求分析,可以将整个图书管理系统分为输入模块、查找模块、删除模块、借书模块和还书模块(如图3-1

3、所示)。图书管理系统输入新书查找图书删除图书借阅图书归还图书图3-SEQ 图表 * ARABIC1 系统功能模块图第四部分 详细设计4.1 数据结构在这个程序里,每本书的信息用一个结构体book来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人、性别、*,结构体中的存在状态设为整型,用不同数字代表库中高本书的数量。struct book char title30; int number; char author30; float price; int store; char borrower_name20; char borrower_gender5; int borr

4、ower_number;sN;其中的N定义为该系统所管理书籍的最大值。#define N 100 /书籍的最多本数4.2 主函数【说明】主函数中,对菜单”进行了输出,将各个模块的函数列出来,实现对各种功能的选择。其流程图如图4.1-1所示。显 示 一 系 列 功 能 选 项输入n,判断n是否是05调 用 与 n 相 应 的 模 块NY开 始结 束图4.1-1 主函数流程图【程序】void main() int *; do printf(*菜单*n * 1.输入图书信息 * n * 2.查找图书信息 * n * 3.删除图书信息 * n * 4.借阅图书 * n * 5.归还图书 * n * 0

5、.退出 * n);printf(*n); printf(请在0-5中选择,以回车键结束n); scanf(%d,&*); switch(*) case 1: input(&s0);break;/输入新图书信息模块 case 2: search(&s0);break;/查找模块 case 3: del(&s0);break;/删除模块 case 4: borrow(&s0);break;/借书模块 case 5: retur(&s0);break;/还书模块 case 0: break;/退出 while(*!=0);4.2 各功能模块设计(1)输入模块【分析】在输入模块中,主要以输入输出语句为

6、主,使用了dowhile和for这两种循环方式,dowhile是作为一级循环,for为二级循环。在输入图书的基本信息过程中,使用指针进行字符串及值的传递。全局变量m是用于记录图书的储存位置,便于在后来的查询、删除等功能中的使用。调用save(struct book*p)来保存输入的数据。定义的整型变量y,用来储存是否继续的指令。该模块的流程图如下图4.2-1所示。输入图书的基本信息调用save(struck book *p)保存函数,m+判断y是否为0?YN开始返回菜单结束图4.2-1 输入模块流程图【程序】void input(struct book *p) int y; for(;ptit

7、le); printf(请输入编号:); scanf(%d,&p-number); printf(请输入作者:); scanf(%s,p-author); printf(请输入图书价格:); scanf(%f,&p-price); printf(请输入图书数量:); scanf(%d,&p-store); m+; printf(第%d个信息已经输入完毕,是否继续n按任意键继续,按0键结束.,m); scanf(%d,&y);/读取是否继续 if(y=0) save(&s0); read(&s0);/调用读取文件函数 break; (2)查找模块【分析】此模块的提供两种查找方式,输入书名或作者,

8、均可实现查找功能。在函数的结尾,选择是否继续查找。开 始选择查找方式0-21或2输入书名或作者调用read(struct book *p)使用for循环查找并显示记录判断是否继续YN返回菜单结 束0图4.2-2 查找模块流程图【程序】void search(struct book *p)/查询模块 int n; char name120; char name220; char c3; do p=&s0; printf(t请选择查找方式:n);/打印查询方式菜单 printf( 1.按书名查找n 2.按作者查找n 0.返回n); printf(请在0-2中选择:nn); scanf(%d,&n)

9、;/读取查找方式 if(n=0) break; switch(n) case 1: printf(请输入书名:n);scanf(%s,name1);break; case 2: printf(请输入作者:n);scanf(%s,name2); break; for(;ptitle,name1)=0|strcmp(p-author,name2)=0) printf(n查找图书信息成功!n); printf(书名 编号 作者 价格 数量n); printf(%-10s%-10d%-10s%-10.2f%-10dn, p-title,p-number,p-author,p-price,p-store

10、);/打印信息 break; printf(是否继续查找n是”请键入yes”, 否”请按任意键,返回菜单n); scanf(%s,c); while(strcmp(c,yes)=0);/判断是否结束(3)删除模块【分析】该模块实现对撤销图书的删除。用户首先查找要删除的图书,图书列表出来后,确认是否删除。当删除成功后,询问是继续删除还返回退出并返回菜单。其流程图如下图4.2-3所示。开 始选择删除方式0-21或2输入要删除的书名或作者调用read(struct book *p)使用for循环查找并显示记录,m-判断是否继续YN返回菜单结 束0调用save(struct book*p)图4.2-3

11、 删除模块流程图【程序】void del(struct book *p)/删除模块 int i; struct book *p1,*p2; char name120; char name220; char c3; int n; do p=&s0;printf(请选择删除以方式回车键结束:n);/打印删除方式菜单 printf( 1.按书名删除n 2.按作者删除n 0.返回n); printf(请在0-2中选择:nn); scanf(%d,&n);/读取查找方/ if(n=0) break; switch(n) case 1:printf(请输入书名:n); scanf(%s,name1); b

12、reak; case 2: printf(请输入作者:n); scanf(%s,name2); break; read(&s0); /调用读取函数 for(i=0;ititle,name1)=0|strcmp(p-author,name2)=0) p1=p; for(p2=p1+1;p2title,p2-title); strcpy(p1-author,p2-author); p1-number=p2-number; p1-store=p2-store; p1-price=p2-price; m-; printf(删除成功!n); else printf(没有该书记录!); break; pr

13、intf(是否继续删除?是”请键入yes”, 否”请按任意键,返回菜单n); scanf(%s,c); /读取是否继续 save(&s0); /调用保存函数 while(strcmp(c,yes)=0); /判断是否继续删除 (4)借书模块【分析】该模块实现系统的借书功能。首先查找要借阅的图书,并且显示该项图书的记录,输入借书人的信息后store-,借书成功,询问是否继续。该模块的流程图如下图4.2-4所示。开 始选择借阅查找方式0-20-21或2输入要借阅的书名或作者调用read(struct book *p)使用for循环查找,m-判断是否继续YN返回菜单结 束0调用save(struct

14、 book *p)输入借书人的基本信息显示图书借阅信息图4.2-4 借书模块流程图【程序】void borrow(struct book *p)/借书模块 int z; char name320,name420; char w3; do p=&s0; printf(请先查找您要借阅的图书!); printf(请选择查找方式:n);/打印查询方式菜单 printf( 1.按书名查找n 2.按作者查找n 0.返回n); printf(请在0-2中选择:n); scanf(%d,&z);/读取查找方式 if(z=0) break; switch(z) case 1: printf(请输入书名:n);

15、scanf(%s,name3);break; case 2: printf(请输入作者:n);scanf(%s,name4); break; read(&s0);/调用读取函数 for(;ptitle,name3)=0|strcmp(p-author,name4)=0) printf(n查找图书信息成功!n); printf(书名 编号 作者 价格 数量n); printf(%-10s%-10d%-10s%-10.2fs%-10dn, p-title,p-number, p-author, p-price,p-store);/打印信息 printf(请输入您的:);scanf(%s,p-bor

16、rower_name); printf(请输入您的性别:);scanf(%s,p-borrower_gender); printf(请输入您的*:);scanf(%d,&p-borrower_number); p-store-; printf(借书成功!n); printf(书名 编号 作者 价格 数量 借书人 性别 *n);printf(%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10dn,p-title,p-number,p-author,p-price,p-store,p-borrower_name,p-borrower_gender,p-borrowe

17、r_number); break; printf(是否继续借书?); printf(是”请键入yes”, 否”请按任意键,返回菜单n); scanf(%s,w); /读取是否继续 save(&s0); /调用保存函数 while(strcmp(w,yes)=0); /判断是否继续借书 (5)还书模块【分析】该模块实现还书功能。首先作者查找所要还得图书,找到后将借书人的基本信息清除并保存,实现还书功能。其流程图如图4.2-5所示。开 始选择还书查找方式0-20-21或2输入要还的书名或作者调用read(struct book *p)使用for循环查找,m-判断是否继续YN返回菜单结 束0调用sa

18、ve(struct book *p)清除借书人的基本信息显示图书信息图4.2-5 还书模块流程图【程序】void retur(struct book *p)/还书模块 int e,f; char name520; char name620; char t3; do p=&s0; printf(请先查找您要还的图目!); printf(请选择查找方式:n); /打印查询方式菜单 printf( 1.按书名查找n 2.按作者查找n 0.返回n); printf(请在0-2中选择:nn); scanf(%d,&e); /读取查找方式 if(e=0) break; switch(e) case 1:

19、printf(请输入书名:n);scanf(%s,name5);break; case 2: printf(请输入作者:n);scanf(%s,name6);break; read(&s0);/调用读取函数 for(;ptitle,name5)=0|strcmp(p-author,name6)=0) printf(n查找图书信息成功!n); printf(确认还书请按1”!);/确认是否还书 scanf(%d,&f); if(f=1) strcpy(p-borrower_name,0);strcpy(p-borrower_gender,0); p-borrower_number=0; p-st

20、ore+; printf(书名 编号 作者 价格 数量 借书人 性别 *n);printf(%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10dn,p-title,p-number,p-author,p-price,p-store,p-borrower_name,p-borrower_gender,p-borrower_number); /打印信息 break; else printf(没有该书记录!); break; printf(是否继续还书?n); printf(是”请键入yes”, 否”请按任意键,返回菜单n); scanf(%s,t); /读取是否继续

21、 save(&s0); /调用保存函数 while(strcmp(t,yes)=0); /判断是否继续还书 4.3 公共函数(1)保存图书信息函数void save(struct book *p) FILE *fp,*fp1; int i; if(fp=fopen(tushu.dat,wb)=NULL)/打开文件并判断是否出错 printf(创建文件失败!nn);/打印出错提示 getchar(); return; if(fp1=fopen(book.dat,wb)=NULL)/打开文件并判断是否出错 printf(创建文件失败!nn);/打印出错提示 getchar(); return; f

22、or(i=0;im;i+,p+) if(fwrite(p,sizeof(struct book),1,fp)=0)/向文件写入数据,并判断是否出错 printf(向文件输入数据失败!nn); fprintf(fp1,%d,m); fclose(fp);/关闭文件 fclose(fp1);/关闭文件(2)读取文件信息函数void read(struct book *p)/从文件读取信息模块 FILE *fp,*fp1; int i; if(fp=fopen(tushu.dat,rb)=NULL)/打开文件,并判断是否出错 printf(出错,请检查文件是否存在,按任意键返回住菜单);/打印出错提

23、示 getchar(); if(fp1=fopen(book.dat,rb)=NULL)/打开文件并判断是否出错 printf(创建文件失败!nn);/打印出错提示 getchar(); return; fscanf(fp1,%d,&m); fclose(fp1);/关闭文件 for(i=0;im;i+,p+) fread(p,sizeof(struct book),1,fp);/从文件中读取信息 fclose(fp);/关闭文件第五部分 上机操作运行主函数,进入主菜单输入模块查找模块(4)删除模块(5)借书模块(6)还书模块(7)退出第六部分 总 结通过这次为期一周的C语言上机实习,我明白C

24、语言这门课程光仅仅是听课是远远不够的,上机训练也不容忽视。通过上机训练,才能够明白自己知识的不足,更加深刻的理解C语言中的知识点,从而找到知识漏点,还对以前认为自己已懂了的知识点也理解更加深刻。当遇到了自己当时不知如何编写的C语言题目时,通过自己的学习和同学的交流,得以顺利的编写,使我增加了对C语言的兴趣和学好C语言的信心。本次C语言实习的几个作用:1加深对课堂讲授容的理解课堂上要讲授许多关于C语言的语法规则,听起来比较枯燥,不易记忆。而通过多次上机练习,对于语法知识就有了更深的认识,自然而然地掌握C语言的语法规定。学习C语言不能停留在书本,而是要利用学到的知识编写C语言程序,解决实际问题。通

25、过对自己编写程序的调试,发现问题,解决问题,逐步提高自己对C语言的理解和程序开发能力。2熟悉程序开发环境、学习计算机系统的操作方法一个C语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 在这次实习的过程我中遇到了一些难题,老师给予了我细心的指导,帮助我解决了很多程序上的问题,再次向老师的帮助表示衷心的感!附 录(源程序)【总程序】#in

26、clude#include#include#include#define N 100 /书籍的最多本数struct book char title30; int number; char author30; float price; int store; char borrower_name20; char borrower_gender5; int borrower_number;sN;int m=0;void input(struct book *p); /输入图书信息 void save(struct book *p); /保存图书信息void read(struct book *p);

27、 /读取图书信息void search(struct book *p); /查找图书信息void del(struct book *p); /删除图书信息void borrow(struct book *p); /借阅图书void retur(struct book *p); /归还图书void main() int *; do printf(*菜单*n * 1.输入图书信息 * n * 2.查找图书信息 * n * 3.删除图书信息 * n * 4.借阅图书 * n * 5.归还图书 * n * 0.退出 * n); printf(*n); printf(请在0-5中选择,以回车键结束n);

28、 scanf(%d,&*); switch(*) case 1: input(&s0);break; case 2: search(&s0);break; case 3: del(&s0);break; case 4: borrow(&s0);break; case 5: retur(&s0);break; case 0: break; while(*!=0);void input(struct book *p) int y; for(;ptitle); printf(请输入编号:); scanf(%d,&p-number); printf(请输入作者:); scanf(%s,p-author

29、); printf(请输入图书价格:); scanf(%f,&p-price); printf(请输入图书数量:); scanf(%d,&p-store); m+; printf(第%d个信息已经输入完毕,是否继续n按任意键继续,按0键结束.,m); scanf(%d,&y);/读取是否继续 if(y=0) save(&s0); read(&s0);/调用读取文件函数 break; void search(struct book *p)/查询模块 int n; char name120; char name220; char c3; do p=&s0; printf(t请选择查找方式:n);/

30、打印查询方式菜单 printf( 1.按书名查找n 2.按作者查找n 0.返回n); printf(请在0-2中选择:nn); scanf(%d,&n);/读取查找方式 if(n=0) break; switch(n) case 1: printf(请输入书名:n);scanf(%s,name1);break; case 2: printf(请输入作者:n);scanf(%s,name2); break; for(;ptitle,name1)=0|strcmp(p-author,name2)=0) printf(n查找图书信息成功!n); printf(书名 编号 作者 价格 数量n); pr

31、intf(%-10s%-10d%-10s%-10.2f%-10dn, p-title,p-number,p-author,p-price,p-store);/打印信息 break; printf(是否继续查找n是”请键入yes”, 否”请按任意键,返回菜单n); scanf(%s,c); while(strcmp(c,yes)=0);/判断是否结束void del(struct book *p)/删除模块 int i; struct book *p1,*p2; char name120; char name220; char c3; int n; do p=&s0; printf(请选择删除以

32、方式回车键结束:n);/打印删除方式菜单 printf( 1.按书名删除n 2.按作者删除n 0.返回n); printf(请在0-2中选择:nn); scanf(%d,&n);/读取查找方/ if(n=0) break; switch(n) case 1:printf(请输入书名:n); scanf(%s,name1); break; case 2: printf(请输入作者:n); scanf(%s,name2); break; read(&s0); /调用读取函数 for(i=0;ititle,name1)=0|strcmp(p-author,name2)=0) p1=p; for(p2

33、=p1+1;p2title,p2-title); strcpy(p1-author,p2-author); p1-number=p2-number; p1-store=p2-store; p1-price=p2-price; m-; printf(删除成功!n); else printf(没有该书记录!); break; printf(是否继续删除?是”请键入yes”, 否”请按任意键,返回菜单n); scanf(%s,c); /读取是否继续 save(&s0); /调用保存函数 while(strcmp(c,yes)=0); /判断是否继续删除 void borrow(struct book

34、 *p)/借书模块 int z; char name320,name420; char w3; do p=&s0; printf(请先查找您要借阅的图书!); printf(请选择查找方式:n);/打印查询方式菜单 printf( 1.按书名查找n 2.按作者查找n 0.返回n); printf(请在0-2中选择:n); scanf(%d,&z);/读取查找方式 if(z=0) break; switch(z) case 1: printf(请输入书名:n);scanf(%s,name3);break; case 2: printf(请输入作者:n);scanf(%s,name4); brea

35、k; read(&s0);/调用读取函数 for(;ptitle,name3)=0|strcmp(p-author,name4)=0) printf(n查找图书信息成功!n); printf(书名 编号 作者 价格 数量n); printf(%-10s%-10d%-10s%-10.2fs%-10dn, p-title,p-number, p-author, p-price,p-store);/打印信息 printf(请输入您的:);scanf(%s,p-borrower_name); printf(请输入您的性别:);scanf(%s,p-borrower_gender); printf(请输

36、入您的*:);scanf(%d,&p-borrower_number); p-store-; printf(借书成功!n); printf(书名 编号 作者 价格 数量 借书人 性别 *n); printf(%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10dn, p-title,p-number,p-author, p-price,p-store,p-borrower_name,p-borrower_gender,p-borrower_number); break; printf(是否继续借书?); printf(是”请键入yes”, 否”请按任意键,返回菜单

37、n); scanf(%s,w); /读取是否继续 save(&s0); /调用保存函数 while(strcmp(w,yes)=0); /判断是否继续借书 void retur(struct book *p)/还书模块 int e,f; char name520; char name620; char t3; do p=&s0; printf(请先查找您要还的图目!); printf(请选择查找方式:n); /打印查询方式菜单 printf( 1.按书名查找n 2.按作者查找n 0.返回n); printf(请在0-2中选择:nn); scanf(%d,&e); /读取查找方式 if(e=0) break; switch(e) case 1: printf(请输入书名:n);scanf(%s,name5);break; case 2: printf(请输入作者:n);scanf(%s,name6);break; read(&s0);/调用读取函数 for(;ptitle,name5)=0|strcmp(p-author,nam

温馨提示

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

评论

0/150

提交评论