图书管理系统_第1页
图书管理系统_第2页
图书管理系统_第3页
图书管理系统_第4页
图书管理系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书管理系统Preparedon22November2020C语言程序设计图书管理系统学生:专业:电子信息科学与技术学号:指导老师:设计要求课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。通常,课程设计中的问题比平时的习题复杂得多,也更接近实际。课程设计着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。题目:图书销售管理系统设计图书信息包括:序号、书名、作者、出版单位、价格。试设计一图书销售管理系统,使之能提供以下功能:1、系统以菜单方式工作2、图书信息录入功能(图书信息用文件保存)--输入3、图书信息的删除与修改功能4、图书信息浏览功能--输出5、查询功能--算法:按书名/作者查询6、排序功能--算法按书名排序按价格排序独立完成需随程序设计与实现完成一份描述该过程的报告,供考核时参考。考核方式:上机面试。在完成程序和文档后,根据题目要求和同学自行完成的文档,可能考核设计思路、代码分析、修改代码、增加功能、跟踪调试等各方面。设计思路.主目录.录入.图书查询目录.排序查询序号排序查询:价格排序查询:5.自定义查询.全部查询.修改.删除.替换购买设计思路录入:INSERT()函数,因为录入的数据最后要保存进文件中,以供查询、购买等功能的使用,所以在文件已开始if判断语句打开文件a,打开文件也就定义了指针的位置。其次输入信息,写代码时我发现,如果使用scanf()函数,每次在输入一个整形或字符时,总会因为敲了一个回车而提前进入下一行代码,影响正常输入。于是,我在前面加了一个ch=getchar();以接收回车符。当输入完信息后,使用fwrite();函数将之前已经赋值的结构体变量存入a文件,并用fclose();关闭文件,防止文件内容被篡改。在最后加一个switch分支语句以判断是否循环退出,当输入字符‘y’后,自动重复调用INSERT();,否则调用MAINMENU()退到主目录。按功能查询:在按序号(价格)查询时,首先依然是打开之前已经写入要查询内容的文件,然后通过输入要查询的字符串或整形变量与文件内容比较,如果一致则打印输出此数组的其他结构体成员。具体的比较我使用的是字符串比较函数strcmp(chara[20],charb[20]);或利用if("inta==intb”)判断整形变量的相等。如果相等则输出结构体变量的其他成员,否则进入下一循环。这里的循环用for()实现,有几个变量就比较几次(包括和自己比较)。排序:对于排序,有很多种方法,这里我用的是比较简单的冒泡法。冒泡法的原理:首先做一个内循环,将数组的第一个值与后面的值分别比较,如果前者小于后者(降序)则交换两值的位置。然后是外循环,由for实现第二、第三个值分别与其后面的值比较。最后循环结束后得到交换赋值后的结构体变量,并打印输出。一般的,外层循环的次数是字符数的n-1次,内循环每次循环是起始比较值后面剩下的字符数。同样的,字符串我用strcmp(chara[20],char加20]),整型变量用‘==’。修改:修改功能其实是查询函数SEARCH();和录入函数INSERT();的使用。首先还是打开文件,然后,利用scanf();接收要修改的数组的任意一个变量,用strcmp();和'==’比较是否相符,同样这里要使用for()让输入的变量于每一个数组的相同的类型变量进行比较。若符合则开始进入录入函数给选择的结构体变量分别赋值。删除:如果是全部删除,则给每一个录入的变量赋空值即可。若是单项删除,首先查询要删除数组的其中一个结构体变量(同修改),如果符合,则赋空值即可。我用的是复制覆盖的方法,即后从要删除的数组后一个数组开始,分别向前移动一位,这里可以用strcpy(chara[20],charb[20]);字符串复制函数,在这里b把值赋给a,但不改变b的值。6.购买:购买功能是前面所有功能的综合。先输入要购买的书的一个关键变量,然后与录入的图书信息比较,如果相符则打印出来。此时也可以在定义一个结构体变量,用来存放购买图书所要使用的信息。源代码:#include<>#include<>#include<>#include<>voidMAINMENU();voidINSERT();voidWRITEINFILE();voidREADFROMFILE();voidSEARCHLIST();voidSORTLIST();voidLISTBYBNO();voidLISTBYPRICE();voidSORTBYBNO();voidSORTBYNAME();voidDIYSEARCH();voidSCAN();voidSEARCHBYBNO();voidSEARCHBYNAME();voidMODIFY();voidDELETELIST();voidDELETEALL();voidDELETEBYBNO();voidENCHANGELIST();voidENCHANGEBYBNO();voidENCHANGEBYNAME();voidBUYLIST();voidBUY();voidEXIT();#defineN1000structBOOK{intbno;charname[20];charedition[20];charauthor[20];floatprice;intstorage;}book[N];FILE*fp;charfilename[20];上面是头文件~

下面是主程序~#include""inti;voidmain(){intk=0;while(k==0){system("cls");MAINMENU();}}voidMAINMENU()/*进入系统/*进入系统charchoice;主目录*/system("cls");printf("*****************************图书管理系统********************************\n");printf(" A.图书录入m");printf(" B.图书查询\n");printf(" C.修改\n");printf(" D.图书购买由");printf(" E.退出\n\n\n\n");printf("请选择需要的服务:");choice=getchar();switch(choice){case'a':INSERT();break;case'b':SEARCHLIST();break;case'c':MODIFY();break;case'd':BUYLIST();break;case'e':EXIT();break;}voidEXIT(){charch;printf("\n\n\t确认退出(Y/N):");ch=getchar();scanf("%c",&ch);switch(ch){case'y':fclose(fp);exit(0);case'n':MAINMENU();}}voidSEARCHLIST(){system("cls");charchoice;printf("******************图书查询********************\n");printf("******************A.排序查询****************\n");printf("******************B.自定义查询**************\n");printf("******************C.查询全部****************\n");printf("******************D.返回主菜单**************\n");printf("请输入查询的方式:”);choice=getchar();scanf("%c",&choice);switch(choice){case'a':SORTLIST();break;case'b':DIYSEARCH();break;case'c':SCAN();break;case'd':MAINMENU();break;}}voidSCAN(){system("cls");if((fp=fopen("a","r"))==NULL)printfC'无法打开文件!\n");return;printf("*****************************图书信息*****************************\n");for(i=0;i<3;i++){fread(&book[i],sizeof(structBOOK),1,fp);printf("序号:%4d\n",book[i].bno);printf("书名:%4s\n",&book[i].name);printf("作者:%4s\n",&book[i].author);printf("出版社:%3s\n",&book[i].edition);printf("价格:%4f\n",book[i].price);printf("库存量:%3d\n\n",book[i].storage);}printf("按任意键返回查询主菜单!)getch();fclose(fp);}voidSORTLIST(){charchoice;system("cls");printf("*****************a.按序号排序*********************\n");printf("*****************B.按价格排序*********************\n");printf("*****************C.返回查询菜单*******************\n");printf("请选择查看的方式:”);choice=getchar();scanf("%c",&choice);switch(choice){case'a':SORTBYBNO();break;case'b':SORTBYNAME();break;case'c':SEARCHLIST();break;}}voidDIYSEARCH(){system("cls");charchoice;printf("******************A.按序号查询****************\n");printf("******************B.按书名查询****************\n");printf("******************C.返回查询菜单**************\n");printf("请选择查询的方式:”);choice=getchar();scanf("%c",&choice);switch(choice){case'a':SEARCHBYBNO();break;case'b':SEARCHBYNAME();break;case'c':MAINMENU();break;}}voidINSERT(){system("cls");charch,ch1;if((fp=fopen("a","ab+"))==NULL){printf("无法打开文件!\n");return;}ch=getchar();printf("请输入要录入的序号:");scanf("%d",&book[i].bno);ch=getchar();printf("请输入要录入的书名:");scanf("%s",book[i].name);ch=getchar();printf("请输入要录入的作者:");scanf("%s",book[i].author);ch=getchar();printf("请输入要录入的出版社:");scanf("%s",book[i].edition);ch=getchar();printf("请输入要录入的价格:");scanf("%f",&book[i].price);ch=getchar();printf("请输入要录入的库存量:");scanf("%d",&book[i].storage);fwrite(&book[i],sizeof(structBOOK),1,fp);fclose(fp);printf("\n是否继续录入信息(Y/N)");ch1=getchar();scanf("%c",&ch1);switch(ch1){case'y':INSERT();break;case'n':MAINMENU();break;}}voidMODIFY(){charch;system("cls");j「/11 I \ 11XT^riTTrTf*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'不4【个*|-14/*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'*T'\n1•printf("************************A.删除*************************\n");,jr/11*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A».、 -Lz/*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»*A»\11\pnnf(************************B.替换*************************\n);printf("************************C.返回主目录*******************\口\口m");printf("请选择要使用的功能:");ch=getchar();scanf("%c",&ch);switch(ch){case'a':DELETELIST();break;case'b':ENCHANGELIST();break;case'c':MAINMENU();break;}}voidBUYLIST(){charch;system("cls");jr/11 \11apnntf(**************************商城***************************\n);printf("************************A.购买***************************\n");printf("************************B.返回主目录*********************\口\口\口”);printf("请选择要使用的功能:");ch=getchar();scanf("%c",&ch);switch(ch){case'a':BUY();break;case'b':MAINMENU();break;}}voidBUY(){floattotalprice=0;intquantity=0;charch;intbno,time;charcompany[20];if((fp=fopen("a","rb"))==NULL){printf("无法打开文件!\n");return;}if((fp=fopen("a","wb"))==NULL){printf("无法打开文件!\n");return;system("cls");printf("请输入要购买的图书序号:");ch=getchar();scanf("%d",&bno);for(i=0;i<3;i++){if(bno==book[i].bno){printf("请输入要购买的图书数量:");ch=getchar();scanf("%d",&quantity);fread(&book[i],sizeof(structBOOK),1,fp);book[i].storage=book[i].storage-quantity;totalprice=quantity*book[i].price;printf("请输入购买单位:\n");ch=getchar();scanf("%s",&company);printf("请输入购买时间:\n");ch=getchar();scanf("%d",&time);system(“cls”);printf("*************************************山东大学威海分校出版社购书清单***************************************\n");购书时printf("\t购书单位:%1s购书时间:%1d\n",&company,time);printf(" \n");printf(" \n");printf("序号书名作者单价购买量\n");printf("%5d%10s%10s%12f%10d\n",book[i].bno,book[i].name,book[i].author,book[i].price,quantity);printf(" \n");

printf("\t总价:printf("\t总价:%4f剩余库存量:%3d\n",totalprice,book[i].storage);fwrite(&book[i],sizeof(structBOOK),1,fp);fclose(fp);getch();}}}voidDELETELIST(){charch;system("cls");printf("***************************删除***************************\n");printf("************************A.全部删除*************************\n");printf("************************B.按序号删除*************************\n");printf("************************C.返回修改目录*******************\口\口\口");printf("请选择要使用的功能:”);ch=getchar();scanf("%c",&ch);switch(ch){case'a':DELETEALL();break;case'b':DELETEBYBNO();break;case'c':MODIFY();break;}}voidDELETEALL(){charch;system("cls");printf("是否删除全部的图书信息(y/n)");ch=getchar();scanf("%c",&ch);if(ch='y'){if((fp=fopen("a","wb"))==NULL){printf("无法打开文件!\n");return;}for(i=0;i<3;i++){book[i].bno=NULL;memset(book[i].name,0,sizeof(char)*20);memset(book[i].author,0,sizeof(char)*20);memset(book[i].edition,0,sizeof(char)*20);book[i].price=NULL;book[i].storage=NULL;no,&book[i].name,&book[i].author,&book[i].edition,&book[i].price);fwrite(&book[i],sizeof(structBOOK),1,fp);}}fclose(fp);}voidDELETEBYBNO(){intbno,j;system("cls");if((fp=fopen("a","w"))==NULL){printf("无法打开文件!\n");return;}printf("请输入序号:");scanf("%d",&bno);for(i=0;i<3;i++){if(book[i].bno==bno){for(j=0;j<3;j++){book[i].bno=book[i+1].bno;strcpy(book[j].name,book[j+1].name);strcpy(book[j].author,book[j+1].author);strcpy(book[j].edition,book[j+1].edition);book[j].price=book[j+1].price;book[j].storage=book[j+1].storage;}break;}fwrite(&book[i],sizeof(structBOOK),1,fp);fclose(fp);printf("删除成功!按任意键返回主菜单!)getch();}voidENCHANGELIST(){charch;system("cls");jr/11 ^t^t. \11apnntf(**************************替换***************************\n);printf("************************A.通过序号替换*************************\n");printf("************************B.通过书名替换*************************\n");printf("************************C.返回修改菜单*******************\n\n\n");printf("请选择要使用的功能:”);ch=getchar();scanf("%c",&ch);switch(ch){case'a':ENCHANGEBYBNO();break;case'b':ENCHANGEBYNAME();break;case'c':MODIFY();break;}}voidENCHANGEBYBNO(){intbno;charch;intmidstorage;charmidname[20];charmidauthor[20];charmidedition[20];floatmidprice;system("cls");if((fp=fopen("a","w"))==NULL){printf("无法打开文件!\n");return;}printf("请输入序号:");scanf("%d",&bno);for(i=0;i<3;i++){if(book[i].bno==bno){ch=getchar();printf("请输入要修改的书名:");scanf("%s",midname);strcpy(book[i].name,midname);ch=getchar();printf("请输入要修改的作者:”);scanf("%s",midauthor);strcpy(book[i].author,midauthor);ch=getchar();printf("请输入要修改的出版社:”);scanf("%s",midedition);strcpy(book[i].edition,midedition);ch=getchar();printf("请输入要修改的价格:");scanf("%f",&midprice);book[i].price=midprice;ch=getchar();printf("请输入要修改的库存量:");scanf("%d",&midstorage);book[i].storage=midstorage;}fwrite(&book[i],sizeof(structBOOK),1,fp);}fclose(fp);printf("修改成功!按任意键返回主菜单!)getch();}voidENCHANGEBYNAME()charname[20];charch;intmidbno;intmidstorage;charmidauthor[20];charmidedition[20];floatmidprice;system("cls");if((fp=fopen("a","w"))==NULL){printf("无法打开文件!\n");return;}printf("请输入书名:");scanf("%s",name);for(i=0;i<3;i++){if(strcmp(book[i].name,name)==0){ch=getchar();printf("请输入要修改的序号:");scanf("%d",&midbno);book[i].bno=midbno;ch=getchar();printf("请输入要修改的作者:”);scanf("%s",midauthor);strcpy(book[i].author,midauthor);ch=getchar();printf("请输入要修改的出版社:");scanf("%s",midedition);strcpy(book[i].edition,midedition);ch=getchar();printf("请输入要修改的价格:");scanf("%f",&midprice);book[i].price=midprice;ch=getchar();printf("请输入要修改的库存量:");scanf("%d",&midstorage);book[i].storage=midstorage;}fwrite(&book[i],sizeof(structBOOK),1,fp);}fclose(fp);printf("修改成功!按任意键返回主菜单!)getch();}voidSORTBYBNO(){if((fp=fopen("a","rb+"))==NULL){printf("无法打开文件!\n");return;}system("cls");intmidstorage;intmidbno;intj;inti;charmidname[20];charmidauthor[20];charmidedition[20];floatmidprice;for(j=0;j<3;j++)for(i=0;i<3-j;i++)if(book[i].bno<book[i+1].bno){fread(&book[i],sizeof(structBOOK),1,fp);midbno=book[i].bno;book[i].bno=book[i+1].bno;book[i+1].bno=midbno;strcpy(midname,book[i].name);strcpy(book[i].name,book[i+1].name);strcpy(book[i+1].name,midname);strcpy(midauthor,book[i].author);strcpy(book[i].author,book[i+1].author);strcpy(book[i+1].author,midauthor);strcpy(midedition,book[i].edition);strcpy(book[i].edition,book[i+1].edition);strcpy(book[i+1].edition,midedition);midprice=book[i].price;book[i].price=book[i+1].price;book[i+1].price=midprice;midstorage=book[i].storage;book[i].storage=book[i+1].storage;book[i+1].storage=midstorage;}for(i=0;i<3;i++){printf("序号:%4d\n",book[i].bno);printf("书名:%4s\n",&book[i].name);printf("作者:%4s\n",&book[i].author);printf("出版社:%3s\n",&book[i].edition);printf("价格:%4f\n",book[i].price);printf("库存量:%3d\n\n",book[i].storage);}printf("按任意键返回主菜单)getch();}voidSORTBYNAME(){system("cls");charch;intmidstorage;intj;inti;intmidbno;charmidname[20];charmidauthor[20];charmidedition[20];floatmidprice;if((fp=fopen("a","r"))==NULL){printf("无法打开文件!\n");return;}for(j=0;j<3;j++)for(i=0;i<3-j;i++)if(book[i].price<book[i+1].price){fread(&book[i],sizeof(structBOOK),1,fp);midbno=book[i].bno;book[i].bno=book[i+1].bno;book[i+1].bno=midbno;strcpy(midname,book[i].name);strcpy(book[i].name,book[i+1].name);strcpy(book[i+1].name,midname);strcpy(midauthor,book[i].author);strcpy(book[i].author,book[i+1].author);strcpy(book[i+1].author,midauthor);strcpy(midedition,book[i].edition);str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论