图书馆管理系统课程设计Word格式.docx
- 文档编号:14380255
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:20
- 大小:235.14KB
图书馆管理系统课程设计Word格式.docx
《图书馆管理系统课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统课程设计Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
加深对C语言课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,使学生通过系统分析、系统设计、编程调试、,写实验报告等环节,初步掌握软件系统设计的方法和步骤,训练灵活运用程序设计语言进行软件开发的能力,提高分析问题和解决问题的能力,提高程序设计水平,培养必要的工程实践动手能力。
四、程序内容
数据的录入数据存储、数据读写数据添加
数据删除数据查询数据修改
数据排序数据打印
五、详细设计及运行结果
功能模块的说明
1输入信息模块:
函数名为input,分为三个小的模块,即在程序目录下创建文件保存数据。
②浏览模块:
函数名为scan,分别打印出输入的:
图书号,图书名,作者,出版社,出版时间,价格。
③查询模块:
函数名为search,分为两个小的模块,即分别以图书号(search_num)或图书名(search_name)查询。
④添加信息模块:
函数名为add,读出信息,读入结构体,插入信息后,覆盖写入源文件。
⑤删除细细模块:
函数名为del,打开文件读出信息至结构体后,先查询并确认,然后跳过该信息覆盖写入源文件。
修改信息模块:
函数名为change,通过strcmp(number,library.book[i].number)检索出要修改的图书号,通过scanf分别输入各成员的值,在通过strcpy将各值覆盖到原成员的值上,就完成了修改。
排序模块:
函数名为sort,通过比较price的大小排序,用for循环将小的放在前面。
main函数:
调用以上各功能模块,实现程序功能。
六、调试情况,设计技巧及体会
调试情况:
经过若干次调试,程序已基本达到设计功能要求。
设计技巧:
通过数组及字符串的比较实现函数功能。
心得体会:
通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。
在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。
在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。
当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力,争取把知识学得更扎实、更全面。
不足及改进:
没有用到指针及链表,是本程序最大的不足,程序也存在其他缺点,比如排序是不能按字符进行排序,是功能有局限性;
使用数组使程序结构简单,可用性不强。
以后应对程序进行改进,比如部分功能用链表实现,改进排序方案等。
八、附录:
源代码
#include<
stdio.h>
stdlib.h>
string.h>
typedefstruct
{
charnumber[10];
/*图书号*/
charname[20];
/*书名*/
charwriter[20];
/*作者*/
charpublish[50];
/*出版社*/
chartime[20];
/*出版时间*/
floatprice;
/*价格*/
}mbook;
/*图书类型标识符*/
intcount;
/*数量统计*/
mbookbook[100];
}mlibrary;
mlibrarylibrary;
voidsave()
FILE*fp;
if((fp=fopen("
library.txt"
"
w"
))==NULL)
{
printf("
\n不能保存图书信息\n"
);
return;
}
fwrite(&
library.count,sizeof(int),1,fp);
fwrite(library.book,sizeof(library.book[0]),library.count,fp);
}
voidinput()/*输入模块*/
{
inty=1;
system("
cls"
while(y)
{
\t请输入您的书籍的书号:
"
scanf("
%s"
library.book[library.count].number);
\t请输入书名:
library.book[library.count].name);
\t请输入作者名:
library.book[library.count].writer);
\t请输入出版社:
library.book[library.count].publish);
\t请输入出版时间:
library.book[library.count].time);
\t请输入该书的价格:
fflush(stdin);
%f"
&
library.book[library.count].price);
library.count++;
\n是否继续录入(1.继续;
0,退出录入):
%d"
y);
if(y!
=1)
{
y=0;
break;
}
save();
voidscan()/*输出模块*/
inti;
printf("
图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"
for(i=0;
i<
library.count;
i++)
%s\t%s\t%s\t%s\t%s\t%6.2f\n"
library.book[i].number,library.book[i].name,library.book[i].writer,library.book[i].publish,library.book[i].time,library.book[i].price);
fflush(stdin);
getchar();
voidsearch()/*查询模块*/
inta;
\t\t****************************\n"
\t\t请输入查询方式\n"
\t\t1------------按书名查询\n"
\t\t2------------按书号查询\n"
\t\t0------------退出\n"
scanf("
a);
switch(a)
case1:
search_name();
break;
case2:
search_num();
case0:
intadd()/*添加模块*/
intsum=0;
chara;
while(a=='
y'
||a=='
Y'
)
要添加本新书吗?
y/n\n"
%c"
if(a=='
n'
N'
break;
else
library.count++;
else
\n输入不正确,请重新输入\n"
printf("
\n新书信息:
\n"
scan();
input();
returnsum;
}
voiddel()/*删除模块*/
\n请输入要删除的图书号:
number);
if(strcmp(number,library.book[i].number)==0)
if(i!
=library.count)
for(;
library.count-1;
strcpy(library.book[i].name,library.book[i+1].name);
strcpy(library.book[i].number,library.book[i+1].number);
strcpy(library.book[i].publish,library.book[i+1].publish);
strcpy(library.book[i].writer,library.book[i+1].writer);
strcpy(library.book[i].time,library.book[i+1].time);
library.book[i].price=library.book[i+1].price;
library.count--;
\ncannotfound!
voidchange()/*修改模块*/
\n请输入要修改的图书号:
if(strcmp(number,library.book[i].number)==0)
library.book[i].numb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 课程设计