C语言图书管理系统课设报告_图书管理系统课设报告
C语言图书管理系统课设报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“图书管理系统课设报告”。
程序设计课设论文
论文题目: 图书信息管理系统
学 院: 年 级: 班 级: 姓 名: 学 号: 指导教师:
软件学院 2015级
软件工程1522班 韩汀
201515614100 邵回祖
2016年6月14日-2016年6月22日
目录
1.需求分析---------1
2.概要设计---------2
3.详细设计---------3
4.调试分析---------8
5.核心源程序清单和执行结果------------------------8
6.课程设计总结----19
1.需求分析
(1)程序的功能:
图书信息管理系统涉及5项功能,包括录入,浏览,查询,删除和修改,其中查询可通过书名或作者两种途径进行。
图书信息录入:将图书信息写入程序,包括序号,书名,作者,出版社,出版日期和价格。
图书信息浏览:将所有已录入的图书信息按序号排序列出。图书信息查询:可根据图书的书名或作者查找该书的具体信息。图书信息删除:可根据序号删除指定图书信息。图书信息修改:可根据序号修改图书所有信息。
(2)输入输出要求:
无
(3)测试数据:高等数学 1 高等教育出版社 2014.7 31.20 2 概率论 2 高等教育出版社 2008.6 37.40 3 线性代数 3 高等教育出版社 2007.5 17.30 4 C程序设计 4 清华大学出版社 2010.6 33.00 1
2.概要设计:(1)数据的存储结构
(2)系统流程: 2
3.详细设计:
(1)信息录入函数: 用scanf函数输入定义的书籍结构体的序号,书名,作者,出版社,出版时间和价格。建立10本书籍的书库,输入完毕,返回主函数。
(2)信息浏览函数:
(3)信息查询函数:
这里分两个项目,一个是通过书名进行查询,另一个是通过作者进行查询。在定义查询函数时使用switch函数:
通过书名进行查询:
通过作者进行查询:
(4)信息删除函数:
根据序号删除图书,操作成功后显示删除成功,任意键跳转。如果序号输入错误显示图书不存在。
(5)信息修改函数:
在此函数中,根据序号选择图书修改,存在一个问题,就是难以选择其中一项进行修改,只能全部修改。
出现的问题:只能全部进行修改:4.调试分析:
(1)在初次运行中,发现系统闪退问题存在于第2,3,4,5项中,输入序号点击回车系统闪退。最后在每一项最后加入system(“pause”);使得闪退问题修复。
(2)在最初编写代码过程中,始终输入:FILE *fp;
if((fp=fopen(“library”,“r”))==NULL)最后修改为:FILE *fp;
if((fp=fopen(“library.doc”,“r”))==NULL)
(3)在信息修改一栏中,目前仍无法实现单独修改一条信息的功能,只能根据序号,对序号所对应的全部图书信息进行修改。
if(i!=library.count){
mbook book;
printf(“ntt请输入修改后此图书的信息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();5.核心源程序清单和执行结果:
(1)源代码:
#include #include #include typedef struct { char number[10];//书号 char name[20];//书名 char author[20];//作者 char publish[50];//出版社 char time[20];//出版时间 float price;}mbook;
typedef struct { int count;//书的本数
mbook book[100];//最大可有100本书 }mlibrary;
mlibrary library;void save()//保存图书信息。{ 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);}
void putin()/*定义录入函数*/ {
int y=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();} void lookup(){
int i;
system(“cls”);
printf(“图书号t图书名t作者名t出版社t出版日期t图书价格n”);for(i=0;i
fflush(stdin);getchar();system(“pause”);} void search_by_author()/*定义按作者名查询*/ { int i;char s3[20];int flag=1;printf(“请输入要查询的书的作者: ”);fflush(stdin);scanf(“%s”,s3);printf(“图书号t图书名t作者名t出版社t出版日期t图书价格n”);for(i=0;i
void search()/*定义查询函数*/ { int a;system(“cls”);/*进行清屏*/ printf(“tt******************************n”);printf(“开始查询n”);printf(“ttt1---------------search_by_namen”);printf(“ttt2---------------search_by_writern”);printf(“ttt0---------------exitn”);printf(“tt******************************n”);printf(“tt请选择你想要的查询方式:”);fflush(stdin);scanf(“%d”,&a);switch(a){ case 1: search_by_name();break;case 2: search_by_author();break;case 0: return;} system(“pause”);} void del()/*定义删除函数*/ { int i;char number[10];system(“cls”);/*清屏*/ printf(“n Please type in the number of the book you want to delete:”);fflush(stdin);scanf(“%s”,number);for(i=0;i
void update()//修改图书信息 { int i;char number[10];system(“cls”);/*清屏*/ printf(“n Please type in the number of the book you want to delete:”);fflush(stdin);scanf(“%s”,number);for(i=0;i
mbook book;
printf(“ntt请输入修改后此图书的信息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(“n cannot found!n”);
fflush(stdin);
getchar();
system(“pause”);}
int main(){
int a;
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);do { system(“cls”);printf(“nnnnntttt图书信息管理系统ttttn”);printf(“tt*********************************************n”);printf(“ttt1------------------图书信息录入n”);printf(“ttt2------------------图书信息浏览n”);printf(“ttt3------------------图书信息查询n”);printf(“ttt4------------------图书信息删除n”);printf(“ttt5------------------图书信息修改n”);printf(“ttt0-----------------退出图书管理系统n”);printf(“tt*********************************************n”);printf(“ttPlease Enter Choose: ”);fflush(stdin);scanf(“%d”,&a);switch(a){ case 1:
putin();
break;case 2:
lookup();
break;case 3:
search();
break;case 4:
del();
break;case 5:
update();
break;case 0:
printf(“nn退出nn”);
break;default:
printf(“n序号不对n”);} }while(a!=0);save();return 0;}(2)运行结果:
在codeblocks中编译、运行目标程序后,进入到主界面,显示如图1:
进入主界面后,显示信息选择操作,根据相应序号选择相应操作,输入1后进入图书信息录入选项,按顺序录入相应信息,完成后按1继续录入,按0结束录入,显示如图2:
按0返回主界面,进入到信息浏览界面,可查看已录入的全部图书信息(下图中只录入一本图书信息),查看结束后按任意键返回主界面,显示如图3:
根据选项进入信息查询界面,有两个选择,分别为根据书名和根据作者,按1进入根据书名进行查询,可显示相应图书信息,显示如图4:
根据作者进行查询,以查询无果为例,显示cannot found!显示如图5:
按5进入图书信息修改界面,输入序号显示图书信息并进行修改,按顺序依次修改信息(目前无法对单独某一条信息进行修改),显示如图6:
按4进入信息删除界面,输入相应序号后显示删除成功,按任意键返回,显示如图7:
在信息删除界面中,输入序号,如果没有存储该序号图书信息,显示cannot found!显示如图8:
6.课程设计总结:
在课程设计过程中,由于对代码和各种概念不是很清楚,所以对结构体变量的引用非常生疏。在调试程序的过程中,也存在许多问题,最后一一修改。通过自己对书本知识一遍又一遍的复习,自己感觉做系统不再那么的复杂,包括框架的建立,界面设计,调用函数等等。经过一个星期的锻炼,自己感觉到了明显的提高,以后还需多练习,多锻炼,加强对C语言综合知识的理解与应用。
请老师审阅我的课程设计报告。谢谢
软件学院
1522班
韩汀
201515614100