当前位置:文档之家› C语言程序设计----图书信息管理系统

C语言程序设计----图书信息管理系统

.《程序设计基础(C)》课程设计报告图书信息管理系统***名:**学号:*********班级:电力工程与管理1201班***师:***日期:2013.07.05兰州交通大学新能源与动力工程学院C语言课程设计报告一、设计目标 (2)二、总体设计 (2)三、详细设计 (3)五、分析及结论............................................................................................................... 错误!未定义书签。

六、参考文献 (11)七、附录 (12)源程序清单 (12)一、设计目标图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

设计的图书信息管理系统,应当具备能提供以下功能:1、系统以菜单方式工作2、图书信息录入功能--输入3、图书信息浏览功能--输出4、图书信息查询功能--算法(查询方式:1按书名查询.2.按作者名查询)5、图书信息的删除与修改二、总体设计1.程序设计组成框图2.程序流程图`图书信息管理系统系统登录模块菜单选择模块图书信息录入模块图书信息浏览模块图书信息查询模块图书信息修改模块设计:朱斌设计:周勇设计:闫鹏设计:张旭东设计:杨国峥设计:王文模三、详细设计1、系统登录模块(f1())——本函数由朱斌设计1)函数的功能:验证管理员信息,进入菜单功能界面2)函数的入口:从main()的switch()结构中进入,即choice的值为1时进入函数,然后提示用户通过键盘对输入管理员账户及密码。

3)函数调用关系:被主函数调用。

由switch()开关结构中进入,并在文中无返回值的空值void 函数。

4)函数的出口:当验证失败,提示重新输入。

当验证成功,通过“ENTER”键,跳出switch()开关函数,进入菜单功能模块,继续执行选择结构。

程序流程图:图书登录系统界面2.菜单功能选择模块(f2())——本函数由周勇设计1)函数功能:主要作用是提示用户操作,体现模块化思想,主要是显示出菜单让用户选择要进行的任务。

2)函数入口:从主函数void中的adm_servelist()进入函数,这是直接被主函数void()调用的。

3)函数调用关系:被主函数调用。

并在文中无返回值的空值void函数。

4)函数的出口:执行完所有的printf()函数后自动退出该函数。

图书管理系统添加图书删除图书信息浏览信息查询修改图书创建图书退出管理系统主函数的流程图菜单界面3.修改与删除模块(f3()) ——本函数由 王文模 设计图书删除1)函数功能:利用while 循环和 if 语句和scanf getchar search change del 函数,完成对图书信息(分类名 出版单位 出版时间 价格)的修改和删除2)函数入口:从主函数main()中的system("cls"); /*清屏命令*/menu(); /*菜单函数提示用户怎样选择*/进入函数,这是直接被主函数main()调用的。

3)调用关系:void change(int x)是改变图书信息,它里面又调用了 book_search(); 4)函数出口:执行完所有的printf()函数后自动退出该函数。

程序框架图开始输入n,判断是否0—6?输入n,调用各个模块的函数结束YN图书修改该模块实现按照用户需求,将需要修改的图书名输入,进行for循环查找是否有此书,若无,则显示未找到,退出,若有,则显示输入新的图书信息,开始输入修改的信息,进行for循环开始录入,替换原文件信息结束显示“修改成功”图书修改界面图书删除界面4.图书信息浏览(f4())——本函数由张旭东设计1)函数的功能: 显示图书的信息(编号·价格·作者·出版单位·出版时间·类别)2)函数的入口:从主函数main()中的system("cls"); /*清屏命令*/menu(); /*菜单函数提示用户怎样选择04信息浏览/进入函数,这是直接被主函数main()调用的。

3)函数调用关系:被主函数调用。

并在文中无返回值的空值void函数。

4)函数的出口:执行完所有的printf()函数后自动退出该函数。

框架图图书浏览流程图图书浏览5. 图书查询 ——本函数由杨国峥设计1)函数的功能: 按着书名查询与作者名查询,输出排序结果。

2)函数的入口: 程序从main()的while()开关结构中进入,即choice 的值为4时进入该函数,开始进入该函数,进入函数后,首先打开文件,然后利用“printf ()”选择按书名查询与作者名查询,若flag=1或flag=2则有此书。

若flag=0则无此书,并退出查询。

3)函数调用关系:被主函数调用。

由while()开关结构中进入,并在文中无返回值的空值void 函数。

4)函数的出口: 当输出查询结果用printf()标准输出到屏幕上,然后结束该函数,而执行主函数main()中“break;”跳出while()开关函数,继续执行if 选择结构。

按图书名查询图书信息查询按书名查询(1) EXIT(0) 按作者名查询(2)04信息查询输入a,判断a 是否为0~2?a=0,退出回到主菜单 a=1,则调用search-by-name 按书名查询输入书名,若有此书则输出此书信息,若没有,则输出file open error!!a=2,则调用search-by-writer 按作者名查询输入作者名,若有此书则输出此书 信息若没有,则输出file open error按作者名查询6.输入模块——本函数由闫鹏设计1)函数的功能:利用for循环语句和scanf、gets、getchar函数完成对结构数组的输入,存放图书信息(图书编号、图书名、作者名、出版社、类别、出版时间、价格)。

2)函数的入口:从主函数main()中的system("cls"); /*清屏命令*/menu(); /*菜单函数提示用户怎样选择*/进入函数,这是直接被主函数main()调用的。

3)函数调用关系:被主函数调用。

并在文中无返回值的空值void函数。

4)函数的出口::执行完所有的printf()函数后自动退出该函数。

程序框架图:录入数据请输入图书编请输入图书名请输入作者名请输入出版社请输入类别请输入出版时请输入价格图书信息输入四、调试与测试调试方法:打开Microsoft Visual C++ 6.0,先将各个功能函数的的内容清空,只保留主函数main(),然后编译检验main()函数中是否有错,如果没有错误,再连接、运行。

确认main()函数一切无误后,然后加入功能函数menu()函数与f1()函数,由于menu()函数比较简单,所以与f1()函数一起进行调试,f1()函数中主要注意读取文件,与写入文件,这都是二进制的形式。

若menu()函数与f1()函数编译、连接、运行没问题,继续加入f2()函数,就这样的方法依次检查调试f3()函数、f4()函数。

当所有的功能函数都加上且正确无误时,就可以进入下一个环节—程序的测试。

测试方法:运行程序,然后进入销售管理系统的界面,在这里需要做的就是把自己当成一个公司的程序使用者,来对该程序进行使用,看该程序有哪些方面用着不够爽,把这些问题依次整理出来,再对源程序进行修改,在这个过程中也需要对程序进行调试,不过不必将各个功能函数的的内容清空再进行如上述的调试方法,而是,改一部份运行一次,看是否有无。

如f1()函数有误,则先修改f1()函数,一块一块的进行修改,就是遵循C语言的模块化设计原理,若所有的都改过来了,且运行无误,那就大功告成了。

在调试中遇到的问题:在调试过程中,我们遇到诸多小问题,但都在我们共同讨论后解决了。

1、问题:标点符号在输入的时候,使用的是中文输入法,这种错误一般都难以发现,让修改的时候找不到目标。

解决方法:用“替换”。

如果程序中的error很多,不管error是什么,先将标点替换成英文的标点。

2、问题:调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误。

而且,这种错误让我们不知道怎么修改。

但是我们的程序的确正确。

解决方法:将源程序保存(save),然后关掉Microsoft Visual C++ 6.0,重新启动Microsoft Visual C++ 6.0,五、分析及结论A、在设计中我们实现了设计目标的所有内容即:1、系统以菜单方式工作2、图书信息录入功能--输入3、图书信息浏览功能--输出4、图书信息查询功能--算法(查询方式:1按书名查询.2.按作者名查询)5、图书信息的删除与修改B、其中遇到了以下问题:不能清晰的建立设计模块,不会修改出现的错误等等。

解决方案:向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。

不可避免地程序中肯定依然存在者某些问题在应用中不断提高自己的能力,攻克遇到的困难。

C、该程序的不足:函数较复杂,界面不美观。

D、实践心得经过一个多星期的编译原理课程设计,在我们一组的共同的努力下,顺利完成该课程设计。

通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。

老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。

现在终于深刻的了解了这句话。

经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对C程序原理也了有更深的理解。

知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。

通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。

能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。

除了课堂外,课程设计是最能学到东西的,最考验人的。

在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。

经过这次课程设计,让我们对C++这门语言有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。

只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。

在编写本程序时,在网上寻找的参考程序起到了很大的启发与参考作用。

六、参考文献1、《C语言程序设计.谭浩强版》2、《C语言上机指导》3、《Microsoft Visual C++ 6.0指南》4、附:在编写本程序时,在网上寻找的参考程序起到了很大的启发与参考作用。

相关主题