版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言图书信息管理系统苏州科技大学二○一六~二○一七年第一学期电子与信息工程系课程设计报告书课程名称:图书信息系统班级:__电子1612班____学号:1606231______姓名:张立进_________指导教师:任建平______二○一七年三月题目:《图书信息系统》的设计与实现2.功能:(1)每一条记录包括一个图书编号,图书名,作者名,出版社等。(2)图书信息浏览功能:完成全部图书信息记录的显示和浏览,包括排序后、修改后、插入后、删除后信息改变的浏览。(3)图书信息录入功能:完成对“图书编号,图书名,作者名,出版社”信息的录入。(4)图书信息修改功能:对图书信息进行修改并保存。(5)图书信息查询功能:经过输入图书编号查找该图书,并显示该图书所有信息。(6)图书信息插入功能:经过输入某本图书编号进行图书信息的插入并保存。(7)图书信息删除功能:完成删除图书的信息的功能。(8)图书信息排序功能:按图书编号对图书进行从小到大重新排序。(9)图书信息帮助功能:能够给用户提供所有函数的帮助功能,并作相应得介绍。3.要求:(1)整个系统均用C语言实现;(2)利用指针、链表来实现图书信息的数据结构设计;(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)能够将图书信息保存在文件中。(6)能够将图书信息从文件中读取出来。4.设计内容:整个系统除了主函数外,另外还有13个函数,,包括主函数在内,以实现9大功能:图书信息浏览功能,图书信息录入功能,图书信息修改功能,图书信息查询功能,图书信息插入功能,图书信息删除功能,图书信息排序功能,图书信息帮助功能,退出系统功能。其功能流程图如下所示:stuctbook结构体voidhelp()帮助voidallinformation()图书信息浏览主函数mainmainmenustuctbook结构体voidhelp()帮助voidallinformation()图书信息浏览主函数mainmainmenuvoidinput()图书信息录入voideditbook()图书信息修改voidquerybook()图书信息查询voiddeletebook()图书信息删除voidinsertbook()图书信息插入voidsortbook()图书信息排序各个函数的详细设计说明分别如下:4.1创立主函数voidmain()该函数经过选择各选项,完成相应的功能,当选择退出选项时,退出循环,具体的选择项有:【1】图书信息浏览功能,【2】图书信息录入功能,【3】图书信息修改功能,【4】图书信息查询功能,【5】图书信息插入功能,【6】图书信息删除功能,【7】图书信息排序功能,【8】图书信息帮助功能,【9】退出系统功能。4.2结构体struct定义了一个图书信息的结构体,包括charauthor[20];charbookname[20];charpublisher[20];intnum;等。操作流程:1进入主界面选择图书信息浏览2输出所有已存储的所有图书信息3退回主界面4.3编写浏览数据记录函数voidallinformation()该函数能够经过选择相应的功能对已经输入并保存的所有的图书信息进行浏览,而且退出后还能保存记录,以备下次浏览时信息没有丢失。操作流程:1进入主界面选择图书信息浏览2输出所有已存储的所有图书信息4.4编写录入数据记录函数inputbook()该函数能够添加新的图书信息,而且在退出后能够自动保存,当重新浏览所有图书信息时,新添加的图书信息也在其中,且经过if(y!=1)来判别是1录入,0不录入,来实现是否继续录入的功能。操作流程:1进入录入界面2输入相关信息(图书编号、名字、作者名、出版单位)保存退出。4.5编写修改数据记录函数editbook()该函数能够完成对已有的图书信息“图书编号,图书名,作者名,出版社”进行重新修改并加以保存,实现图书信息的修改,为以后的保存函数,浏览函数,查询函数,排序函数,删除函数,修改函数等功能的实现提供了基础。操作流程:1进入修改界面2修改所要修改的图书的编号、作者名等相关信息。4.6编写查询数据记录函数querybook()该函数运用for语句实现对图书编号信息的查找输出,并显示到屏幕上,实现图书信息的查找功能。操作流程:1进入查询界面2经过输入图书编号输出显示指定图书匹配信息4.7编写插入数据记录函数insertbook()经过voidinsertbook()插入函数来实现插入,先清屏system("cls");然后经过输入插入前图书编号后进行新图书信息的输入最终图书信息插入功能,退出后自动保存能够再次浏览。操作流程:1进入删除界面2输入所要删除的图书编号后自动删除。4.8编写删除数据记录函数deletebook()该函数经过voiddeletebook()删除函数来实现图书信息的删除,经过输入图书编号查找到该图书之后删除。退出后再次浏览所有图书信息时便看不到已删除的图书信息。操作流程:1进入插入界面2输入所要插入位置的图书编号,然后插入新图书的相关信息。4.9编写数据记录排序函数voidsortbook()该函数定义了i,j运用冒泡法对图书信息进行排序,对图书的编号按照从小到大的顺序来排序的。最好显示已排序好的的图书信息。操作流程:1进入插入界面2输入所要插入位置的图书编号,然后插入新图书的相关信息。3退回主界面4.10编写帮助函数voidhelp()该函数是简单的帮助功能,介绍了各个模块的功能,使用户快速了解该系统的功能作用。具体代码如下:voidhelp(){ printf("\t|━━━━━━━帮助━━━━━━━|\n");printf("下方显示的是您所需的帮助信息:\n"); printf("\n");printf("《如果选择1,则进入第一个选项(1).图书信息浏览》:完成全部图书信息记录的显示和浏览,包括排序后、修改后、插入后、删除后信息改变的浏览。\n"); printf("《如果选择2,则进入第二个选项(2).图书信息录入》:完成对图书号,图书名,作者名,出版社信息的录入。\n"); printf("《如果选择3,则进入第三个选项(3).图书信息修改》:对图书信息进行修改并保存。\n");printf("《如果选择4,则进入第四个选项(4).图书信息查询》:经过输入图书编号查找该图书,并显示该图书所有信息。\n"); printf("《如果选择5,则进入第五个选项(5).图书信息插入》:经过输入某本图书编号进行图书信息的插入并保存。。\n"); printf("《如果选择6,则进入第六个选项(6).图书信息删除》:完成删除图书的信息的功能\n");printf("《如果选择7,则进入第八个选项(7).图书文件排序》:按图书编号对图书进行从小到大重新排序。\n"); printf("《如果选择9,则进入第九个选项(8).帮助功能》:提供一些帮助给用户使用,以备更好的使用。\n"); printf("《如果选择0,则进入第零个选项(9).退出系统》:用来退出系统,以备下次再使用。\n"); printf("\n\n请按任何键返回,谢谢!\n"); fflush(stdin); getchar();}调试分析在此次的C语言程序设计中,我的程序开始有很多的错误,例如errorC2440:'=':cannotconvertfrom'int'to'int[10]',是我忽略不能把整型转换成数组。插入功能出现插入信息后却浏览不到,后来在插入后面加了一段保存文件的代码后,插入功能才得以实现,还有因为我的粗心把写文件写成了读文件导致删除功能无法实现。经过我和其它同学重复的检查重复的修改,最终完成了。源程序#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#defineNULL0#definea100intnow=0;structbook{charauthor[20];/*作者名*/charbookname[20];/*图书名*/charpublisher[20];/*出版单位*/charday[100];/*出版时间*/floatmoney;/*价格*/intnum;/*图书编号*/};structbookb[a];/*系统主菜单*/voidmainmenu(){ FILE*fp1,*fp2; inti; system("cls"); printf("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n"); printf("\n\n"); printf("\t\t+━━━━━━━━━━━━━━━━━━━━━━━━+\n");printf("\t\t||欢迎使用图书信息管理系统||\n");printf("\t\t|┗━━━━━━━━━━━━┛|\n");printf("\t\t||\n");printf("\t\t|●[1]图书信息浏览|\n");printf("\t\t||\n");printf("\t\t|●[2]图书信息录入|\n");printf("\t\t||\n");printf("\t\t|●[3]图书信息修改|\n");printf("\t\t||\n");printf("\t\t|●[4]图书信息查询|\n");printf("\t\t||\n");printf("\t\t|●[5]图书信息插入|\n");printf("\t\t||\n");printf("\t\t|●[6]图书信息删除|\n");printf("\t\t||\n"); printf("\t\t|●[7]图书信息排序|\n");printf("\t\t||\n");printf("\t\t|●[8]帮助|\n");printf("\t\t||\n"); printf("\t\t|●[9]退出系统|\n"); printf("\t\t||\n"); printf("\t\t+━━━━━━━━━━━━━━━━━━━━━━━━+\n");printf("请输入您的选择:");/*library.txt里面读出now的值*/ if((fp2=fopen("D:\\library.txt","rb"))!=NULL) { fscanf(fp2,"%d",&now); fclose(fp2); }/*b.txt里面读出一组数据的值*/if((fp1=fopen("D:\\b.txt","rb"))!=NULL) { for(i=0;i<now;i++) fread(&b[i],sizeof(structbook),1,fp1); fclose(fp1); } }/*图书信息浏览*/voidallinformation(){ inti;charturn; printf("\t|━━━━━━━图书信息浏览━━━━━━━|\n");printf("浏览所有图书信息\n");printf("图书编号\t图书名\t\t作者名\t\t出版单位\t\t出版时间\t\t\价格n\n");for(i=0;i<now;i++){printf("%d\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\n\n",b[i].num,b[i].bookname,b[i].author,b[i].publisherb[i].[day]b[i].[money]);}printf("\t按任意键返回主菜单.");/*返回主菜单*/turn=getch();mainmenu();}/*图书信息录入*/voidinputbook(){ printf("\t|━━━━━━━图书信息录入━━━━━━━|\n"); inti=now;FILE*fp1,*fp2;charturn,judge; do { printf("请输入添加第%d本图书的信息:\n",i+1); printf("\n请输入图书名:\n");scanf("%s",b[i].bookname);printf("\n请输入图书编号:\n");scanf("%d",&b[i].num);printf("\n请输入作者名:\n");scanf("%s",b[i].author); printf("\n请输入出版单位:\n");scanf("%s",b[i].publisher);printf("\n请输入出版时间:\n");scanf("%s",b[i].day);printf("\n请输入价格:\n");scanf("%s",b[i].money); i++; now=i;/*library.txt里面写入now的值*/if((fp2=fopen("D:\\library.txt","wb"))!=NULL){fprintf(fp2,"%d",now);fclose(fp2);}printf("是否继续添加?(y/n)\n");judge=getch(); }while(judge!='n');/*book.txt里面写入一组数据的值*/if((fp1=fopen("D:\\b.txt","wb"))!=NULL){for(i=0;i<now;i++)fwrite(&b[i],sizeof(structbook),1,fp1);fclose(fp1); }else printf("cannotopenthefile\n");printf("\t请按任意键返回.");/*返回主菜单*/turn=getch();mainmenu();}/*图书信息修改*/voideditbook(){ FILE*fp1;inti,e_num,j; chare_author[10],e_publisher[10],e_bookname[10],judge,turn; structbookebook; printf("\t|━━━━━━━图书信息修改━━━━━━━|\n"); do { printf("请输入需要修改的图书编号\n");scanf("%d",&ebook.num);for(i=0;i<now;i++)if(ebook.num==b[i].num)/*如果编号相同,说明图书存在,能够进行修改*/{ printf("\n图书编号:\n"); scanf("%d",&e_num); printf("\n图书名:\n"); scanf("%s",e_bookname); printf("\n作者名:\n"); scanf("%s",e_author); printf("\n出版单位:\n"); scanf("%s",e_publisher);printf("\n出版时间:\n"); scanf("%s",e_day);printf("\n价格:\n"); scanf("%s",e_money); b[i].num=e_num; strcpy(b[i].bookname,e_bookname); strcpy(b[i].author,e_author); strcpy(b[i].publisher,e_publisher);strcpy(b[i].publisher,e_day);strcpy(b[i].publisher,e_mony); printf("\n图书信息修改成功,请继续选择!\n"); printf("\n\n"); break;} if(i==now) printf("没有此图书\n"); printf("是否继续修改下本图书?(y/n)\n"); judge=getch();/*b.txt里面写入一组数据的值*/if((fp1=fopen("D:\\b.txt","wb"))!=NULL) {for(j=0;j<now;j++) fwrite(&b[j],sizeof(structbook),1,fp1);fclose(fp1); }else printf("cannotopenthefile\n");}while(judge!='n'); printf("\t按任意键返回主菜单."); turn=getch(); mainmenu();}/*图书信息查询*/voidquerybook(){ intnumber,flag=1,i; charjudge,turn; printf("\t|━━━━━━━图书信息查询━━━━━━━|\n"); printf("请输入要查询的图书编号:"); scanf("%d",&number);for(i=0;i<now;i++) { if(number==b[i].num) { flag=0; printf("图书编号\t图书名\t\t作者名\t\t出版单位\t\t出版时间\t\t价格\n\n"); printf("%d\t\t%s\t\t%s\t\t%s\t\t%s\t%s\n\n",b[i].num,b[i].bookname,b[i].author,b[i].publisher.b[i].day.b[i].money); break; } } if(flag!=0) { printf("不能找到该图书信息!"); } printf("\t按任意键返回主菜单."); turn=getch(); mainmenu();}/*图书信息插入*/voidinsertbook(){ FILE*fp2,*fp1; inti,j,h; charturn,judge; structbookib; printf("\t|━━━━━━━图书信息插入━━━━━━━|\n"); do { h=now; printf("请输入插入之前的图书编号\n"); scanf("%d",&ib.num); for(i=0;i<now;i++) if(ib.num==b[i].num)//如果编号相同,说明图书存在,进行插入; { now++; for(j=now-2;j>=i;j--) { b[j+1]=b[j]; } printf("\n请输入图书名:\n");scanf("%s",b[i].bookname);printf("\n请输入图书编号:\n");scanf("%d",&b[i].num);printf("\n请输入作者名:\n");scanf("%s",b[i].author); printf("\n请输入出版单位:\n");scanf("%s",b[i].publisher);printf("\n请输入出版时间\n");scanf("%s",b[i].day);printf("\n请输入价格:\n");scanf("%s",b[i].money); break; } if(i==h) printf("没有本图书\n"); printf("是否继续插入?(y/n)\n"); judge=getch(); }while(judge!='n');/*library.txt里面读出now的值*/ if((fp2=fopen("D:\\library.txt","wb"))!=NULL) { fprintf(fp2,"%d",now); fclose(fp2); }/*b.txt里面读出一组数据的值*/if((fp1=fopen("D:\\b.txt","wb"))!=NULL) { for(i=0;i<now;i++) fwrite(&b[i],sizeof(structbook),1,fp1); fclose(fp1); } printf("\t按任意键返回主菜单."); turn=getch();mainmenu();}/*图书信息删除*/voiddeletebook(){ intnumber; charturn; intt=now; inti;FILE*fp2,*fp1; system("cls");/*清屏*/ printf("\t|━━━━━━━图书信息删除━━━━━━━|\n"); printf("\n请输入要删除的图书编号:"); scanf("%d",&number); for(i=0;i<now;i++) { if(number==b[i].num) { for(;i<now-1;i++) { strcpy(b[i].bookname,b[i+1].bookname); b[i].num=b[i+1].num; strcpy(b[i].publisher,b[i+1].publisher); strcpy(b[i].author,b[i+1].author); } printf("\n删除图书文件成功!\n"); now--; break; } } if(i==t) printf("\n对不起!文件不能找到!\n"); /*library.txt里面读出now的值*/ if((fp2=fopen("D:\\library.txt","wb"))!=NULL) { fprintf(fp2,"%d",now); fclose(fp2); }/*b.txt里面读出一组数据的值*/if((fp1=fopen("D:\\b.txt","wb"))!=NULL) { for(i=0;i<now;i++) fwrite(&b[i],sizeof(structbook),1,fp1); fclose(fp1); } else printf("cannotopenthefile\n"); printf("\t按任意键返回主菜单."); turn=getch();mainmenu();}/*图书信息排序*/voidsortbook(){inti,j;charturn;structbookcb; printf("\t|━━━━━━━图书信息排序━━━━━━━|\n");for(j=0;j<now-1;j++)for(i=0;i<now-1-j;i++)if(b[i].num>b[i+1].num){cb=b[i]; b[i]=b[i+1]; b[i+1]=cb; }printf("图书排序(按照图书编号从小到大排序)\n");printf("编号\t\t图书名称\t\t图书作者\t\t图书出版社\t\t出版时间\t\t价格\n");for(i=0;i<now;i++)printf("%d\t\t%s\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t%s\n\n",b[i].num,b[i].bookname,b[i].author,b[i].publisher,b[i].day,b[i].money);printf("\t按任意键返回主菜单.");turn=getch();mainmenu();}/*帮助*/voidhelp(){ printf("\t|━━━━━━━帮助━━━━━━━|\n");printf("下方显示的是您所需的帮助信息:\n"); printf("\n");printf("《如果选择1,则进入第一个选项(1).图书信息浏览》:完成全部图书信息记录的显示和浏览,包括排序后、修改后、插入后、删除后信息改变的浏览。\n"); printf("《如果选择2,则进入第二个选项(2).图书信息录入》:完成对图书号,图书名,作者名,出版社信息的录入。\n"); printf("《如果选择3,则进入第三个选项(3).图书信息修改》:对图书信息进行修改并保存。\n");printf("《如果选择4,则进入第四个选项(4).图书信息查询》:经过输入图书编号查找该图书,并显示该图书所有信息。\n"); printf("《如果选择5,则进入第五个选项(5).图书信息插入》:经过输入某本图书编号进行图书信息的插入并保存。。\n"); printf("《如果选择6,则进入第六个选项(6).图书信息删除》:完成删除图书的信息的功能\n");printf("《如果选择7,则进入第八个选项(7).图书文件排序》:按图书编号对图书进行从小到大重新排序。\n"); printf("《如果选择9,则进入第九个选项(8).帮助功能》:提供一些帮助给用户使用,以备更好的使用。\n"); printf("《如果选择0,则进入第零个选项(9).退出系统》:用来退出系统,以备下次再使用。\n"); printf("\n\n请按任何键返回主菜单,谢谢!\n"); getchar();}/*********************************结束**************************************//*主程序*/voidmain(){ intn; mainmenu();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东云浮市新兴县招募见习岗位人员2人备考题库完整参考答案详解
- 2026浙江宁波华侨温德姆至尊豪廷大酒店招聘2人备考题库带答案详解(黄金题型)
- 2026云南玉溪市文化馆城镇公益性岗位招聘3人备考题库及参考答案详解ab卷
- 2026中煤财务有限责任公司招聘2人备考题库附答案详解【黄金题型】
- 2026浙江药科职业大学特殊专业技术岗位招聘100人备考题库含答案详解【基础题】
- 2026浙江宁波市鄞州区公立学校招聘编外员工1人备考题库【真题汇编】附答案详解
- 2026贵州峰鑫建设投资(集团)有限公司招聘演艺人员2人备考题库及完整答案详解【历年真题】
- 2026福建南平延平区南山镇招聘专职网格员1人备考题库含完整答案详解(各地真题)
- 2026浙江温州桐君堂药材有限公司招聘营业员1人备考题库及一套完整答案详解
- 2026江西九江庐山市人才集团招聘行政辅助人员1人备考题库附参考答案详解【培优】
- 图书馆志愿者培训课件
- 2026年许昌电气职业学院单招职业倾向性测试题库附答案
- 云南省2025年春季学期期末普通高中学业水平合格性考试《信息技术》试卷(解析版)
- 2025年公安部交管局三力测试题库及答案
- 飞灰填埋场安全培训报告课件
- 2025年度社工《社会工作实务》考试题库(附答案)
- GB/T 15072.4-2025贵金属合金化学分析方法第4部分:钯含量的测定
- 安全防护用品使用培训课件
- 矿业可持续供应链管理-洞察及研究
- 英语口语课件自我介绍
- DB4404T 27-2022 城市道路交通安全与管理设施设置技术规范
评论
0/150
提交评论