《C语言图书信息管理系统实验报告(共16页).doc》由会员分享,可在线阅读,更多相关《C语言图书信息管理系统实验报告(共16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上课 程 报 告课 程 名 称: 程序设计实践 专 业 班 级 : 学 生 姓 名 : 学 号 : 任 课 教 师 : 阎娟 学 期 :2011-2012学年第二学期 课程报告任务书题 目图书信息管理系统主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:(1)图书信息录入功能(图书信息用文件保存)输入v(2)图书信息浏览功能输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式): l 按书名查询 按作者名查询 按照价钱排
2、序 按出版时间排序等等(4)图书信息的删除与修改扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。(4)模糊查询 (5)综合查询 (6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。任务要求一、提交材料应包括:(1)系统源代码 (2)课程报告二、整个设计过程具体要求(1)需求分析 要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;(2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函
3、数名、参数、返回值等)(3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。成绩评定报告撰写情况(30分)系统完成情况(30分)答辩情况(40分)总分内容20分规范程度5分程序测试5分基本功能20分扩展功能10分自述情况10分答辩情况30分成绩评定教师:专心-专注-专业1 需求分析 随着当今社会发展,信息化水平逐步提高,对图书管理有了新的要求,因此,编写一个信息管理系统是十分必要的。为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用C语言编写图书管理系统。本系统主
4、要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、出版社、出版日期、价格、库存数量等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作。整个程序实现链表操作,对图书信息的操作逐个进行,一个图书信息的更改不应影响其他的图书记录。 2 概要设计 1,设计表示:
5、(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的密码设置、录入、存储、查询、添加、删除、修改、排序等功能。(2) void Main_menu();这是一个指针函数,它主要实现了链表的创建,并且在创建过程中从文件读取信息到链表中,以用于后面其他函数的操作。 (3) void mainFind()、void Delete()、void change()、void write()、struct node * read()、void Sor
6、ting_order()、#define S 123、#define A 这六个函数时整个图书管理系统的全部菜单函数。void Delete()、void change()、void write()、struct node * read()、在此可以选择删除、修改、保存,读取图书,排序等操作。void mainFind();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。#define S 123、#define A 分别是学生登陆和管理员登陆的密码。 (4) void Print();这个函数为图书的遍历,浏览所有的图书。 (5) void Find_booknumber
7、()、void Find_bookname()、void Find_author()、void Find_press();这三个函数为查询图书信息函数,void Find_booknumber();按书号查询、; void Find_bookname()按书名查询、void Find_author() ;按作者查询、void Find_press();按出版社查找。(6)void Sorting_booknumber(),按书号排序。void Sorting_price(),按价格排序。void Sorting_publication_date(),按出版日期排序。void Sorting_n
8、umber(),按馆藏数量排序。 3实现注释:这个实用的小型图书管理程序程序以链表操作完成,并实现文件信息的录入和保存等功能。实现了图书管理的基本功能,包括了图书的录入、存储、查询、添加、删除、修改、排序等功能。查询时可按书名、编号、作者等方式查询,找到后输出这本书的所有信息。在添加图书信息后,还增加了链表排序操作,并输出整个链表,方便用户检查信息。系统中主要的数据结构就是图书的信息,包含编号、书名、作者、出版社、出版时间、价格、馆藏数量等,在处理过程中各项可以作为一本图书的不同属性来进行处理。3 详细设计1-1 定义变量struct nodeint book_number;/书号char b
9、ook_name25;/书名char press50;/出版社char author20;/作者int price;/价格char publication_date20;/出版日期int number;/馆藏数量struct node * next;struct node * head = NULL;/在此定义一个全局变量head,其它函数就不需要再返回head;但这样做,程序中的函数的可用性就不是太高int Total = 0; /记录图书总数1-2函数的定义void Creat();/录入图书信息struct node* Insert(struct node* p,struct node*
10、 head0);/插入图书信息void Delete();/删除图书信息void change();/修改图书信息void write();/保存图书信息struct node * read();/读取图书信息void amend(struct node * p);/辅助修改选项 void Print();/遍历图书信息void Print_by_one(struct node * p);/单项遍历void Main_menu();/登陆界面void Administrator_menu0();/第一次进入系统的管理员菜单void Administrator_menu1();/第n次进入系统的
11、管理员菜单void Student_menu();/学生菜单void mainFind();/查找菜单void Find();/精确查找图书void Find0();/模糊查找图书int str(char a,char b);/模糊查找函数void Find_booknumber();/按书号查找void Find_booknumber0();/按书号模糊查找void Find_bookname();/按书名查找void Find_bookname0();/按书名模糊查找void Find_author(); /按作者查找void Find_author0(); /按作者模糊查找void Fi
12、nd_press(); /按出版社查找void Find_press0(); /按出版社模糊查找char *transform(char str ,int n);/将整数转化为字符存入字符数组返回void Sorting_order();/排序void Sorting_help(struct node* p1,struct node* p2);/辅助排序void Sorting_booknumber();/按书号排序void Sorting_price();/按价格排序void Sorting_publication_date();/按出版日期排序void Sorting_number();/
13、按馆藏数量排序#define S 123 /学生密码#define A /管理员密码int T = 0;/选择菜单1-3信息的录入void Creat()/录入图书信息struct node *tail,*p;int book_number;/书号char choice;printf(该操作将清除书库中所有书目的信息!n);printf(nttt你想继续操作吗?(Y/N)n);while(1)printf(请选择:);if(scanf(%c,&choice)getchar();if(choice = Y|choice = y)system(cls);break;else if(choice =
14、 N|choice = n)system(cls);return;elseprintf(请按要求输入!n);continue;elseprintf(输入的不是字母,请按照要求重新输入!n);continue;printf(ttt提示:请输入你要输入的数据,当书号为数字0时结束!nn);printf(请输入书号:);scanf(%d,&book_number);getchar();/吸收回车符,清空缓冲区,这样才能正常执行清屏操作while(book_number != 0)p = (struct node *)malloc(sizeof(struct node);printf(请输入书名:);
15、scanf(%s,p-book_name);getchar();printf(请输入作者:);scanf(%s,p-author);getchar();printf(请输入出版社:);scanf(%s,p-press);getchar();printf(请输入价格:);scanf(%d,&p-price);getchar();printf(请输入出版时间:);scanf(%s,p-publication_date);getchar();printf(请输入馆藏数量:);scanf(%d,&p-number);getchar();putchar(n);p-book_number = book_n
16、umber;p-next = NULL;if(head = NULL)head = tail = p;elsetail-next = p;tail = p;Total+;printf(请输入书号:);scanf(%d,&book_number);printf(tttt图书信息录入成功!nn);1-4按编号查询void Find_booknumber()/按书号查找int book_number;struct node *p1,*p2;printf(请输入你要查找的图书书号:);scanf(%d,&book_number);printf(ttn你要找的书为:n);printf(tt-n);pri
17、ntf(tt| 书号| 书名| 作者| 出版社| 价格| 出版时间| 馆藏数量|n);printf(tt-n);if(head-book_number = book_number)Print_by_one(head);p1 = head;p2 = head-next;while(p2 != NULL)if(p2-book_number = book_number)Print_by_one(p2);p1 = p2;p2 = p2-next;elsep1 = p2;p2 = p2-next;1-5按出版时间排序void Sorting_publication_date()/按出版日期排序struc
18、t node *p1,*p2,*p3,*p4,*p5,*p6,*p7;int x=1;for(p1=head;p1-next!=NULL;p4=p1,p1=p1-next)p3=p1;for(p2=p1-next,p5=p7=p2;p2!=NULL;p7=p2,p2=p2-next)if(strcmp(p3-publication_date , p2-publication_date) 0)p3=p2;p5=p7;if(p3!=p1)if(x&p1=head)p6=p1-next;p1-next=p3-next;p3-next=p6;p5-next=p1;head=p3;p1=p3;x=0;e
19、lsep6=p1-next;p1-next=p3-next;p3-next=p6;p4-next=p3;p5-next=p1;p1=p3;4 调试分析 问题1:对于函数是否返回函数值,并怎样返回指针? 解答:对于void开头的函数,没有返回值,在程序中可以直接调用。有指针返回值的函数,直接返回指针名。问题2:在使用变量前,指针变量和一般变量如何初始化?解答:在使用一般变量前,忘记初始化,例如:定义n,在下面程序循环中,没有替n附初值,结果导致乱码。指针变量*p,在不同情况下,p值要赋予NULL或head。问题3:指针之间的传递赋值如何辨别顺序?最终返回值又是哪一个?解答:指针的传递赋值是从赋值
20、号的右端赋值于赋值号的左端。例如:p=head,表示指针p指向head的位置。最终的返回值应该是赋值号左端的指针。5 测试结果登录系统图书的查找图书信息的录入按价格排序浏览图书信息6 课程心得总结在这一个学期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性。将理论和实践结合在一起,用先进的计算机工具方便人们的生活。C语言程序的编写首先要从大局考虑,把自己编写整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序。编写的程序从理论上来说并没有错,但以上机就问题不断。甚至有些课本上的知识照搬不变,也不能得到正确的结果。有时一个程序改了一遍又一遍,但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试时却屡屡出错。经反复的修改后,结果正确了,这时所有的乏味都显得那么无力,一切都是值得的。开发一套系统,最重要的是细心,并且思考要全面,结合实际,充分考虑到客户的需求和现实意义。不管什么系统,只用运用到实际应用中,才具有先现实意义。 所以c语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。