



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌大亨软件学院大作业任务书题目: 画お偉管理条饶 专 业: 软件工程 班 级: 133班 姓名学号: 高爽超8000133177 学号: 8000113177 完成人数: し人 起讫日期:2014.2.17—2014.3.18任课教师: 刘伯成职称: 讲师部分管主任: 完成时间: 20成年月口 说明1,本任务书由任课教师填写后,下达到学生。.任务完成后,任课教师需填写小结表。.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。.另附ー份全班大作业总结大作业的要求和内容:(包括题目选择范围、技术要求、递交时间、考核方法等)请根据所学的C语言的内容,完成一个完整的C语言程序,程序的内容和功能,可以自己根据需要进行自定义,但不能过于简单,代码行数要在1(X)0行以上,且所设计的程序满足如下要求:.程序中要具备结构体类型的数据操作、链表操作等;.程序中要具备文件读取和写入的操作(含顺序、随机);.程序中要具备常用的排序和查找功能;.要有断点调试、改错过程及相应截图;.要求程序具备简单的菜单功能,根据用户的输入,执行相应的操作;.在菜单界面,必须显示程序的名称、版本信息,开发者的名字、班级、学号等信息。最终提交的作业,除提交完整的程序工程代码外,还必须以大作业报告的形式说明程序的流程、结构以及设计、实现过程,具体参见课程设计说明书和教材。作业评分将以完成的程序质量和复杂程度为基础,并根据大作业报告进行综合评分。教师小结:成绩: 教师签名: 教研部负责人: 学生姓名:高爽超
南昌大学NANCHANGUNIVERSITYC语言工程实训课程设计题目: 囹石僮管理糸・ 学 院: 软件学院 专 业: 软件工程 班 级: 软エ133班 完成人数: し人 成 员: し人 起讫日期: 2014.2.17—2014.3.18 任课教师: 刘伯成职称:讲师完成时间: 2014年3月15日 填表日期:2014年3月15日
TOC\o"1-5"\h\zー、需求分析 -1-项目介绍 -1-功能需求 -1-二、系统分析 -2本程序需解决的关键技术问题 -2程序流程 -2-三、程序设计与实现 -4\o"CurrentDocument"3.2 程序实现 -49-四、系统测试 -60-\o"CurrentDocument"五、个人小结 -61-\o"CurrentDocument"六、参考文献 -62-ー、需求分析(参考教材第2章)项目介绍画あ管理糸统是ー个爲盛集成,的囹羊信息处理系统,通过囹お德的各种功惚进行卷合,乂而达到龛东检索信息,提あエ作公車,障假管理鼠埼等目的。功能需求ー个完巻的囹お管理糸统应接惋管理所有的囹お种类,囹お信息い及族端信息,迷要梃供各种囹お信息的检索我本莉功惚。被糸统迷需要对囹お的借阅,リョ迷进行管理,并对犊老的罰款遂行自劭合计。i要实现。下几个功惚,/»族老信息功惋2》重询囹お信息5》t看。借囹おの〉囹お借阅5»重看罚款6》借阅历史7»お0本莉外囹お偏目管理二、系统分析(参考教材第2章)2.1本程序需解决的关键技术问题需要解决的关健位獲包括。下凡支「/»程み中要具备稔构体类型的眼据締作、徒泰練作,,2》程格中要具备女件族修猟写人的練作(含順格和康机ノ3》程本中要具备有用的那木%垄找功饿;益要会使用新玄碉伏、改金,,5»要求程本具备简单的莱卓加他,根据用户的綸入,执行相反的猱作,,
三、程序设计与实现(参考教材第3・7章)3.1程序设计#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<time.h>HLE*fp;typedefstructReader(charCode[20];〃证件号charName[30JJ〃姓名charSex[5];〃性别charDept[50J;〃工作单位intTag; 〃状态:〇一正常,L挂失[Reader;typedefstructReaderLink(charCode[20]; 〃证件号charName[3O]; 〃姓名charSex[5]; 〃性别charDept[5O]; 〃工作单位intTag; 〃状态:〇一正常,1ー挂失structReaderLink*next;}ReaderLink;#ifndefCatalog_H#defineCatalog_H#defineMAX_TREE_SIZE100typedefstructCatalog 〃目录结构类型{charKey[20J;〃编号charCaption[80];〃标题,类名charParent[20J;〃父类编号//intnum;}Catalog;typedefstructCatalogTree〃目录顺序存储结构类型(CatalogNode[MAX_TREE_SIZE];iniroot; 〃根节点位置,根节点默认在0号单元;intnum; 〃最后一个结点的数组编号}CatalogTree;#ifndefBook_H#defineBook_H#defineMAX_BOOK_SIZE5000#definetrue1#definefalse0typedefintbool;typedefstructBook(charISBN[50]; //ISBN号charTitle[200];〃书名charAuthor[200]; 〃作者charPublisher[100]1 〃出版社charDate[20]; 〃出版日期floatPrice; 〃价格charCatalogNum[200];〃分类编号}Book;typedefstructBookLink 〃图书单链表存储结构类型(charISBN[50]; //ISBN号charTitle[200];〃书名charAuthor[200]; 〃作者charPublisherflOO]; 〃出版社charDate[20]; 〃出版日期floatPrice; 〃价格charCatalogNum[200];〃分类编号structBookLink*next;[BookLink;typedefstructBookList〃图书顺序存储结构类型Book*Node;intNum;(BookList;〃图书个数#ifndefLend_H#defineLend_H#defineMAX_BOOK_LEND4〃最多借15本#defineMAX_DAY_LEND90 /・最长借期90天・/typedefstructLendlnfo(charCode[20];〃证件号charISBN[50];charLendDate[20];〃借书日期charLastDate[20];〃应还日期charReturnDate[20J;〃归还日期intTag; 〃状态〇;借出,1:归还}Lendlnfo;typedefstructLendlnfoLink(charCode[201;〃证件号charISBN[50];charLendDate[20];〃借书日期charLastDate[20];〃应还II期charReturnDate[20];〃归还日期intTag;〃状态〇;借出,1:归还structLendlnfoLink"next;}LendlnfoLink;voidMainMenu();voidReadMenu();voidReadMenuChoose();voidCatalogMenu();voidCatalogMenuChoose();voidBookMenuQ;voidBookMenuChooseQ;voidCirculMenu();voidCirculMenuChooseQ;voidAddCatalog(); 〃增力口分类voidPrintCatalog();〃输出目录,(编号,类名,父类号)voidCreatCatalogTree();〃建立分类目录树,调用PrintCatalogTree()voidPrintCatalogTree(CatalogTree*tree);〃输出分类目录树,调用PreOrder();voidPreOrder(CatalogTree*,int,int);〃递归遍历结构体数组输出树voidAlterCatalog();〃修改分类#endifvoidBrowseReader(); 〃浏览所有读者信息ReaderLink*InputReader();〃输入读者信息,建立链表voidSaveReader(ReaderLink*);〃保存读者链表到文件voidFindReader_Code(); 〃从文件中按照证件号查找voidFindReader_Name(); 〃从文件中按照姓名查找voidAlterReader();〃修改读者信息,从文件中读取信息, 〃建立链表,查找并修改,再写回文件ReaderLink*CreatReaderLink();〃从文件读取读者信息并创建链表voidSaveReaderW(ReaderLink*);〃读者信息写入文件,删除旧信息浏览voidLostReader();〃证件挂失#endif/・从文件读出数据,建立单链表,删改查后,重新写回文件增加图书就直接追加写入文件・/BookLink*InputBook(); 〃输入多个图书目录,建立链表voidSaveBook(BookLink* );〃保存图书链表到文件BookLink*CreatBookLink();〃读取文件信息,建立图书目录链表voidSaveBookW(BookLink*);〃保存链表到文件,垂写BookLink*InsertSortBook(BookLink*head);〃图书目录直接插入排序voidDeleteBook(); 〃删除图书目录voidAlterBook(); 〃修改图书目录#endifvoidBookBrowseCatalog();〃图书分类浏览BookListCreatBookList();〃建立图书结构体数组voidFindISBN(); //BookListBubbleSort(BookLis);intBinSearchISBN(BookListB,char[]);voidFindISBN_BubbleSort();voidFindISBN_SelectSort();voidFindISBN_InsertSort();BookListSelectSort(BookList);intBinSearchTitle(BookList,char[]);voidFindAuthor();BookListInsertSort(BookList);intSearchAuthor(BookList,char[]);〃顺序査找多个voidFindPublisher();BookListBInsertSort(BookList);intSearchPublisher(BookList,char[]);〃顺序查找多个voidFindTitle();voidLendBook();〃借阅图书ReaderFindReaderL(char[]);〃查询读者//intLendBookNum(char[]);〃计算已借本数voidSaveLendInfo(LendInfo);〃保存借阅信息到文件voidRetumBook();〃还书LendlnfoLink*CreatLendLink。;//建立借阅信息链表voidSaveLendInfoW(LendInfoLink*);〃保存借阅信息到文件,覆盖旧信息voidFindLendInfo();//查询个人借阅记录voidmain()(intMenuNum;do(MainMenu();printf("请输入你的选择!0-4:”);scanf(,'%d,',&MenuNum);switch(MenuNum)(ReadMenu();ReadMenuChoose();printf(n\n 回车继续操作! \nn);getch();system("cls");break;CatalogMenu();CatalogMenuChoose();printf("\n 回车继续操作! \nM);getch();system(,,clsH);break;BookMenu();BookMenuChooseO;printf(M\n 回车继续操作! An”);getch();systemC'cls");break;CirculMenu();CirculMenuChoose();printf(H\n 回车继续操作! An”);getch();system,cis”);break;case0:;break;)}while(MenuNum!=O);voidMainMenu()printf(M****************************************\n");printfC南昌大学图书馆管理系统\n");printf(M主菜单\n");printf(H****************************************\n");printfC1* 1.读者管理 ・\n");printfC'* 2.图书分类管理 ・\n");printfC1* 3.图书编目管理 ・\n");printfC'* 4.图书流通管理 ・\n");printfC,・ 〇.退出系统 ・\n");printfC,\n),printfC,版权所有南昌大学软件工程高爽超 \n*');printf(**学号:8000113177时间:2014/3/15 \n*');printf(**)\n),
voidReadMenu()printf(M****************************************5");printf(M读者管理菜单\n");printf(u****************************************\n");printf(H*1.浏览所有读者*\nM);printf(M*2.增加读者*\nH);printf(M*3.査询读者*\nn);printf(M*4.修改读者*\nH);printf(Hホ5.证件挂失*\nM);printf(M*〇.返回上级printf(n****************************************\n");voidCatalogMenu()printf(M****************************************\n");printf(M分类管理菜单\n");printf(n****************************************\n");printf(H*1.增加分类*\nM);printf(M*2.输出分类*\nM);printf(K*3.输出树形分类树*\nM);printf(n*4.修改分类*\nM);printf(Hホ0.返回上级*\nM);voidBookMenu()printf(Mprintf("\n),图书编目管理菜单\n)printf(Hprintf("printf(nprintf("\n),1.新书录入 ・\nn);2.删除图书目录 也ガ);3.修改图书目录 ・\nH);
printf(Mprintf(Mprintf(Mprintf(Mprintf(n4.查询图书目录0.返回上级汽ガ);*\nn);、パ);voidCircuIMenu()printf(M****************************************\n");printf(H图书流通管理菜单'パ);printf(n・东・东东********な密本*东・申*东*ホ****东・・木・东・・糸***\n");printf(M* 1.图书分类浏览 ・\n");printf(n* 2.图书检索 ・\n");printf(M* 3.借书 ・\n");printf(M* 4.还书 ・\n");printf(M* 5.查询借阅记录 ・\n");printf("・ 〇.返回上级 ・\n");printf(n****************************************\n");voidCirculMenuChoose()(intMenuNum;intnum;printf("请输入你的选择!0-5:M);scanf(”%d”,&MenuNum);switch(MenuNum)BookBrowseCatalog();break;printfC'\n输入选择(ISBN1,书名2,作者3,出版社4):");scanf(M%dn,&num);switch(num){FindISBN_BubbleSort();break;FindTitle();break;FindAuthor();break;FindPublisher();break;)break;LendBook();break;ReturnBook();break;FindLendInfo();break;case0:;break;)voidCatalogMenuChoose()(intMenuNum;intnum;primf("请输入你的选择!0-4:n);scanf(M%d",&MenuNum);switch(MenuNum)(case1:AddCatalog();break;PrintCatalog();break;CreatCatalogTree();break;AlterCatalog();break;case0:;break;voidReadMenuChoose()(intMenuNum;intnum;printf("请输入你的选择!0-5:つ;scanf("%d”,&MenuNum);switch(MenuNum)(BrowseReader();break;case2:InputReader();break;printf("\n输入选择(证件号:1,姓名:2):ッ;scanf(”%d”,&num);if(num==1)FindReader_Code();elseFindReader_Name();break;AlterReader();break;LostReader();break;case0:;break;)voidBookMenuChoose()(intMenuNum;intnum;printff请输入你的选择!0-4:n);scanf("%d”,&MenuNum);switch(MenuNum)(case1:InputBook();break;DeleteBook();break;AlterBook();break;FindISBN_BubbleSort();break;case0:;break;)voidBrowseReader()(charCode[20];charName[30J;charSex[5];charDept[50J;intTag;if((fp=fopen(Mreader.txt'V,rM))=NULL)(printf("文件打开错误!\n“);exit(O);}printf(H\n\n \nH);printf("证件号 姓名 性别 单位'バ);printf(H\n \n");fscanf(fp,"%s%s%s%s%d",Code,Name,Sex,Dept,&Tag);while(!feof(fp))(printf(H%s\t%s\t%s\t%s\t\n",Code,Name,Sex,Dept);fscanf(fp,"%s%s%s%s%d",Code,Name,Sex,Dept,&Tag);if(fclose(fp))(printf("不能关闭文件天”);exit(O);)}ReaderLink*InputReader()(ReaderLink*p,*q,*head;charCode[20J;intn=O,x;printf(H\n\n \n”);printf(”证件号,姓名,性别(F,M),单位,挂失状态(0,1)。以#结束\n”);printf(n\n \n”);head=(ReaderLink*)malloc(sizeof(ReaderLink));p=head;scanf(M%sM,Code);while(l)if(strcmp(Code,"#n)==0)break;elseq=(ReaderLink*)malloc(sizeof(ReaderLink));strcpy(q->Code,Code);scanf("%s%s%s%d,\q->Name,q->Sex,q->Dept,&q->Tag);p->next=q;p=q;)scanf("%s”,Code);q->next=NULL;printf("读者信息输入结束!\n*,);getchar();printf("是否保存读者信息?(1.是ノ2.否):”);scanf(,,%d'\&x);if(x==l)SaveReader(head);elseprintf("\n文件没有被保存!\n)returnhead;voidSaveReader(ReaderLink*head)ReaderLink*p;if((fp=fopen(,,reader.txt',;,aH))==NULL)(printf("文件打开错误!\n");exit(O);for(p=head->next;p!=NULL;p=p->next)fprintf(fp,H%s\t%s\t%s\t%s\t%d\n",p->Code,p->Name,p->Sex,p->Dept,p->Tag);fclose(fp);printf(”\n图书信息已成功保存到文件reader.txt中!、ガ);getchar();voidFindReader_Code()(charCode[20];ReaderR;intflag=O;printf(”\n输入要查询读者的证件号:り;scanf(n%s'\Code);if((fp=fopen(',reader.txt,,;,r,,))==NULL)(printf("文件打开错误!\n");exit(O);)while(!feof(fp))(fscanf(fp/'%s%s%s%s%d'\R.Code,R.Name,R.Sex,R.Dept,&R.Tag);if(strcmp(R.Code,Code)==0){printf("\n%s\t%s\t%s\t%s\t%d\n,,,R.Code,R.Name,R.Sex,R.Dept,R.Tag);flag=l;break;})if(f!ag==O)printf("没有找到读者记录!\n");getchar();fclose(fp);)voidFindReader_Name()charName[30J;ReaderR;intflag=0;printf(”\n输入要查询读者的姓名:り;scanf(n%sH,Name);if((fp=fopen(,'reader.txt',;'rM))=NULL)(printf("文件打开错误借”);exit(O);)while(!feof(fp)){fscanf(fp,"%s%s%s%s%d,\R.Code,R.Name,R.Sex,R.Dept,&R.Tag);if(strcmp(R.Name,Name)==O){printf(n\n%s\t%s\t%s\t%s\t%d\n,\R.Code,R.Name,R.Sex,R.Dept,R.Tag);flag=l;break;)}if(flag==O)printf("没有找到读者记录紀”);fclose(fp);voidAlterReader()(charCode[20];charName[30J;charSex[5];charDept[50J;intTag;ReaderLink*head,*p;head=CreatReaderLink();printf("输入要修改的读者的证件号:n);scanf(u%s",Code);p=head->next;for(p;p!=NULL&&strcmp(p->Code,Code)!=0;p=p->next);printf("找到要修改的读者:ッ;printf(n%s\t%s\t%s\t%s\t%d\nn,p->Code,p->Name,p->Sex,p->Dept,p->Tag);printf("输入读者新的信息:证件号,姓名,性别,工作单位,状态:\n“);scanf(H%s%s%s%s%dM,p->Code,p->Name,p->Sex,p->Dept,&p->Tag);printf(,'%s\t%s\t%s\t%s\t%d\n,',p->Code,p->Name,p->Sex,p->Dept,p->Tag);SaveReaderW(head);printf("修改成功!*');ReaderLink*CreatReaderLink()(ReaderLink*head,*p,*q;if((fp=fopen(,,reader.txt",,'r,,))==NULL)(printf("文件打开错误!\n");exit(O);)head=(ReaderLink*)malloc(sizeof(ReaderLink));p=head;while(!feof(fp))(q=(ReaderLink*)malloc(sizeof(ReaderLink));fscanf(fp/%s\t%s\t%s\t%s\t%d\n,\q->Code,q->Name,q->Sex,q->Dept,&q->Tag);p->next=q;p=q;q->next=NULL;fclose(fp);returnhead;voidSaveReaderW(ReaderLink*head)ReaderLink*p;if((fp=fopen(Mreader.txt'V,wH))==NULL)(printf("文件打开错误打");exit(O);}for(p=head->next;p!=NULL;p=p->next)fprintf(fp,,'%s\t%s\t%s\t%s\t%d\n",p->Code,p->Name,p->Sex,p->Dept,p->Tag);fclose(fp);printf("\n读者信息已成功保存到文件reader.txt中!'n");getchar();}voidLostReader()(charCode[20];charName[30];charSex[5];charDept[5OJ;intTag;ReaderLink*head,*p;head=CreatReaderLink();printf("输入挂失证件号:り;scanf("%s'\Code);p=head->next;for(p;p!=NULL&&strcmp(p->Code,Code)!=0;p=p->next);printf(”\n找到要挂失的读者: ッ;printf(',%s\t%s\t%s\t%s\n,',p->Code,p->Name,p->Sex,p->Dept);p->Tag=l;SaveReaderW(head);primf(”\n挂失成功!\n\n");voidAddCatalog()(CatalogC;if((fp=fopen(,,catalog3.dat,\"abM))==NULL)(printf("Fileopenerror!\n");exit(O);)else(printf("输入:分类编号,类名,父类编号。#结束:、ボ);scanf("%s”,C.Key);while(strcmp(C.Key,n#M)!=0){scanf(M%s%sH,C.Caption,C.Parent);fwrite(&C,sizeof(Catalog),1,fp);scanf(H%s'\C.Key);}fclose(fp);printf("操作成功!'n“);voidPrintCatalog()(CatalogC;if((fp=fopen(ncatalog3.dat,,,,,rb,,))==NULL)(printf("Fileopenerror!\n");exit(O);)else(fread(&C,sizeof(Catalog),1,fp);while(!feof(fp)){printf(n%s\t%s\t%s\nM,C.Key,C.Caption,C.Parent);fread(&C,sizeof(Catalog),1,fp);voidCreatCatalogTree()(CatalogTreeC;inti=0;if((fp=fopen(ncatalog3.dat,,,,,rb,'))==NULL)(printf(HFileopenerror!\nH);exit(O);)else(fread(&C.Node[iJ,sizeof(Catalog),1,fp);while(!feof(fp))(i++;fread(&C.Node[i],sizeof(Catalog),1,fp);}C.num=i;C.root=0;fclose(fp);)PrintCatalogTree(&C);)voidPrintCatalogTree(CatalogTree*tree)(inti;intlevel=l;PreOrder(tree,OJevel);)voidPreOrder(CatalogTree*tree,intk,intlevel)(inti,j,m=0;for(i=l;ivlevel;i++)printfC*n);printf(Hl %s%s\n",tree->Node[k].Caption,tree->Node[k].Key);for(j=k+1;j<tree->num;j++)(if(strcmp(tree->Node[j].Parent,tree->Node[k].Key)==0)(if(m==0)(PreOrder(tree,j,-H-level);m++;}elsePreOrder(tree,j,level);)voidAlterCatalog()charKey[20];CatalogC;intnum=O;printf(" \n\n");printf("输入要修改的分类的编号:つ;scanf(n%sH,Key);if((fp=fopen(ncatalog3.daf,,,,rb+H))==NULL)(printf(*'Fileopenerror!\nH);exit(O);)else(fread(&C,sizeof(Catalog),1,fp);while(!feof(fp)){if(strcmp(C.Key,Key)==O){printf(M%s\t%s\t%s\n\n",C.Key,C.Caption,C.Parent);break;}fread(&C,sizeof(Catalog),1,fp);num++;))printf("输入分类新的编号,类名,父类号:\n\n");scanf(u%s%s%sn,C.Key,C.Caption,C.Parent);fseek(fp,num*sizeof(Catalog),SEEK_SET);fwrite(&C,sizeof(Catalog),1,fp);printf("修改成功!\n\nH);fclose(fp);BookLink*InputBook()BookLink*p,*q,*head;charISBN[50];intn=O,x;printf("也请按对应项输入图书目录以#结束:\nM);printf(M \nM);printf(nISBN——书名——作者——出版社——出版日期——价格——分类编号\n\n");printf(M\n输入ー项回车:\n*');head=(BookLink*)malloc(sizeof(BookLink));p=head;getchar();printf("输入ISBN:");gets(ISBN);while(l){if(strcmp(ISBN;,#,,)==O)break;elseq=(BookLink*)malloc(sizeof(BookLink));strcpy(q->ISBN,ISBN);printf("输入书名:"); gets(q->Title);printf("输入作者:"); gets(q->Author);printf("输入出版社:");gets(q->Publisher);prinlf(”输入出版日期:");gets(q->Date);printf(”输入价格:”); scanf(”%f”,&q・>Price);getchar();printf(”输入分类编号:”);gets(q->CatalogNum);p->next=q;PF;}printf(”\n\n输入ISBN:”);gets(ISBN);)q->next=NULL;printf("图书目录输入结束!\n\nM);printf("是否保存图书目录?(1.是ノ2.否):");scanf(u%d",&x);if(x==l)SaveBook(head);elseprintf(”\n文件没有被保存!\n”);returnhead;voidSaveBook(BookLink*head)BookLink*p;if((fp=fopen("books.txt,,;'a,,))==NULL)(printf(HFileopenerror!\nH);exit(O);)for(p=head->next;p!=NULL;p=p->next)fprintf(fp,M%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nM,p->ISBN,p->Title,p->Author,p->Publisher,p->Date,p->Price,p->CatalogNum);fclose(fp);printf("\n图书信息已成功保存到文件book.txt中!\nn);getchar();BookLink*CreatBookLink()BookLink*head,*p,*q;charISBN[50];charTitle[200J;charAuthor[200];charPublisher1100];charDate[20];floatPrice;charCatalogNum[200];if((fp=fopen(',books.txt',;'r,,))==NULL){printf(*'Fileopenerror!\nM);exit(0);)head=(BookLink*)malloc(sizeof(BookLink));q=head;fscanf(fp,”%[人、U'ISBN);fscanf(fp,"%*[\t]H);fscanf(fp,“%网UlTitle);fscanf(fp,H%*[\t]H);fscanf(fp,"%[ベ]',Author);fscanf(fp,"%*[\t]");fscanf(fp,n%[A\t]",Publisher);fscanf(fp,"%*[\t]");fscanf(fp,n%[A\t]",Date);fscanf(fp,"%*[\t]u);fscanf(fp,"%f',&Price);fscanf(fp,u%*[\t]");fscanf(fp,"%[A\n]",CatalogNum);fscanf(fp,"%*c*,);while(!feof(fp))(p=(BookLink*)malloc(sizeof(BookLink));strcpy(p->ISBN,ISBN);strcpy(p->Title,Title);strcpy(p->Author,Author);strcpy(p->Publisher,Publisher);strcpy(p->Date,Date);p->Price=Price;strcpy(p->CataIogNum,CatalogNum);q->next=p;q=p;fscanf(fp,”%[人WJSBN);fscanf(fp,M%*[\t]n);fscanf(fp,"%[A\t]H,Title);fscanf(fp/'%*[\t]n);fscanf(fp,"%[人\t「,Author);fscanf(fp,"%*[\t]n);fscanf(fp,"%[ベt「,Publisher);fscanf(fp,H%*[\t]n);fscanf(fp/%[ベt]”,Date);fscanf(fp/'%*[\t]");fscanf(fp,"%f',&Price);fscanf(fp,n%*[\l]n);fscanf(fp,,,%[A\n]M,CatalogNum);fscanf(fp,"%*cH);)p->next=NULL;fclose(fp);/*p=head->next;while(p!=NULL)(printf(H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\n,',p->ISBN,p->Title,p->Author,p->Publisher,p->Date,p->Price,p->CatalogNum);p=p->next;ド/returnhead;voidSaveBookW(BookLink*head)BookLink*p;if((fp=fopen(nbooks.txt',,,,w',))==NULL)(printf("Fileopenerror!\n");exit(O);}for(p=head->next;p!=NULL;p=p->next)fprintf(fp,H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nn,p->ISBN,p->Title,p->Author,p->Publisher,p->Date,p->Price,p->CatalogNum);fclose(fp);printf("\n图书信息已成功保存到文件book.txt中!\n");getchar();)voidDeleteBook()BookLink*head,*p,*pre;charISBN[50];head=CreatBookLink();p=head->next;pre=head;printf(n\n\n输入要删除图书的ISBN:ッ;scanf(H%sM,ISBN);while((p!=NULL)&&(strcmp(p->ISBN,ISBN)!=O))(pre=p;p=p->next;(if(p==NULL)prindT图书目录不存在!n);elsepre->next=p->next;free(p);)SaveBookW(head);voidAlterBook()(BookLink*head,*p,*pre;charISBN[50];head=CreatBookLink();p=head->next;pre=head;getchar();printf("\n\n输入要修改图书的ISBN:n);gets(ISBN);while((p!=NULL)&&(strcmp(p->ISBN,ISBN)!=O))(pre=p;p=p->next;)if(p==NULL)priiHf("图书目录不存在!");else{primf("重新输入图书目录!\n\n");printf("输入ISBN:");gets(p->ISBN);printf("输入书名:"); gets(p->Title);printf("输入作者:り; gets(p->Author);printfC输入出版社:");gets(p->Publisher);printf("输入出版日期:");gets(p->Date);primf("输入价格:");scanf("%f',&p->Price);getchar();printf("输入分类编号:");gets(p->CatalogNum);)SaveBookW(head);BookLink*InsertSortBook(BookLink*head)(BookLink*first,*t,*p,*pre;p=head->next;first=p->next;pre=head;p->next=NULL;while(first!=NULL)(p=head->next;pre=head;for(t=first;((p!=NULL)&&(p->ISBN<t->ISBN));pre=p,p=p->next);first=first->next;if(pre==head)(head->next=t;)else{pre->next=t;)t->next=p;)returnhead;voidBookBrowseCatalog()BookListB;charKey[20];inti;intsize;intr;intflag=0;B=CreatBookList();CreatCatalogTree();printf(”\n\n输入要查询的图书分类编号:”);scanf("%s",Key);size=strlen(Key);printf("\n\nM);for(i=1;i<=B.Num;i++)(r=memcmp(B.Node[i].CatalogNum,Key,size);if(r==O){printf(,,%s\t%s\t%s\t%s\t%s\t%.2f\t%s\n\n\nM,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[iJ.Publisher,BNode[iJ.Date,B.Node[iJ.Price,B.Node[i].CatalogNum);flag=l;})if(flag==0)printf(”\n没有找到这种类型图书!\nH);BookListCreatBookList()BookListB;inti=0;charISBN[50];charTitle[200];charAuthor[200];charPublisherflOO];charDate[20];floatPrice;charCatalogNum[200];B.Node=(Book*)malloc(sizeof(Book)*MAX_BOOK_SIZE);if((fp=fopen(nbooks.txt,V'rw))==NULL)(printf(nFileopenerror!\nn);exit(O);}else(fscanf(fp,n%[A\t]",ISBN);fscanf(fp,M%*[\t]H);fscanf(fp,n%[A\t]n,Title);fscanf(fp,n%*[\t]M);fscanf(fp,n%[A\t]u,Author);fscanf(fp,M%*[\t]M);fscanf(fp,,,%[A\t]n,Publisher);fscanf(fp,M%*[\t]M);fscanf(fp,n%[A\t]n,Date);fscanf(fp,'1%*[\t]M);fscanf(fp,M%f\&Price);fscanf(fp,n%*[\t]n);fscanf(fp,n%[A\n]n,CatalogNum);fscanf(fp,n%*cn);while(!feof(fp))i++;strcpy(B.Node[i].ISBN,ISBN);strcpy(B.Node[i].Title,Title);strcpy(B.Node[i].Author,Author);strcpy(B.Node[i].Publisher,Publisher);strcpy(B.Node[i].Date,Date);B.Node[i].Price=Price;strcpy(B.Nodefi].CatalogNum,CatalogNum);fscanf(fp,"%[A\t]n,ISBN);fscanf(fp,n%*[\t]M);fscanf(fp,"%[A\t]n,Title);fscanf(fp;,%*[\t]n);fscanf(fp,"%[A\t]n,Author);fscanf(fp;,%*[\t]n);fscanf(fp,n%[A\t]M,Publisher);fscanf(fp,M%*[\t]n);fscanf(fp,n%[A\t]",Date);fscanf(fp,n%*[\t]H);fscanf(fp,M%f\&Price);fscanf(fp,w%*[\t]n);fscanf(fp,M%[A\n]M,CatalogNum);fscanf(fp,,,%*cH);B.Num=i;fclose(fp);return(B);voidFindISBN_BubbleSort()BookListB;charISBN[50];inti;B=CreatBookList();printf("\n\n输入要查询的图书ISBN:n);scanf("%sM,ISBN);B=BubbleSort(B);i=BinSearchISBN(BJSBN);if(i!=0)printf(M\n\n%s\t%s\t%s\t%s\t%s\t%,2f\t%s\n\n\n'\B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[i].Price,B.Node[i].CatalogNum);elseprintf(”\n\n没有找到记录!*1);)BookListBubbleSort(BookListB)(inti,j,n;boolchange;Booktemp;n=B.Num;change=true;for(i=n;i>=l&&change;-i)(change=false;for(j=l;j<i;++j)if(strcmp(B.Node[j].ISBN,B,Node|j+l].ISBN)>0)(temp=B.Node[j4-l];B.Node|j+l]=B.Node|jJ;B.Node[j]=temp;change=true;}return(B);intBinSearchlSBN(BookListB,charISBN[])(intmid,low=l,high=B.Num;while(low<=high)(mid=(low+high)/2;if(strcmp(ISBN,B.Node[mid].ISBN)==0)returnmid;elseif(strcmp(ISBN,B.Node[mid].ISBN)<0)high=mid-l;elselow=mid+l;}return0;voidFindISBN_SelectSort()(BookListB;charISBN[50];inti;B=CreatBookList();printf(n\n\n输入要查询的图书ISBN:M);scanf(”%s”,ISBN);B=SelectSort(B);i=BinSearchISBN(BJSBN);if(i!=0)printf(M\n\n%s\t%s\t%s\t%s\t%s\t%,2f\t%s\n\n\nH,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,BNode[iJ.Publisher,B.Node[i].Date,B.Node[i].Price,BNode[iJ.CatalogNum);elseprintf("\n\n没有找到记录!”);)BookListSelectSort(BookListB)(inti,j,k;Booktemp;for(i=l;i<B.Num;++i)k=i;for(j=i+ly<=B.Num;++j){if(strcmp(B.Node[k].ISBN,B.Node[j].ISBN)>0)k=j;}if(k!=i){temp=B.Node[i];B.Node[i]=B.Node[k];B.Node[k]=temp;))returnB;)voidFindISBN_InsertSort()(BookListB;charISBN[50];inti;B=CreatBookList();printf(n\n\n输入要查询的图书ISBN:M);scanf(”%s”,ISBN);B=InsertSort(B);i=BinSearchISBN(BJSBN);if(i!=0)printf(M\n\n%s\t%s\t%s\t%s\t%s\t%,2f\t%s\n\n\nH,B.Node[i].ISBN,BNode[i].Title,B.Node[i].Author,BNode[iJ.Publisher,B.Node[i].Date,B.Node[i].Price,BNode[iJ.CatalogNum);elseprintf(u\n\n没有找到记录!");)BookListInsertSort(BookListB)inti,j;Booktemp;for(i=2;i<=B.Num;++i)if(strcmp(B.Node[i].ISBN,B.Node[i-i].ISBN)<0)(B.Node[0]=B.Node[i];B.Node[i]=B.Node[i-l];for(j=i-2;strcmp(B.Node[01.ISBN,B.Node[j].ISBNX0;-j)B.Node|j+l]=B.Node[j];B.Node[j+l]=B,Node[0];returnB;voidFindTitle()(BookListB;charTitle[200];inti;intflag=0;B=CreatBookList();printf("\n\n输入要查询的图书Title:M);fflush(stdin);gets(Title);for(i=l;i<=B.Num;++i)if(strstr(B.Node[i].Title,Title)!=NULL)printf(H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\n,',B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[i].Price,B.Node[i].CatalogNum);printf(H\n\nn);flag=l;)if(flag==0)printf(”\n\n没有找到记录!)voidFindAuthor()(BookListB;charAuthor[200J;inti;intflag=O;B=CreatBookList();printf("\n\n输入要查询的图书Author:");fflush(stdin);gets(Author);for(i=l;i<=B.Num;++i)if(strstr(B.Node[i].Author,Author)!=NULL){printf(H%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nH,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[i].Price,B.Node[i].CatalogNum);printf(,'\n\nM);flag=l;)if(flag==0)printf(”\n\n没有找到记录!)voidFindPublisher()(BookListB;charPublisher(100];inti;intflag=0;B=CreatBookList();printf(M\n\n输入要查询的图书Publisher:n);fflush(stdin);gets(Publisher);printf(M\n\nM);for(i=1;i<=B.Num;++i)if(strstr(B.Node[i].Publisher,Publisher)!=NULL)(printf(M%s\t%s\t%s\t%s\t%s\t%.2f\t%s\nn,B.Node[i].ISBN,B.Node[i].Title,B.Node[i].Author,B.Node[i].Publisher,B.Node[i].Date,B.Node[iJ.Price,B.Node[i].CatalogNum);
printf(M\n\nM);flag=l;)if(nag==O)printf("\n\n没有找到记录!”);voidLendBook()(charCode[20];charISBN[50];ReaderR;BookListB;LendlnfoL;//LendlnfoLinkLHead;intyear,mon,day;inti;charLendDate[20];charReturnDate[20];charLastDate[20J;intBookNum=0;time_tt;structtmLendt,Lastt;t=time(NULL);strftime(LendDate,sizeof(LendDate),,,%Y-%m-%d",localtime(&t));t+=MAX_DAY_LEND*86400;strftime(LastDate,sizeof(LastDate),n%Y-%m-%d",localtime(&t));printf(n图书借阅,按#结束printf(n图书借阅,按#结束\n\nH);printf("请输入证件号:ッ;scanf("%s”,Code);R=FindReaderL(Code);printf(M%s\t%s\t%s\t%s\t%d\n\nM,R.Code,R.Name,R.Sex,R.Dept,R.Tag);//BookNum=LendBookNum(R.Code);if(R.Tag==l)primf("证件已挂失,禁止借阅!)elseif(BookNum>=4)printf("已经借满4本,不能再借!");else(printf("请输入ISBN:");scanf(M%sMJSBN);while(strcmp(ISBN,M#',)!=O&&BookNum<MAX_BOOK_LEND)B=CreatBookList();B=BubbleSort(B);i=BinSearchISBN(BJSBN);if(i==O){printf(”\n\n没有找到图书!)break;}elsestrcpy(L.Code,R.Code);strcpy(L.ISBN,ISBN);strcpy(L.LendDate,LendDate);strcpy(L.RetumDate,nNULL");strcpy(L.LastDate,LastDate);L.Tag=O;printf(n%s\t%s\t%s\t%s\t%s\t 借 出\n\n'\L.ISBN,B.Node[i].Title,B.Node[i].Author,L.LendDate,LLastDate);SaveLendlnfo(L);BookNum-H-;printf("请输入ISBN:");scanf(n%sn,ISBN);})if(BookNum>=4)prinlf(”已经借满4本,不能再借!*1);}printf(”\n借阅完毕!\n");ReaderFindReaderL(charCode[])(ReaderR;if((fp=fopen(,,reader.txt,,;'r,'))==NULL)(printf(nFileopenerror!\nM);exit(O);}while(!feof(fp))(fscanf(fp,n%s\t%s\t%s\t%s\t%d\nM,R.Code,R.Name,R.Sex,R.Dept,&R.Tag);/////////////////if(strcmp(R.Code,Code)==0)(returnR;break;)}printf("没有找到读者!\n");fclose(fp);/*intLendBookNum(charCode[20])(LendlnfoL;intBookNum=0;if((fp=fopen(,,lend.txtH,',a,,))==NULL)(printf("文件打开错误!\n”);exit(O);}while(!feof(fp)){fscanf(fp/'%s\t%s\t%s\t%s\t%s\t%d\n,\L.Code,L.ISBN,L.LendDate,L.LastDate,L.RetumDate,&L,Tag);if(strcmp(L.Code,Code)==0&&L.Tag==0)〃比较|BookNum++;)fclose(fp);returnBookNum;)*/voidSaveLendInfo(LendInfoL)if((fp=fopen(,'lend.txt,';,a+,,))==NULL)(printf("文件打开失败打”);exit(O);)fprintf(fp,n%s\t%s\t%s\t%s\t%s\t%d\n,,,L.Code,L.ISBN,L.LendDate,L.LastDate,LReturnDate,L.Tag);fclose(fp);printf("\n图书信息已成功保存到文件reader.txt中!、ガ);getchar();voidReturnBook()(charCode[20];charISBN[50];BookListB;LendlnfoLink*head,*p;charReturnDate[20];inti;time_tt;t=time(NULL);strftime(RetumDate,sizeof(RetumDate),M%Y-%m-%d'\localtime(&t));head=CreatLendLink();printf(H 还书,按#结束 \n\nn);printf("请输入证件号:");scanf(u%sM,Code);printf("请输入ISBN:");scanf(n%sn,ISBN);whUe(strcmp(ISBN,H#,,)!=O)B=CreatBookList();B=BubbleSort(B);i=BinSearchISBN(BJSBN);p=head->next;while(p!=NULL)if(strcmp(p->Code,Code)==0&&strcmp(p->ISBNJSBN)==0)break;elsep=p->next;strcpy(p->ReturnDate,RetumDate);p->Tag=l;printf(H%s\t%s\t%s\t%s\t%s\t 已 还\n\nH,p->ISBN,B.Node[i].Title,B.Node[i].Author,p->LendDate,p->RetumDate);printf("请输入ISBN:");scanf("%s”,ISBN);}SaveLendlnfoW(head);printf("\n还书完毕!\nM);LendlnfoLink*CreatLendLink()(charCode[20];charISBN[50J;charLendDate[20];charLastDate[20];charReturnDate[20J;intTag;LendlnfoLink*head,*p,*q;if((fp=fopen(Mlend.txt,,,',r,,))==NULL)(printf(HFileopenerror!\nH);exit(O);)head=(LendInfoLink*)malloc(sizeof(LendInfoLink));q=head;fscanf(fp,"%[ハ、t]”,Code);fscanf(fp,H%*[\t]H);fscanf(fp/%[A\t]M,ISBN);fscanf(fp,H%*[\t]H);fscanf(fp,"%[ハヽt]”,LendDate);fscanf(fp,H%*[\t]M);fscanf(fp,"%[A\t]n,LastDate);fscanf(fp,n%*[\t]n);fscanf(fpj%[ベtyiRetumDate);fscanf(fp,H%*[\t]H);fscanf(fp,"%cT,&Tag);//intfscanf(母,"%*c");while(!feof(fp))(p=(LendInfoLink*)malloc(sizeof(LendInfoLink));strcpy(p->Code,Code);strcpy(p->ISBNJSBN);strcpy(p->LendDate,LendDate);strcpy(p->LastDate,LastDate);strcpy(p->ReturnDate,ReturnDate);p・>Fag=Tag;q->next=p;q=p;fscanf(fp,M%[A\t]n,Code);fscanf(fp,M%*[\t]M);fscanf(fp,H%[A\t]M,ISBN);fscanf(fp,M%*[\t]M);fscanf(fp,n%[A\t]",LendDate);fscanf(fp,M%*[\t]M);fscanf(fp,H%[A\t]H,LastDate);fscanf(fp,n%*[\t]M);fscanf(fp/%[ハヽt]”,RetumDate);fscanf(fp,M%*[\t]M);fscanf(fp,M%dH,&Tag);//intfscanf(fp,u%*cM);p->next=NULL;fclose(fp);returnhead;voidSaveLendInfoW(LendInfoLink*head)(LendlnfoLink*p;if((fp=fopen(,'lend.txt,,,nwM))=NULL)(printf("文件打不开件”);exit(O);)for(p=head->next;p!=NULL;p=p->next)fprintf(fp,n%s\t%s\t%s\t%s\t%s\t%d\n",p->Code,p->ISBN,p->LendDate,p->LastDate,p->ReturnDate,p->Tag);fclose(f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 弹簧质检员岗位面试问题及答案
- 江西省南昌市安义中学2025届高一化学第二学期期末调研模拟试题含解析
- 福建省东山县第二中学2025届化学高二下期末联考试题含解析
- 校外培训用户管理办法
- 极端气候预警管理办法
- 冲击地压防治管理办法
- 作战数据存储管理办法
- 河南省核查员管理办法
- 兵棋推演中的智能决策技术:基于大语言模型的探索与应用
- 星级管理办法举措建议
- 企业消防安全责任制模板
- 学堂在线 军事理论 章节测试答案
- 2025届黑龙江省哈尔滨四十七中学七年级英语第二学期期末统考试题含答案
- 人工智能通识课程开课方案
- 2025-2030中国智慧政务行业发展策略及投资潜力预测报告
- 【中考真题】2025年福建中考数学真题试卷(含解析)
- 2025年四川省宜宾市中考数学真题试卷及答案解析
- 2025年时事政治考试题及答案(300题)
- 杨浦区“十五五”规划纲要及专项规划编制工作方案
- 2025年中国氧化镁项目投资计划书
- T/CIE 186-2023业务研发安全运营一体化能力成熟度模型
评论
0/150
提交评论