图书登记管理系统程序ds.doc_第1页
图书登记管理系统程序ds.doc_第2页
图书登记管理系统程序ds.doc_第3页
图书登记管理系统程序ds.doc_第4页
图书登记管理系统程序ds.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告课设题目: 学生C语言图书登记管理程序设计 专 业: 电气与信息工程(汽车电子) 班 级: 电信143班 姓 名: 刘高永 成 绩: 指导教师: 胡宁亚老师 目 录C语言程序设计1课程设计报告11.课程设计目的42.需求分析42.1要求42.2任务描述52.3运行环境52.4开发工具63.总体设计63.1系统流设计63.2系统模块设计74.详细设计74.1数据结构设计74.2模块接口设计84.3 以下是几个主要模块的流程图:95.运行结果135.1读取图书信息界面:135.2 欢迎界面:135.3主菜单界面:145.4给定书号显示图书信息界面:155.5给定书名显示图书信息界面:155.6给定书号修改图书信息界面:165.7:给定书号删除图书信息界面:165.8:图书信息显示界面:175.9:显示课设题目信息界面:176.程序调试186.1程序调试187.课设总结207.1心得体会207.2问题与不足238. 程序源代码239.参考文献40学生C语言图书登记管理程序设计问题描述:请设计一个图书登记管理程序,以方便图书管理员管理图书馆内的图书,该程序应该具有以下功能:(1)从键盘输入某本图书的信息(2)给定图书的国际标准书号(ISBN),显示该图书的信息。(3)给定图书的作者,显示所有该作者所著的图书。(4)给定国际标准书号(ISBN),修改该图书的信息。(5)给定国际标准书号(ISBN),删除该图书的信息。题目要求:(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。(2)图书信息应该包含国际标准书号、图书名称、图书出版社、图书作者(假设一个作者)、图书价格、出版时间。(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,出版时间必须是一个合法的日期格式,国际标准书号是唯一的(一个国际标准书号对应一种图书信息)。输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。(3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定国际标准书号删除图书信息时,如果该图书不存在,要提示没能删除,如果删除成功要提示删除成功。实现要求: (1)在程序中使用链表存储图书信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。 提示: (1)使构体表示图书信息,一个结点保存一条图书信息。 扩展功能: (1)提供一些统计功能。例如统计每个出版社的图书种类数,统计每个作者的图书种类数。 (2)图书信息从文件读入。 1.课程设计目的1) 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2) 通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表、结构体、文件等数据结构。3) 通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。4) 通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。5) 通过课程设计,加强了自己的程序分析能力。2.需求分析2.1要求1) 遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。2) 运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。3) 学会利用数组、结构体、链表进行相关信息表示。4) 功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5) 各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。6) 所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。7) 界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。8) 程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。9) 学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。10) 掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。11) C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。2.2任务描述此系统以图书登记管理为背景,提供查询修改删除图书信息并保存信息到本地文件中的功能,并可通过图书的书号、书名、作者查询到图书的具体信息,另外还有一些统计功能,例如统计每个出版社的图书种类数,统计每个作者的图书种类数。具体功能实现如下:一:管理模式功能1) 自动导入功能:从文件中导入所有图输信息。2) 键盘输入功能:可以从键盘输入某图书的基本信息。3) 信息管理功能:修改、删除学生的信息。二:查询模式功能4) 通过图书书号、书名查询图书的基本信息。三:统计模式功能5) 统计每个出版社的图书种类数。6) 统计每个作者的图书种类数。2.3运行环境Windows XP/7系统2.4开发工具VC+6.0编译环境3.总体设计3.1系统流设计本系统的功能模块如图1所示,主要有以下模块:文件数据导入界面程序欢迎进入界面主菜单界面从键盘输入图书信息给定书号显示图书信息给定书名显示图书信息给定书号修改图书信息给定书号删除图书信息退出程序显示课设题目信息保存图书信息显示图书信息 3.2系统模块设计1) 系统欢迎界面:构造函数void welcome_menu(),显示课程设计名称、作者、软件制作时间、联系方式。2) 文件数据导入界面:执行void input()函数,自动导入图书数据。3) 菜单界面:构造函数int shouMenu(),实现系统主菜单的显示。4) 键盘输入图书信息:构造函数 void inputBook()函数,开始用户手动从键盘输入图书的基本信息,并保存。5) 给定书号,显示该图书的信息:构造void showShuhao()函数,输入某本图书的书号,查询该图书的基本信息。6) 给定书名,显示该图书的信息:构造void showShuming()函数,输入某本图书的书名,查询该图书的基本信息。7) 给定书号,修改该图书的信息:构造void doShuhao()函数,输入某本图书的书号,修改该图书的基本信息。8) 给定书号,删除图书的信息:构造void deletBook()函数,输入某本图书的书号,进行删除功能。9) 显示图书信息:构造void listRec()函数,可显示修改过的图书信息。10)保存图书的信息:void writeInfo()函数,可保存修改过的图书信息。10) 题目信息: 构造void timu()函数,显示课设的题目及要求。11) 退出界面:构造void exit0(),退出程序。4.详细设计4.1数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度图书书号p1-bookno字符串12个字节图书书名p1-name字符串16个字节图书作者p1-writer字符串10个字节出版日期p1-time字符串15个字节为了能实现不受限制的增加图书信息,采用链表的结构保存图书所有信息,在增加图书的基本信息时,创建一个图书信息的节点,将其插入到链表中,示意图如下(用一条链表实现)。 图书信息 图书信息 图书信息 图书信息为此,先声明一个类型为struct book的结构体,然后通过对指针、链表、文件等数据结构的操作,实现对图书信息的添加,修改,删除和查询。其中,结构体定义分别如下:学生信息 struct bookchar bookno12; /*图书书号*/char name16; /*图书书名*/char writer10; /*图书作者*/char time15; /*出版日期*/struct book *next;4.2模块接口设计所有函数模块声明如下:主要函数声明void timu();/题目信息void input(); /录入文件void welcome_menu();void inputBook(); /*从键盘输入某本图书的信息*/void showShuhao(); /*给定书号,显示该图书的信息*/void showShuming(); /*给定书名,显示该图书的信息*/ void doShuhao(); /*给定书号,修改该图书的信息*/void deletBook(); /*给定书号,删除图书的信息*/void listRec(); /显示图书信息 void writeInfo(); /*保存图书的信息*/void exit0(); /*退出*/主要模块的实现系统以主函数int main()为入口,首先调用void input()函数,从文件导入图书信息。然后调用welcome_menu()函数,显示系统欢迎界面。最后调用shouMenu()函数,显示主菜单界面,并使系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。4.3 以下是几个主要模块的流程图:1) 文件读入图书基本信息并打印函数: 导入文件信息 欢迎界面 进入主菜单 更改图书信息 保存信息到本地文件 退出程序2) 主菜单函数:打印主菜单接收用户选项 是否合法否 是 是否为零否是调用对应选项函数 退出程序 3) 键盘输入图书信息 进入void inputBook()函数 接收用户选项是否合法否是 是否保存否是 返回主菜单选项重新输入4)通过书号查询图书信息函数:书名查询同此 提示输入书号 接收输入信息 是否有误按任意键返回 显示学生信息否是 主菜单5)查询课设信息: 显示课设题目信息 返回主菜单6) 给定书号修改图书信息: 提示输入书号 接收输入信息是任意键返回 是否有误填写需修改信息否保存 返回主菜单否填写信息成功,返回菜单 填写需删除信息 接收输入信息 提示输入书号7)给定书号删除图书信息:5.运行结果5.1读取图书信息界面: 5.2 欢迎界面:5.3主菜单界面:5.4给定书号显示图书信息界面:5.5给定书名显示图书信息界面:5.6给定书号修改图书信息界面: 5.7:给定书号删除图书信息界面: 5.8:图书信息显示界面:5.9:显示课设题目信息界面:6.程序调试6.1程序调试(一) 当文件读入后再从键盘输入图书信息时出现的情况的界面 (二) 欢迎界面不整齐的界面:由于有的语句用空格键有的语句用Tab键造成格式不整齐的情况。7.课设总结7.1心得体会在编程的这段时间里,虽说是独自一人,但却真真切切的感受到了c语言的魅力所在,通过它我们可以创建自己想要的界面及效果,每当自己的想法通过它实现时,心中那个兴奋啊。但其中也遇到了一些困难,自己一个人看书查资料,编程序解决,当遇到大难题时和同学一起讨论研究,从其中受益匪浅,特别是刚开始弄课设调试时,错误那多的是散开了花,根本不知从何下手,但随后我就将每个函数单独拿出来调试,这样就可快速的将错误一一找出,在就是从本地文件导入数据时会出现屯屯屯的现象,后来经过不停的尝试终于将根源找出,即本地文件不能有回车或空格,总之,编程让我变得更加细心,编程的成果让我更加喜爱c语言。跟大家说几点经验1.在学习的时候一定要注意这几点,不会的一定要问明白,不管谁能让他教会你知识就是你的了,要学会让知识为我所用。在看书的时候一定要做好标记,特别是不懂的地方一定要标明是什么意思。2.在学习语言的时候一定要记住动手,不要只说不做,这样会行成眼高手低,不管什么样的程序都要亲手做过才能说会了,不要整天说我不会学不会,其实是你不想学,只是你下决心抄一个月程序,我保证我能有大的进步,其实当你抄到一周到两周的时候你就会特想抄,因为你会发现程序你能看懂了,能帮别人调程序了,有一种成就感呀!它会让你更加努力的去学习。3.再一点是我建议大家在上课的时候少看课本,课本要在下课的时候看特别是上课前一定要先看看课本,上课的时候呢就不要看了,不要老师讲到那个题了你马上在书上找,这样不好,会影响你的注意力,其实还真不如注意听老师讲呢?因为你要是一边听一边看课本,你是看到了书上的答案但是老师的思路你没有听到,而要是你不看的话,你听明白了思路,一定是想迫切的看到结果,这个时候看课本才是记的最死的时候,学习要的是就是个效率吗?4.提醒大家学习要讲效率,我发现有很多同学天天学习,每天最早到教室,走的又最晚,别人玩他在学,别人学他也学,可是别的一天30%的学习时间却比他们一天50%以上的学习时间的效率要高上不仅仅是几倍的问题,所以我要说的是不要对别人说你天天在学习,要说你天天在进步,学习不是要你学习了多久是,是要你学了多少东西的,你学一小时还没有别人学一分钟的效率高,难道自己不是浪费时间吗?不想学的时候就不要学,出去玩一会儿再来学说不定会有更好的效果。刚开始学C语言,感到每天都在云里雾里飘着,感觉对这个东西真的好难入手。但学了一段时间后逐渐对C语言有了认识,并能进行简单操作。现在我们又要开始进行课程设计,我的天空突然彻底BLACK了,阿门!不过我不会放弃,前辈们都说:“坚持到底就是胜利!”,恩!我也是这么认为的。万事开头难,只要我找到方法,我一定可以的,嘿,嘿,嘿!不过我们都知道,我们是一定会成功的,因为我们有我们的太阳,至于是谁呢,我就不说了,大家都知道了,是吧!还记得刚开始上开始编程时,那个“error”啊,多得已经无法用“多”来形容了,那是“很多”啊!于是我开始了漫长而繁琐的地毯式搜查,我累的地暗天黑都已无所谓,那个疯狂的人,是我,是我,还是我!海阔凭鱼跃,天高任我飞!我曾经花了整整一个上午的时间来弄一个麻烦的闪烁,那做出来后的感觉,就能用一个字来形容,那就是“爽”,人生最幸福的事也就莫过于此,这小小的成功使我的信心十足,我看到希望了!现代科学技术的飞速发展,改变了人类的生活。作为新世纪的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。新世纪需要既有丰富的现代科学知识,能够独立解决面临的任务,充满活力,有创新意识的新型人才,而掌握计算机知识是最基础的能力,然而要想学好计算机首先要学好C语言。C语言是国内外广泛使用的一种计算机语言。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标效率高、可移植性好,既具有高级语言的许多优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。C语言之所以能存在和发展,并具有较强的生命力,总是有其于其他语言的特点C语言的主要特点如下:1. 语言简洁,紧凑,使用方便,灵活。2. 运算符丰富。3. 数据类型丰富,具有现代语言的各种数据结构。4. 具有结构化的控制语句。5. 语法限制不太严格,程序设计自由度大。6. C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。7. 生成目标代码质量高,程序执行效率高。8. 用C语言编写的程序可移植性好(与汇编语言相比)。计算机具有强大的功能,它现已应用于各行各业,在人们生活的各个领域起着非常重要的作用。它的高速运算能力极大的提高了工作效率,把人们从浩瀚的计算中解放出来,并且在高、尖的大型科学计算和大型信息处理及运算需求高的领域发挥着重要的作用。计算机在人们的日常生活中能帮助人们发送邮件,网上购物,远程学习,休闲娱乐,使人们的生活变得快捷方便,它推动了人类社会的发展与进步,对人类社会生产生活的各个领域产生了极其深刻的影响。正是因为计算机有这些强大的功能,学习计算机知识与计算机交流才显得尤为重要。因此学习C语言就显得更为重要,C语言作为国际上广泛流行的通用程序设计语言,在计算机的研究和应用中已展现出强大的生命力。C语言兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性。虽然我们C语言已有四个月,但一直都重概念、轻实践,这次设计对我们来说是千载难逢的机会,无论如何都要好好把握。再次回想这段时间多少的欢声笑语都是因你与共同努力的伙伴们唤起的,多少山穷水尽的困惑与夜深人静久已难眠的双眼都是因你而起,都是你,都是你,就是你,也是你让我们在键盘中体会到友谊的港湾温情脉脉,友谊的清风灌满征帆。再见了,我的这学期的课程设计。7.2问题与不足程序中存在一些现实中不能实现的功能,例如密码修改功能,删除信息后立即显示剩余信息功能等等。8. 程序源代码/* 头文件及宏定义 */#include /*头文件宏定义*/#include#include#include #include#define LEN sizeof(struct book) /*结构体长度*/ struct book /*定义结构体*/char bookno12; /*定义书号*/char name16; /*定义书名*/char writer10; /*定义作者*/char entertime15; /*定义出版日期*/struct book *next;void mima();void timu(); /*题目信息*/void input(); /*录入文件*/void welcome_menu();void inputBook(); /*从键盘输入某本图书的信息*/void showShuhao(); /*给定书号,显示该图书的信息*/void showShuming(); /*给定书名,显示该图书的信息*/ void doShuhao(); /*给定书号,修改该图书的信息*/void deletBook(); /*给定书号,删除图书的信息*/void listRec(); /显示图书信息 void writeInfo(); /*保存图书的信息*/void exit0(); /*退出*/ int writeinfo_flag,f=0; /*标志变量*/struct book *head=NULL,*p,*p1,*p2,*p3; /*定义结构体指针*/int flag=0; /*功能描述:本函数用于实现菜单显示*/*入口参数:无*/*出口参数:无*/int showMenu() /*主菜单*/ int a; printf(ntt*菜单*n); printf(nttt1、从键盘输入某本图书的信息n); printf(nttt2、给定书号,显示该图书的信息n); printf(nttt3、给定书名,显示该图书的所有信息n); printf(nttt4、给定书号,修改图书的信息n); printf(nttt5、给定书号,删除图书的信息n); printf(nttt6、显示图书信息n); printf(nttt7、保存图书信息n); printf(nttt8、显示题目信息n); printf(nttt0、退出n); printf(nttt输入你的选择(08):n); scanf(%d,&a); return a; /*主函数*/*功能描述:程序的主体*/*入口参数:无*/*出口参数:无*/int main() mima(); input(); /*读取文件信息*/ welcome_menu(); /*欢迎界面函数*/ for(;) switch(showMenu() /*主菜单*/ case 1: system(cls); inputBook();break; case 2: system(cls); showShuhao();break; case 3: system(cls); showShuming();break; case 4: system(cls); doShuhao();break; case 5: system(cls); deletBook();break; case 6: system(cls); listRec();break; case 7: system(cls); writeInfo();break; case 8: system(cls); timu(); break; case 0: system(cls); exit0();return 0; default : getchar(); printf(n 选择错误,请正确输入你的选择(07),:n); printf(n 按任意键返回.n); getchar(); getchar(); system(cls); /*清屏*/ return 0;/*功能描述:本函数用于程序加密*/*入口参数:无*/*出口参数:无*/void mima() /密码验证int i,n;printf(ttt您有三次机会输入密码!ttn);for(i=0;inext =NULL; while(!feof(fp) n+; fscanf(fp,%s%s%s%s, p1-bookno,p1-name,p1-writer,p1-entertime); p2=(struct book *)malloc(LEN); /*开辟一个新单元*/ p1-next =p2; p3=p1; p1=p2; p1-next =NULL; free(p2); /*释放p2*/ p3-next=NULL; printf(n %d项信息输入完毕,按任意键返回.n,n); getchar(); system(cls); /*清屏*/ writeinfo_flag=0; /*设置保存记录标志*/ if( fclose(fp) ) /* 关闭文件 */ printf( Can not close the file!n ); exit(0); /*功能描述:本函数用于键盘输入信息*/*入口参数:无*/*出口参数:无*/*从键盘输入某本图书的信息*/void inputBook() int n,i; if(head!=0) p3=head; while( p3-next!=NULL) p3=p3-next; getchar(); printf(n 图书信息数据库已存在,新建图书信息将接续在信息库的后面,按任意键继续.:n); getchar(); system(cls); /*清屏*/ p3-next=p1=(struct book *)malloc(LEN); /*开辟一个新单元*/ else head=p1=(struct book *)malloc(LEN); /*开辟一个新单元*/ p1-next =NULL; printf(nn 请输入希望建立的图书信息条数n(n1&n10):n); do scanf(%d,&n); if(n10) printf(nn输入范围有误,请重新输入希望建立的图书基本信息条数n(n1&n10):n); while(n10); /*开始建立n条图书信息*/ printf(nn 请每行按 图书书号 图书书名 图书作者 出版时间 的形式输入%d条图书信息记录:n,n); for(i=0;ibookno,p1-name,p1-writer,p1-entertime); p2=(struct book *)malloc(LEN); /*开辟一个新单元*/ p1-next =p2; p3=p1; p1=p2; p1-next =NULL; free(p2); p3-next=NULL; getchar(); printf(n %d项信息输入完毕,按任意键返回.n,n); getchar(); system(cls); /*清屏*/ writeinfo_flag=1; /*清除保存记录标志*/ /*功能描述:本函数用于书号查询*/*入口参数:*/*出口参数:*/void showShuhao() /*按书号显示该图书的信息*/ char num12; p1=head; if(p1=NULL) printf(nn图书信息数据库为空! n); printf(n 按任意键返回.n); getch(); system(cls); /*清屏*/ return ; printf(nn 请输入要查找的图书书号号:n); scanf(%s,num); while(p1!=NULL) if(strcmp(p1-bookno,num )=0) printf(书号:%sn,p1-bookno); printf(书名:%sn,p1-name); printf(作者:%sn,p1-writer); printf(出版时间:%sn,p1-entertime); printf(nn); break; else p1=p1-next ; if(p1=NULL) printf(nn找不到图书信息!n); printf(n 按任意键返回.n); getch(); system(cls); /*清屏*/*功能描述:本函数用于书名查询*/*入口参数:*/*出口参数:*/void showShuming() /*给定书名,显示该图书的信息*/ char a12; if(head=NULL) printf(n没有图书信息,按任意键返回n); getch(); system(cls); return; p1=head; printf(请输入需要查找的书籍:n); scanf(%s,&a); printf(n 图书书号 图书书名 图书作者 出版时间n); while(p1!=NULL) if(strcmp(a,p1-writer)=0) printf(该图书的信息:n %s %s %s %s n, p1-bookno,p1-name,p1-writer,p1-entertime); p1=p1-next; printf(n按任意键返回!.n); getch(); system(cls); /*清屏*/*功能描述:本函数用于给定书号修改信息*/*入口参数:*/*出口参数:*/void doShuhao() /*给定书号,修改该图书的信息*/ char num12; if(head=NULL) getchar(); printf(n 图书信息数据库为空,不能修改,按任意键返回:n); getchar(); system(cls); /*清屏*/ return; p1=head; printf(n 请输入要修改记录的图书书号:n); scanf(%s,num); while(strcmp(num,p1-bookno)!=NULL&p1-next!=NULL) p1=p1-next ; if(strcmp(num,p1-bookno)=NULL) strcpy(p1-bookno

温馨提示

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

评论

0/150

提交评论