课程设计图书信息管理最终版1.docx
- 文档编号:26825706
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:29
- 大小:283.19KB
课程设计图书信息管理最终版1.docx
《课程设计图书信息管理最终版1.docx》由会员分享,可在线阅读,更多相关《课程设计图书信息管理最终版1.docx(29页珍藏版)》请在冰豆网上搜索。
课程设计图书信息管理最终版1
德州学院计算机系
课程设计报告
实习名称C语言课程设计_
设计题目图书信息管理系统______
实习时间2012.3.5-2012.3.11
专业班级2012级信息管理与信息系统___
指导老师
教学单位(盖章)
小组分工情况:
学号
姓名
分工
二0一二年五月二十五日
目录
1实习目的1
2需求分析1
2.1模块划分及功能1
2.2题目分析2
3概要设计2
3.1总体设计方案说明:
2
3.2程序采用的结构:
2
3.3各个功能的函数:
3
4.详细设计3
4.1主函数的算法设计3
4.2各子函数的算法设计4
4.2.1图书信息录入函数4
4.2.2图书信息浏览函数5
4.2.3图书信息的查询函数5
4.2.4图书信息的删除函数6
4.2.5图书信息的修改函数7
5.调试与测试结果分析8
5.1图书信息录入9
5.2图书信息浏览10
5.3图书信息查询11
5.4图书信息删除13
5.5图书信息修改14
5.6退出图书信息管理系统15
5.7上机调试感想15
6总结15
参考文献16
学生信息管理系统的设计与实现
1实习目的
课程设计是课程学习后的一个综合性实践教学环节,是对课程理论和课程实验的综合和补充。
它主要培养综合运用已学过的理论和技能去分析和解决实际问题的能力,对加深课程理论的理解和应用、切实加强实践动手能力和创新能力具有重要意义。
课程设计是我们必不可少的一个综合性理论实践环节。
为了融会贯通本课程所学专业理论知识,完成一个较完整的程序设计与计算和程序调试过程,以加深对所学理论的理解与应用,进一步认识和熟悉C语言程序设计中的语句的应用和用途,了解解决实际问题的一般过程,培养综合运用基础理论知识和专业知识去解决实际应用设计问题的能力。
通过综合性课程设计训练,达到以下的目的和要求:
1、结合该课程中所学的C语言理论知识,设计一个综合的程序解决具体的实际问题,按要求独立完成设计方案,培养独立分析与解决问题的能力;
2、学会查阅相关手册和资料,通过查阅手册和资料,进一步熟悉常用方法的用途和技巧,并掌握这些方法的具体含义和如何使用这些方法解决实际问题;
3、掌握综合性程序设计的基本过程;
4、掌握综合性程序开发的调试技术,熟悉常用调试方法的使用;
5、认真撰写总结报告,培养严谨的作风和科学的态度。
2需求分析
2.1模块划分及功能
根据图书信息管理的需要,建立一个图书管理系统,可将程序分为以下几个模块:
图书信息录入、图书信息浏览、图书信息查询、图书信息删除、图书信息修改、退出图书信息系统。
应该实现的主要功能有:
1系统以菜单方式工作
2图书信息录入功能--输入
3图书信息浏览功能--输出
4查询和排序功能--算法
(1)按书名查询
(2)按作者名查询
5图书信息的删除与修改
2.2题目分析
根据题目的要求,应当把图书信息用结构形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后,吧图书信息送到文件中。
在程序中需实现图书信息录入、浏览、查询、删除和修改等功能的操作,所以需要建立相应的模块来实现,并且还需要提供选择菜单来实现功能,在运行时达到预定的目的。
3概要设计
3.1总体设计方案说明:
3.2程序采用的结构:
typedefstruct
charnumber[10];定义登录号
charname[20];定义书名
charauthor[20];定义作者名
charpublish[50];定义出版单位
chartime[20];定义出版时间
floatprice;定义价格
intcount;定义书的本数
3.3各个功能的函数:
voidputin()定义录入函数
voidsearch_by_name()定义按书名查询
voidsearch_by_author()定义按作者名查询
voidsearch()定义查询函数
voiddel()定义删除函数
voidupdate()修改图书信息
4.详细设计
4.1主函数的算法设计
首先运行程序,进入菜单,然后选择操作(运用swith语句),调用各子函数。
在返回操作中运用while语句进行控制返回菜单。
图2程序总体运行功能示意图
4.2各子函数的算法设计
4.2.1图书信息录入函数
程序运行后输入数字“1”,进行图书信息录入功能
图3图书信息录入函数示意图
4.2.2图书信息浏览函数
在主菜单进行操作,输入2进入图书信息浏览界面,图书信息进行显示,按任意键返回;
4.2.3图书信息的查询函数
voidsearch()选择查询方式,1按书号查询,2按书名查询,然后定位,在调用输出函数;
图4图书信息查询函数示意图
4.2.4图书信息的删除函数
在主菜单进行操作,输入4进入图书信息删除界面,图书信息提示输入要删除信息的编号,按要求输入索要删除图书信息的编号,按回车键进行返回;
图5图书信息删除函数示意图
4.2.5图书信息的修改函数
在主界面进行操作,输入5进入图书信息修改界面,按显示信息的提示,输入要修改图书信息的编号,进行修改,继续按显示信息的提示依次修改,修改完成后按回车键返回,可输入2进入图书信息浏览进行检验;
图6图书信息修改函数示意图
5.调试与测试结果分析
在vc的环境下调试程序,进入菜单界面。
(如图7所示)
图7菜单界面
5.1图书信息录入
从菜单界面输入“1”进入图书信息管理系统的主界面。
(如图8、图9所示)
图8图书信息录入
图9录入图书信息
5.2图书信息浏览
输入”0”返回菜单主界面,再输入“2”进行图书信息浏览功能;(如图10、图11所示)
图10图书信息浏览
图11浏览图书信息
5.3图书信息查询
按回车返回菜单界面并输入“3”进行图书信息查询功能;(如图12所示)
图12图书信息查询
界面显示1通过姓名查询2通过作者查询3退出(如图13、图14所示)
图13按书名进行查询
图14按作者名进行查询
如果输入信息不符将出现如下界面(如图15所示):
图15查询结果错误
5.4图书信息删除
返回并输入4进行图书信息删除功能;(如图16、图17所示)
图16图书信息删除
图17显示删除后的信息
5.5图书信息修改
返回菜单界面并输“5”进行图书信息修改功能;(如图18所示)
图18图书信息修改
返回并查询“图书信息浏览”(如图19所示)
图19图书信息浏览
5.6退出图书信息管理系统
输入数字“0”退出图书信息管理系统
5.7上机调试感想
在调试过程中出现了许多错误!
特别是查询,修改和删除这三个函数的调试花了很多时间,主要是文件的写入与读出以及菜单调试的问题,还有建立新的链接也出现问题,说明自己对程序的执行过程理解不够深刻。
6总结
通过这次课程设计,使我们更加熟练的使用C语言进行编程,并且复习并巩固了以前学到的知识。
编程能力也有提高,尤其是在使用函数、指针、数组、结构体、文件等方面有了很大进步,而且还学到了课本中没有的知识。
只有经过实际操作,进行实际编程训练才能更好地发现问题,运用课本知识,在解决实际的问题中发现不足。
在程序中的函数是实现模块化编程的基础,它使程序变得方面易懂,对修改起了很大作用,降低了编程的难度。
一个函数就是一个功能,它使各个功能之间有了一定的独立性,但也有了一定的联系性。
在程序的调试过程中,也加深了对函数的理解,并更好的运用了函数。
结构体的使用,为本程序提供了很大方便,也提高了程序的可读性,结构数组方便了对数据的管理。
并且,在课程设计的过程中,也加深了我们的团队意识,同学间通过讨论,并运用所学的知识,为了我们共同的目的而努力,收获了很多。
参考文献
[1]谢延红,王付山.C语言程序设计教程[M].北京:
国防工业出版社,2010.152-171.
[2]石柱,何新贵.优序法在软件评价中的应用[J].计算机工程与设计,2002,23
(2):
45-46.
[3]杨路明.C语言程序设计(第2版)[M].北京:
邮电大学出版社,2005-12-01.
[4]谭浩强.C程序设计(第二版)[M].清华大学出版社,1998.
[5]王新,孙雷.C语言课程设计[I].清华大学出版社,2009-12-01.
[6]崔武子.C程序设计辅导与实训[M].清华大学出版社,2004.
附录
#include
#include
#include
typedefstruct{
charnumber[10];//书号
charname[20];//书名
charauthor[20];//作者
charpublish[50];//出版社
chartime[20];//出版时间
floatprice;
}mbook;
typedefstruct{
intcount;//书的本数
mbookbook[100];//最大可有100本书
}mlibrary;
mlibrarylibrary;
voidsave()//保存图书信息。
{
FILE*fp;
if((fp=fopen("library.doc","w"))==NULL)
{
printf("\n不能保存图书信息\n");
return;
}
fwrite(&library.count,sizeof(int),1,fp);
fwrite(library.book,sizeof(library.book[0]),library.count,fp);
}
voidputin()/*定义录入函数*/
{
inty=1;
system("cls");
while(y)
{
printf("\t请输入您的书籍的书号:
");
scanf("%s",library.book[library.count].number);
printf("\t请输入书名:
");
scanf("%s",library.book[library.count].name);
printf("\t请输入作者名:
");
scanf("%s",library.book[library.count].author);
printf("\t请输入出版社:
");
scanf("%s",library.book[library.count].publish);
printf("\t请输入出版时间:
");
scanf("%s",library.book[library.count].time);
printf("\t请输入该书的价格:
");
fflush(stdin);
scanf("%f",&library.book[library.count].price);
library.count++;
printf("\n是否继续录入(1.继续;0,退出录入):
");
fflush(stdin);
scanf("%d",&y);
if(y!
=1)
{
y=0;
break;
}
}
save();
}
voidlookup()
{
system("cls");
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(inti=0;i { printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } fflush(stdin); getchar(); } voidsearch_by_name()/*定义按书名查询*/ { chars2[20]; intflag=1; printf("\n请输入要查询的书名: "); fflush(stdin); scanf("%s",s2); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(inti=0;i if(strcmp(s2,library.book[i].name)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if(flag) { printf("cannotfound! "); } fflush(stdin); getchar(); } voidsearch_by_author()/*定义按作者名查询*/ { chars3[20]; intflag=1; printf("请输入要查询的书的作者: "); fflush(stdin); scanf("%s",s3); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(inti=0;i if(strcmp(s3,library.book[i].author)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if(flag) { printf("cannotfound! "); } fflush(stdin); getchar(); } voidsearch()/*定义查询函数*/ { inta; system("cls");/*进行清屏*/ printf("\t\t******************************\n"); printf("开始查询\n"); printf("\t\t\t1---------------search_by_name\n"); printf("\t\t\t2---------------search_by_writer\n"); printf("\t\t\t0---------------exit\n"); printf("\t\t******************************\n"); printf("\t\t请选择你想要的查询方式: "); fflush(stdin); scanf("%d",&a); switch(a) { case1: search_by_name(); break; case2: search_by_author(); break; case0: return; } } voiddel()/*定义删除函数*/ { charnumber[10]; system("cls");/*清屏*/ printf("\nPleasetypeinthenumberofthebookyouwanttodelete: "); fflush(stdin); scanf("%s",number); inti; for(i=0;i { if(strcmp(number,library.book[i].number)==0)break; } if(i! =library.count) { for(;i { 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].author,library.book[i+1].author); strcpy(library.book[i].time,library.book[i+1].time); library.book[i].price=library.book[i+1].price; } library.count--; } else printf("\ncannotfound! \n"); save(); fflush(stdin); getchar(); } voidupdate()//修改图书信息 { charnumber[10]; system("cls");/*清屏*/ printf("\nPleasetypeinthenumberofthebookyouwanttodelete: "); fflush(stdin); scanf("%s",number); inti; for(i=0;i { if(strcmp(number,library.book[i].number)==0) { printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); break; } } if(i! =library.count) { mbookbook; printf("\n\t\t请输入修改后此图书的信息\n"); printf("\t请输入图书号: "); scanf("%s",book.number); printf("\t请输入图书名: "); scanf("%s",book.name); printf("\t请输入作者名: "); scanf("%s",book.author); printf("\t请输入出版社: "); scanf("%s",book.publish); printf("\t请输入出版时间: "); scanf("%s",book.time); printf("\t请输入该书的价格: "); fflush(stdin); scanf("%f",&book.price); strcpy(library.book[i].name,book.name); strcpy(library.book[i].number,book.number); strcpy(library.book[i].publish,book.publish); strcpy(library.book[i].author,book.author); strcpy(library.book[i].time,book.time); library.book[i].price=book.price; save(); } else printf("\ncannotfound! \n"); fflush(stdin); getchar(); } voidmain() { FILE*fp; if((fp=fopen("library.doc","r"))==NULL) { printf("\n不能打开图书信息库\n"); fp=fopen("library.doc","w+"); printf("\n初始化图书信息库,初始化之后要重启程序\n"); library.count=0; fwrite(&library.count,sizeof(int),1,fp); fclose(fp); return; } fread(&library.count,sizeof(int),1,fp); fread(library.book,sizeof(library.book[0]),library.count,fp); fclose(fp); inta; do { system("cls"); printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n"); printf("\t\t*********************************************\n"); printf("\t\t\t1------------------图书信息录入\n"); printf("\t\t\t2------------------图书信息浏览\n"); printf("\t\t\t3------------------图书信息查询\n"); printf("\t\t\t4------------------图书信息删除\n"); printf("\t\t\t5------------------图书信息修改\n"); printf("\t\t\t0-----------------退出图书信息系统\n"); printf("\t\t*********************************************\n"); printf("\t\tPleaseEnterChoose: "); fflush(stdin);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 图书 信息管理 最终版