




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宁 波 工 程 学 院2013 2014 学年第 二 学期电信学院C语言课程设计报告题 目: 图书信息管理系统设计 班 级: 计科13-2 姓 名: 学 号: 指导教师: 洪立 2014 年 6 月目录目录21、系统功能和结构31.1系统设计目的31.2系统功能分析31.3系统结构分析32、核心技术介绍33、函数功能介绍34、设计体会及总结4参考文献:4附录一:51、 系统功能和结构1.1系统设计目的为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、出版社、出版日期、价格、在库状态等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作。整个程序实现链表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。这种系统设计的人很多,也有很多种系统。总的感觉他们做的界面不够人性化,不够美观。所以我在功能完善的前提下要做到界面更加美观和人性化。整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。1.2系统功能分析(系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现通讯录的管理,同时对操作结果在计算机中做永久保存。) 整个系统可以分为信息录入、信息浏览、信息查询、信息排序、信息删除和信息修改的功能。系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现图书信息的管理,同时对操作结果在计算机中做永久保存。开始菜单页面输入数字编号选项进入选择子页面结束1.3系统结构分析程序总体结构图 选择0程序层次图 开始选择数字编号 0 1 2 3 4 图书信息修改图书信息查询图书信息浏览图书信息录入退出图书管理系统图书信息排序图书信息保存图书信息删除图书信息增加 5 6 7 8 程序流程图开始 图书信息录入 0 1图书信息浏览 0 2图书信息查询 0 3图书信息修改 0 4图书信息增加 0 5图书信息删除 0 6图书信息排序 0 7图书信息保存 0 8 退出图书管理系统 2、 核心技术介绍简单选择排序技术:基本思想:每一趟在后面n-i 个待排记录中选取排序码最小的记录作为有序序列中的第i 个记录。排序过程: 首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换。 再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换。 重复上述操作,共进行n-1趟排序后,排序结束实现代码为:void bookpaixu(struct book*p,int n)int j,i,k;char c1;struct book temp;printf(n排序前图书的信息记录为:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);printf(n按登录号排序(D),还是按作者名排序(A)?); /选择排序的方式c1=getchar();getchar();if(c1=d|c1=D) /选择登录号由小到大排序for(i=0;in-1;i+) k=i;for(j=i+1;j0) /使用选择法进行排序k=j;if(k!=i) /如果最小熟不熟默认的pi,再交换,temp=pk;pk=pi;pi=temp;printf(n排序后图书的信息记录为:n); /输出排序后图书的信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);else if(c1=a|c1=A) /选择作者名由小到大排序for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i) /使用选择法进行排序temp=pk;pk=pi;pi=temp;printf(n排序后图书的信息记录为:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格); /输出排序后图书的信息for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);elseprintf(n您输入的为非法字符!n);3、 函数功能介绍stdlib.h是包含文件stdlib 头文件即standard library标准库头文件。stdlib 头文件里包含了C、C+语言的最常用的系统函数。该文件包含了的C语言标准库函数的定义。stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 系统使用的主要函数 void menu();int bookluru(struct book*p,int n); (录入图书信息) void bookliulan(struct book*p,int n); (图书信息浏览) void bookchaxun(struct book*p,int n);(图书信息查询)void bookxiugai(struct book*p,int n); (图书信息修改) int bookzengjia(struct book*p,int n); (图书信息增加)int bookshanchu(struct book*p,int n); (图书信息删除) void bookpaixu(struct book*p,int n); (图书信息排序) void DLsearch(struct book*p,int n); (按登入号查询)void AUsearch(struct book*p,int n); (按作者名查询)int bookzairu(struct book*p,int n); (图书信息文件储存 )void goout(); (退出程序) int bookbaocun(struct book*p,int n); (图书信息保存) void main() 系统使用的主要数据结构 struct book /定义一个book类结构体。 char noL;char nameL;char authorL;char fenleiL;char puttimeL;char putfromL;char priceL;4、 设计体会及总结这次课程设计让我掌握了许多的有用知识。首先通过不断地学习和锻炼更加熟练地掌握应用软件Microsoft Visual C+ 6.0 了。设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值通过两周的课程设计,第一次我试着用所学的C语言知识去编制生活中常用的程序。我们是小组选择编辑图书信息管理系统程序。由于分工合作,我负责的是查询和排除模块。起初对知识掌握的不够全面,在整个设计过程中遇到很多问题。比如,编译出现错误,对于格式的掌握还不够透彻;在分界面运行完后,回不到系统的主界面,出现了死循环;在删除信息的板块中,删除了要保留的;运行时,屏幕显示的字之间无空格。后来,通过小组互相帮组讨论,查阅书籍,改善了程序。首先把原程序中的运用scanf()输入字符,改为getchar(),排除了接受回车键所出现的问题,能够顺利的返回主界面。其次,printf()中字符串控制的长度拉宽。最后还是能如期的完成此次实训。当然,由于初次接触图书管理系统的设计,程序还是存在缺陷。比如操作起来不够简便、连贯,同时也没考虑到实际问题。如图书的价格要取大于等于零的数等。总之,此次的课程设计还是对我们的专业很有帮助。既巩固了我们的C语言知识,让我们对一部分函数的功能有了更加深刻的理解,把所学运用到实际,也使我们在系统设计领域有了新的拓展,开发我们的思维。参考文献:1 黄明等编著C语言课程设计北京:电子工业出版社 2 郭翠英编著C语言课程设计案例精编北京:中国水利水电出版社 3 宁正元数据结构(c语言)南京:东南大学出版社。2000年6月第1版 4 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版 5 谭浩强编著C程序设计题解与上机指导(第3版) 北京:清华大学出版社 6 谭浩强编著C程序设计(第3版) 北京:清华大学出版社 7 洪国胜 等编著 C+ Builder程序设计轻松上手北京:清华大学出版社 8 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1版 9 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版。10 明日科技编著Visual C+程序开发范例宝典北京:人民邮电出版社。 11 胡学钢等数据结构算法设计指导北京:清华大学出版社,1999年 第1版。 12 刘大有数据结构(面向21世纪课程教材) 北京:高等教育出版社。2001年6月第1版。 13 胡学钢等数据结构算法设计指导北京:清华大学出版社,1999年 第1版。附录一:系统使用方法:一开始运行程序时,就会出现一个让你选择的界面,1.图书信息录入;2图书信息浏览;3图书信息查询;4图书信息修改;5图书信息增加;6图书信息删除;7图书信息排序;8图书信息保存;0退出图书管理系统;当你输入1时(首次录入图书信息时),界面就会输出“添加前的图书信息记录有0个: 请输入要录入的图书书目x(0x200):”,接着你就按要求输入你要录入的图书的信息就可以了。当你输入2时,就会在出现一个你录入的图书信息,你可以继续选择继续或不,当选择继续时页面会跳转到3图书信息查询界面此时会提示你请按登陆号查询还是按作者名查询?你可以按照提示进行查询操作。当你输入4时,界面会提示你输入要修改的图书登陆号。接下来按照提示信息一步步修改图书信息。当你输入5时,界面会提示你添加图书信息按提示添加完后会显示添加前的图书信息记录和添加后的图书信息记录。当输入6时,界面会提示输入删除图书的登陆号,删除后会显示图书删除后的记录。当输入7时,界面会提示按登陆号排序或按作者名排序,排序后会显示排序后俄图书信息记录。当输入8时,界面会提示“图书信息保存成功!”当输入0时,将会退出图书管理系统。Ps:操作每一步结束都回提示是否继续操作(Y/N)。源代码:#include /头文件#include#include#define L 30 /宏定义#define Q 200struct book /定义一个book类结构体。char noL;char nameL;char authorL;char fenleiL;char puttimeL;char putfromL;char priceL;/函数声明 /函数声明void menu();int bookluru(struct book*p,int n); void bookliulan(struct book*p,int n); void bookchaxun(struct book*p,int n); void bookxiugai(struct book*p,int n); int bookzhengjia(struct book*p,int n);int bookshanchu(struct book*p,int n); void bookpaixu(struct book*p,int n); void DLsearch(struct book*p,int n); void AUsearch(struct book*p,int n);int bookzairu(struct book*p,int n);void goout();int bookbaocun(struct book*p,int n); void main() /主函数char slect,yn;struct book recordQ; /定义book类结构体变量存放图书信息共200条int total=0,flag;total=bookzairu(record,Q); /从文件读取图书信息,不超过200条domenu(); /显示菜单printf(请服务项编号:);slect=getchar();getchar();switch(slect) case0: goout();break;case1: total=bookluru(record,total);break; /函数调用case2: bookliulan(record,total);break;case3: bookchaxun(record,total);break;case4: bookxiugai(record,total);break;case5: total=bookzhengjia(record,total);break;case6: total=bookshanchu(record,total);break;case7: bookpaixu(record,total);break;case8: flag=bookbaocun(record,total);if(flag=1) printf(图书信息保存成功!n);elseprintf(图书信息保存失败!n);break;default:continue;if(slect=0) break;printf(n还要继续选择吗?(Y/N)); /提示是否结束doyn=getchar();getchar();if (yn=Y|yn=y)break;else if (yn=N|yn=n)break;else printf(非法选项!n还要继续选择吗?(Y/N));while(1);while(yn!=N&yn!=n);/图书管理系统主菜单.void menu()system(cls);system(color 1e); printf(nn); printf(请选择服务项目编号(0-8)n); printf(*n); printf(*欢迎使用图书信息管理系统*n); printf(*n); printf( n); printf( n); printf( n); printf( * 1 . 图书信息录入. n); printf( * 2 . 图书信息浏览. n); printf( * 3 . 图书信息查寻. n); printf( * 4 . 图书信息修改. n); printf( * 5 . 图书信息增加. n); printf( * 6 . 图书信息删除. n); printf( * 7 . 图书信息排序. n); printf( * 8 . 图书信息保存. n); printf( * 0 . 退出图书管理系统. n); printf( n); printf( n); printf( n); printf(*n); printf(n);int bookluru(struct book *p,int n)/录入图书信息.int i=0;int m;printf(n添加前的图书信息记录共有%d个:n,n); /显示原有的图书信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);i=0;while(ino,)!=0) /输入的登录号不为空时,输出图书信息printf(%9s%9s%9s%9s%9s%9s%9sn,p-no,p-name,p-author,p-fenlei,p-puttime,p-putfrom,p-price);/信息输出i+;p+;printf(n请输入要录入的图书数目X(0X%d): ,200-n); /设置图书信息存储最大值scanf(%d,&m);i=0;while(ino); /输入登录号,再输入其他信息while(strcmp(p-no,)=0);printf(书名为:); gets(p-name); printf(作者名为:); gets(p-author); printf(分类号为:); gets(p-fenlei); printf(出版时间为:); gets(p-puttime); printf(出版单位为:); gets(p-putfrom); printf(价格为:); gets(p-price);p+;i+;return m+n;void bookliulan(struct book*p,int n)/图书信息浏览.int i=0;printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);while(ino,p-name,p-author,p-fenlei,p-puttime,p-putfrom,p-price);p+;i+;void bookchaxun(struct book*p,int n)/图书信息查寻.char c;bookliulan(p ,n);doprintf(n请问按登录号查询(D),还是按作者名查询(A)?); /选择查询方式c=getchar();getchar();if(c=D|c=d)DLsearch(p,n);break;else if(c=A|c=a)AUsearch(p,n);break;elseprintf(n输入的为非法字符!n);continue;while(c!=D|c!=d|c!=A|c!=a);void DLsearch(struct book*p,int n)/按登录号查询.int i,x=0;char DLL;printf(n请输入要查询图书的登录号:);gets(DL);for(i=0;in;i+)if(strcmp(DL,pi.no)=0) /输入登录号,如果在系统中找到则输出图书信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);printf(n%10s%10s%10s%10s%10s%10s%10sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);x=1;break;if(x=0)printf(n对不起,图书系统中没有包含此书的信息!n);void AUsearch(struct book*p,int n)/按作者名查询.int i,x=0;char AU20;printf(n请输入要查询图书的作者姓名:);gets(AU);for(i=0;in;i+) if(strcmp(AU,pi.author)=0) /输入作者姓名,如果在系统中找到则输出图书信息 printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);printf(n%10s%10s%10s%10s%10s%10s%10sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);x=1;if(x=0)printf(n对不起,图书系统中没有包含此书的信息!n); /提示信息void bookxiugai(struct book*p,int n)/图书信息修改.int i,k=0;char noL;bookliulan(p,n);printf(n请输入要修改图书的登录号:);gets(no);for(i=0;ino)!=0) continue; /输入的登录号不匹配,结束本次循环elseprintf(n请输入正确的图书登录号:);gets(p-no);printf(n请输入正确的图书书名:); gets(p-name); printf(n请输入正确的图书作者名:); gets(p-author); printf(n请输入正确的图书分类号:); gets(p-fenlei); printf(n请输入正确的图书出版时间:); gets(p-puttime); printf(n请输入正确的图书出版单位:); gets(p-putfrom); printf(n请输入正确的图书价格:); gets(p-price);printf(n修改图书图书信息完成!);k=1;if(k=0)printf(n对不起,图书系统中没有包含此书的信息!n);int bookzhengjia(struct book *p,int n)/图书信息增加.int i=0;char c;struct book t;printf(n添加前图书信息的记录为:n); bookliulan(p ,n);/显示添加前图书信息的记录doprintf(请输入新图书信息的登录号:);gets(t.no); printf(n请输入新图书信息的书名为:); gets(); printf(n请输入新图书信息的作者名为:); gets(t.author); printf(n请输入新图书信息的分类号为:); gets(t.fenlei); printf(n请输入新图书信息的出版时间为:); gets(t.puttime); printf(n请输入新图书信息的出版单位为:); gets(t.putfrom); printf(n请输入新图书信息的价格为:); gets(t.price);for(i=0;ino)=0|strcmp(t.author,(p+i)-author)=0|strcmp(t.fenlei,(p+i)-fenlei)=0)printf(登录号、作者名和分类号重复,要重新输入吗(Y/N)?);c=getchar();putchar(n);break;if(i=n)*(p+i)=t; printf(n添加后图书的信息记录为:n); /显示添加后图书的信息记录printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);for(i=0;in+1;i+)printf(n%9s%9s%9s%9s%9s%9s%9sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);break;while(c=y|c=Y);return n+1;int bookshanchu(struct book *p,int n)/图书信息删除.int i,x,y=0;char no20;printf(n删除前图书的信息记录为:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格); /显示删除前图书的信息记录for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);printf(n请输入要删除图书的登陆号:);gets(no);for(x=0;xn;x+)if(strcmp(no,px.no)!=0) /输入的登录号不匹配,结束本次循环continue;if(xn)for(i=x;in;i+) /后一个图书信息对前一个图书信息覆盖删除 strcpy(pi.no,pi+1.no); strcpy(pi.author,pi+1.author); strcpy(,pi+1.name); strcpy(pi.fenlei,pi+1.fenlei); strcpy(pi.price,pi+1.price); strcpy(pi.putfrom,pi+1.putfrom); strcpy(pi.puttime,pi+1.puttime);printf(图书信息删除后的记录:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格); /显示图书信息删除后的记录for(i=0;in-1;i+)printf(n%9s%9s%9s%9s%9s%9s%9sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);y=1;elseprintf(n对不起,图书系统中没有包含此书的信息!n);return n-y; return 0;/对图书信息排序.void bookpaixu(struct book*p,int n)int j,i,k;char c1;struct book temp;printf(n排序前图书的信息记录为:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);printf(n按登录号排序(D),还是按作者名排序(A)?); /选择排序的方式c1=getchar();getchar();if(c1=d|c1=D) /选择登录号由小到大排序for(i=0;in-1;i+) k=i;for(j=i+1;j0) /使用选择法进行排序k=j;if(k!=i) /如果最小熟不熟默认的pi,再交换,temp=pk;pk=pi;pi=temp;printf(n排序后图书的信息记录为:n); /输出排序后图书的信息printf(n %9s%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年急诊医学各种急危重症处理试题答案及解析
- 2025-2030共享经济行业商业模式及可持续发展研究报告
- 2025-2030共享经济商业模式市场表现及投资可行性研究报告
- 新能源行业品牌建设与市场推广策略报告-2025年技术创新展望
- 2025年新能源汽车充电设施智能化监控与预警系统报告
- 新能源行业2025年绿色信贷与企业研发投入政策影响分析报告
- 2025年汽车零部件行业智能化升级趋势报告
- 2025年注册资产评估师考试真题及答案
- 2025年公共营养师基础知识习题库(附答案解析)
- 2025年度(CPA)注册会计师全国统一考试《税法》典型题汇编(含答案)
- 篮球场围网施工方案
- 盘柜安装施工方案
- 中医面瘫护理个案汇报
- 《水基路用聚合物稳定碎石基层技术规程》
- 快递柜租赁合同
- 产品研发流程管理指南
- 《车刀与切削原理》课件
- 2024高考物理全国二卷
- 2024-2030年中国猎头公司市场发展前景调研及投资战略分析报告
- 注塑检验员培训
- 消防安全操作员培训合同范本
评论
0/150
提交评论