您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 课程设计报告书―图书管理系统
高级语言程序设计(1)课程设计专业班级学号姓名完成日期指导教师(签名)1、程序设计说明书【设计题目】图书管理系统【问题描述】图书馆有未知数本书,每个书的情况用该软件通过键盘敲入并以文本文件方式存放在磁盘,内容为六列:书本名称、图书编号、作者、所属类别、出版社、价格。编写程序,可以进行录入、浏览、查询、修改、删除等操作。【基本要求】(1)通过此软件可以将图书的各种情况录入,并且会将各个情况自动保存到磁盘上。(2)通过此软件可以一一浏览图书信息。(3)通过此软件可以对图书进行查询,有两种查询方式,分别为按书名查询和按作者名查询。(4)通过此软件可以对已录入的每本书情况进行修改、删除,并且修改完成后会将更改后的图书情况自动保存到原磁盘文件中。【算法思想】(1)构造一个结构体类型,成员包括六项。五个字符型数组:书本名称、图书编号、作者、所属类别、出版社,一个浮点型变量:价格。(2)录入每本书的情况时,通过循环语句将每本书情况输入到结构体中,并将其写入文本文件中,并存入磁盘。(3)查询某书本情况时,先将文件读出到结构体中,可以通过输入函数,用书名或作者名进行查询。若没有其相关信息,则输出警告语句;若有,通过条件语句输出结果,并将结果显示在屏幕上。(4)修改每本图书情况时,先将文件读出到结构体中,通过字符的比较查找所修改的图书所在处,如果没有找到则输出警告语句,找到后则通过输入输出函数进行修改,并将修改过后的图书情况写入文本文件中,并存入磁盘。【模块化分及调用关系】main函数input函数list函数search函数revise函数append函数exit函数2main函数分别调用:input();//图书信息录入list();//图书浏览信息search();//图书查询信息revise();//图书修改信息append();//图书增添信息【模块流程图】main函数input函数创建文件“图书信息”文件创建成功文件创建失败输入书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price)直到输入完N个物品的信息通过循环,将所输入的内容写入文件中,保存在磁盘里输入a1=a2=a3=a4=a5=a0=aelseinputlistsearchreviseappendexit3list函数search函数读取文件读取文件成功读取文件失败通过循环语句,将各个物品的信息情况进行输出关闭文件读取文件读取文件成功读取文件失败通过switch语句选择查询方式在文件中找到在文件中未找到输出查询到的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price)关闭文件4revise函数append函数读取文件读取文件成功读取文件失败输入要修改的图书名称在文件中找到在文件中未找到输入要修改的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price)再将修改后的内容写入文件关闭文件读取文件读取文件成功读取文件失败输入追加图书的数目在文件中找到在文件中未找到输入要追加的图书信息:书本名称(name)图书编号(number)作者(writer)所属类别(category)出版社(publisher)价格(price)再将增添的内容写入文件关闭文件5【程序使用方法】(1)执行程序,按照界面提示进行选择。输入“1”,进入图书录入。(2)按照程序提示,分别输入书本名称、图书编号、作者、所属类别、出版社、价格。(注:这里默认为有两本图书,可以通过宏定义进行修改。)(3)输入成功后,按任意键返回主界面。输入“2”,进入图书信息浏览,程序自动将各书本信息情况输出到屏幕上。(4)浏览成功后,按任意键返回主界面。输入“3”,进入图书信息查询,按照提示选择一种查询方式,将所查询的本书信息输出到屏幕上。(5)查询成功后,按任意键返回主界面。输入“4”,进入图书信息修改,程序将要修改的物品信息情况输出到屏幕上。(6)修改成功后,按任意键返回主界面。输入“5”,进入图书信息追加,程序将要追加的图书信息情况输出到屏幕上。(7)追击成功后,按任意键返回主界面。输入“0”,退出程序。2、程序上机调试报告【语法错误及其排除】(1)宏定义时在末尾处加上了分号,应该不加分号。(2)scanf中输入地址符号时忘了输入,应该输入地址符号。【算法错误及其排除】(1)定义图书全程变量时直接赋值为0,导致在第二次读取文件时图书数值多出一倍,应该在取消对全程变量的赋值。(2)在查询图书信息时,if语句的子语句缺少了括号,程序没有提示错误,但实际上程序按if紧接的语句执行,应该加上括号。3、程序测试错误【测试数据】挪威的森林村上春树文学上海译文出版社围城钱学森文学上海晨光出版公司【输出结果】6789【收获与体会】4、源程序代码#includestdio.h#includestdlib.h#includestring.h#includeconio.h#defineN2typedefstructsystem{charname[20];//书本名称charnumber[20];//书本编号charwriter[10];//书本作者charcategory[10];//所属类别charpublisher[20];//出版社doubleprice;//书本价格}BOOK;BOOKa;//定义一个全局变量voidinput()/*定义录入函数*/{inti;FILE*fp;system(cls);if((fp=fopen(e:\\file,w))==NULL)10{printf(error!\n);exit(1);}for(i=1;i=N;i++){printf(\t请输入书名:);scanf(%s,&a.name);printf(\t请输入图书编号:);scanf(%s,&a.number);printf(\t请输入作者名:);scanf(%s,&a.writer);printf(\t请输入图书的所属类别:);scanf(%s,&a.category);printf(\t请输入出版社:);scanf(%s,&a.publisher);printf(\t请输入该书的价格:);scanf(%lf,&a.price);fwrite(&a,sizeof(BOOK),1,fp);}fclose(fp);}voidlist()/*定义浏览函数*/{FILE*fp;system(cls);if((fp=fopen(e:\\file,r))==NULL){printf(error!\n);exit(1);}printf(\n\n\n\n\n\n\tbookname\tnumber\twriter\tcategory\tpublisher\tprice\n\n);while(fread(&a,sizeof(BOOK),1,fp)!=0)printf(\t%s\t%s\t%s\t%s\t%s\t%f\n,a.name,a.number,a.writer,a.category,a.publisher,a.price);fclose(fp);printf(\n\tpressanykeytocontinue...);getch();}voidsearch_by_name()/*定义按书名查询*/{FILE*fp;inti;intflag=0;11BOOKb[N];chars2[20];fp=fopen(e:\\file,r);if(fp==NULL){printf(fileopenerror!!\n);exit(1);}for(i=0;iN;i++)fread(&b[i],sizeof(BOOK),1,fp);printf(请输入要查询的书名:);scanf(%s,s2);for(i=0;iN;i++){if(strcmp(s2,b[i].name)==0){flag=1;printf(书名编号作者类别出版社价格\n);printf(%s\t%s\t%s\t%s\t%s\t%lf\t\n\n,b[i].name,b[i].number,b[i].writer,b[i].category,b[i].publisher,b[i].price);getch();break;}}if(flag==0){printf(cannotfound!);getch();}fclose(fp);}voidsearch_by_writer()/*定义按作者名查询*/{inti;intflag1=0;FILE*fp;BOOKb[N];chars3[20];fp=fopen(e:\\file,r);if(fp==NULL){printf(fileopenerror!!\n);exit(1);}12for(i=0;iN;i++)fread(&b[i],sizeof(BOOK),1,fp);printf(请输入要查询的书的作者:);scanf(%s,&s3);for(i=0;iN;i++){if(strcmp(s3,b[i].writer)==0){flag1=1;printf(书名编号作者类别出版社价格\n);printf(%s\t%s\t%s\t%s\t%s\t%lf\t\n\n,b[i].name,b[i].number,b[i].writer,b[i].category,b[i].publisher,b[i].price);getch();break;}}if(flag1==0){printf(cannotfound!);getch();}fclose(fp);}voidsearch()/*定义查询函数*/{intchax;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请选择你想要的查询方式:);scanf(%d,&chax);switch(chax){case1:search_by_name();break;case2:search_by_writer();break;case0:return;}}voidrevise()/*定义修改函数*/13{inti,k;chars1[20];BOOKb[N];FILE*fp;system(cls);if((fp=fopen(e:\\file,w+))==NULL){printf(error!);exit(1);}for(i=0;iN;i++)fread(&b[i],sizeof(BOOK),1,fp);printf(\t\t欢迎进入修改界面\n);printf(\n\n\n\t\t请输入所要修改的图书名:\n);getchar();gets(s1);for(i=0;iN;i++)if(strcmp(s1,b[i].name)==0){k=i;break;}if(iN){printf(未找到!);exit(0);}elseprintf(\t\t请输入书名编号作者类别出版社价格\n);scanf(\t\t\t\t\t\t\t%20s\t%20s\t%10s\t%10s\t%20s\t%lf\n,b[i].name,b[i].number,b[i].writer,b[i].category,b[i].publisher,b[i].price);for(i=
本文标题:课程设计报告书―图书管理系统
链接地址:https://www.777doc.com/doc-3846698 .html