C语言图书管理系统实
验报告
IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】
课程报告
课程名称:程序设计实践 专业班级:信息类1110 学生姓名: 学号: 任课教师:
学期:20101-2012学年第二学期 课程报告任务书
题目 图书信息管理系统 开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能: (1)图书信息录入功能(图书信息用文件保存)--输入 (2)图书信息浏览功能--输出 主要 (3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式): 内容 ①按书名查询②按作者名查询③按照价钱排序④按出版时间排序等等 (4)图书信息的删除与修改 扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理(2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。(4)模糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。 一、提交材料应包括:(1)系统源代码(2)课程报告 二、整个设计过程具体要求 (1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系; 任务 (2)设计过程要求学生进一步明确各模块调用关系,进一步完善模要求 块函数细节(函数名、参数、返回值等) (3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试; (4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。 报告撰写情况(30分) 内容 规范程度 成绩 20分 5分 评定 程序测试 5分 系统完成情况(30分) 基本功扩展功能20分 能10分 答辩情况(40分) 自述情答辩情况 况10分 30分 总分 成绩评定教师:
1需求分析
这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。通过这些信息使之提供以下功能:
(1)图书信息创建功能。其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。(图书信息用文件保存)。
(2)图书信息查看功能。用来查看各项图书信息。 (3)图书信息查找功能。通过已知信息来查找想要的图书。 (4)图书信息的删除。可以删除特定图书。 (5)图书信息的修改。可以修改图书的各项信息。
(6)图书信息的排序功能。按图书信息对录入的图书进行排序。
(7)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能
2概要设计
⑴数据结构
图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
开始 主菜单 输入 书 创建书名名 查找 作 者 组 合 删除修改显示退出 作者组合菜单
函数的原型:voidmenu()
函数的功能:调用菜单,使用各项功能 程序: voidmenu(){
printf(\"\\n\\n*******************************<图书信息管理系
统>*******************************\\n\");
printf(\"-------------------------------------主菜单-------------------------------------\\n\");
printf(\"\\\<1;创建图书信息>\\n\");
printf(\"\\\<2;查找图书信息>\\n\"); printf(\"\\\<3;删除图书信息>\\n\"); printf(\"\\\<4;修改图书信息>\\n\"); printf(\"\\\<5;显示图书信息>\\n\"); printf(\"\\\<6;按出版时间排序>\\n\"); printf(\"\\\<0;退出>\\n\");
printf(\"------------------------------------------------------
--------------------------\\n\"); }
2.新建文件
函数的原型:intReadinfoFromFile() 函数的功能:建立文件储存数据 程序
intReadinfoFromFile()f\
fscanf(fp,\"%d\if(p->type==1) {
if(head==NULL){ head=p; p->next=NULL; }
else{ }
else{
p->next=head; head=p; } }
}
if(head_==NULL){
head_=p; p->next=NULL; } else{
p->next=head_; head_=p; } }
fclose(fp); return0;
3.创建图书信息
函数的原型:intchuangjian() 函数的功能:记录图书的各项信息 程序:
intchuangjian()找图书信息 函数的原型:voidchazhao()
函数的功能:通过书名查找、作者查找、组合查找三种方式查找图书信息。 程序:
voidchazhao()n按作者名查找请按2.\\n按组合查询请按3.\\n\");
scanf(\"%d\if(i==1) {
printf(\"请输入要查找的书名:\"); scanf(\"%s\
for(p=head;p!=NULL;p=p->next)f\\n\ }
if(head==NULL)printf(\"<查无此书>\\n\");
if(b)printf(\"<查找的图书信息不存在!>\\n\");f\\n\ }
if(head==NULL)printf(\"<查无此书>\\n\");
if(b)printf(\"<查找的图书信息不存在!>\\n\");f\\n\ }
if(head==NULL)printf(\"查无此书\\n\");
if(b)printf(\"<查找的图书信息不存在!>\\n\");除图书信息
}
}
}
函数的原型:voidshanchu()
函数的功能:通过书名确定图书,进而删除该书 程序:
voidshanchu()n\"); system(\"PAUSE\"); }
6.修改图书信息
函数的原型:voidxiugai()
函数的功能:通过书名确定图书,进而修改该书的各项信息
程序:
voidxiugai()f\\n\
printf(\"<是否确定修改?0(是)or1(否)>\\n\"); scanf(\"%d\if(a==0){
printf(\"**********请重新输入信息*********\\n\"); printf(\"请输入书名:\");
scanf(\"%s\
printf(\"请输入作者名:\");
scanf(\"%s\
printf(\"请输入书号:\");
scanf(\"%s\
printf(\"请输入分类:\");
scanf(\"%s\printf(\"请输入出版社:\"); scanf(\"%s\printf(\"请输入出版时间:\"); scanf(\"%d\
printf(\"请输入价格:\");
scanf(\"%f\p->type=news;
printf(\"\\n\\n<提醒:信息修改成功!>\\n\\n\"); } }
if(b==1)printf(\"<没有您要修改的信息!>\\n\"); }
system(\"PAUSE\");
}
7.显示图书信息 函数的原型:voidshow()
函数的功能:显示已存图书的各项信息 程序:
voidshow()f\\n\system(\"PAUSE\"); } }
8.图书排序
函数的原型:voidpaixu()
函数的功能:按出版时间的不同将记录的图书排序 程序:
voidpaixu()f\\n\
}
system(\"PAUSE\"); }
4调试分析
此次编写的图书管理系统,相对于以前学到的程序,它要大得多,也要复杂的多。涉及到多个模块的调用,每个模块都给我带来一些困惑。其中感觉图书查找和排序这两个最为麻烦。查找模块涉及到指针和链表问题后来在同学的帮助下得以解决,我就模仿按书名查找的方法另外设计出了两种查找方法。排序中的for循环刚开始不是太熟练,出了很多错误。程序设计好后,数据的输出格式不太规范,而且各模块也出现了一些小问题,经过修改最后运行的结果基本上达到了预期的目的。由于准备的有点仓促,没能把一些细节优化好,而且没能加入一些其他功能,比如图书借阅模块,那样程序将会比较完美。
5测试结果
测试的部分数据 书名 大学物理 时间简史 仰望 作者 罗益民 霍金 饶雪漫 书号 a1 b2 c3 分类 教科类 科普类 文学类 出版社 出版时间 价格 58 45 15 北京邮电大学出版社 湖南科学技术出版社 海南出版社 登录号任意输入
下面为测试的部分结果截图
。
6课程心得总结
通过这次亲自动手编写C语言图书管理系统,从中收获了很多。很多学过的知识得以巩固,对链表、数组指针、结构体等知识有了更深一步的了解。编写的过程中我也借鉴别人设计的一些程序,从中发现了自己的一些不足,在构建框架和编写源程序上面的一些问题。在源程序编写好后,对源程序的检测花费了我很多时间,这也算是锻炼了我的耐心。在检测中发现的一些细节上的毛病和粗心这个坏习惯都需要我加以改正。同时同学对我的帮助也比较大,有些问题很感谢他们对我的帮助。亲自编写了这个大型程序后,我领悟了“实践出真知”这个道理,体会到了C语言的巨大用处,对C语言有了更浓厚的兴趣。在今后我也会更加深入的学习C语言,打好稳固的基础,努力掌握这门技术,能够编写出更多更好的程序。
因篇幅问题不能全部显示,请点此查看更多更全内容