C语言图书信息管理系统最终源代码INCLUDEINCLUDE“STRINGH“STRUCTBOOK/BOOK2是用来装用户要录入图书的信息/{LONGNUM,TIMECHARNAME12,WRITER12,FENLEI8,DANWEI10INTPAY}STU100STRUCTBOOK1{LONGNUM,TIMECHARNAME12,WRITER12,FENLEI8,DANWEI10INTPAY}STU1100STRUCTBOOK2/BOOK是用来装CCDAT文件中的图书信息/{LONGNUM,TIMECHARNAME12,WRITER12,FENLEI8,DANWEI10INTPAY}STU2100DENGLU{CHARA15“DRZHANG“,B15“29257966“,C15,D15L3SYSTEM“CLS“PRINTF“欢迎登陆图书管理系统\N\N“PRINTF“请输入姓名“GETSCPRINTF“请输入密码“GETSDIFSTRCMPA,C0ELSE{PRINTF“输入错误请重新输入\N\N“PRINTF“1重新输入2退出系统\N\N“PRINTF“请输入“SWITCHGETCH{CASE49GOTOL3BREAKDEFAULTRETURN56BREAK}}}/此功能实现的是开始菜单的显示和具体功能的选择/START{PRINTF“欢迎使用图书管理系统“PRINTF“功能目录“PRINTF“||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||“PRINTF“||||“PRINTF“||1、图书查询2、图书浏览3、录入图书4、删除与修改5、备份与还原||“PRINTF“||||“PRINTF“||||“PRINTF“||||“PRINTF“||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||“PRINTF“使用说明如要选择“图书查询”,直接输入1退出0“PRINTF““PRINTF“你想要做什么“RETURNGETCH/输入选择对应功能的值,返回输入的值,即用于判断选择的功能/}/实现备份功能,以防图书信息出错带来的麻烦,不必看懂/BEIFEN{FILEFP1,FP2INTI,AJIESHUOSYSTEM“CLS“PRINTF“\N\N请选择\\备份(B)|浏览备份(L)/\\还原(H)/\\退出(Q)/\N“SWITCHGETCH{CASE'B'CASE'B'IFFP1FOPEN“CC“,“R“NULL{PRINTF“不能打开次文件\N“EXIT0}IFFP2FOPEN“CC01“,“W“NULL{PRINTF“不能打开次文件\N“EXIT0}FSCANFFP1,“D“,FPRINTFFP2,“D\N“,APRINTF“\N\N确认备份吗Y/N“SWITCHGETCH{CASE'Y'CASE'Y'FORI0I4就将能和用户要找的书名相同4个/IFK4/字母的图书打印出来。按作者,分类号/{/出版单位的查询方法相同。/PRINTF“LD\TS\TS\TS\TS\TLD\TD\N“,STUINUM,STUINAME,STUIWRITER,STUIFENLEI,STUIDANWEI,STUITIME,STUIPAYN}}IFN0PRINTF“\N你要找的书共有D本\N\N\N\N\N“,NIFN0{SYSTEM“CLS“PRINTF“\N\N对不起,没有你要找的书\N\N“}BREAKCASE50PRINTF“2\N\N请输入你要找的书的作者“GETSCHSTRLWRCHPRINTF“\N“PRINTF“你要找的书可能是\N\N“PRINTF“登录号书名作者分类号出版单位出书时间价格\N\N“FORI0I4{PRINTF“LD\TS\TS\TS\TS\TLD\TD\N“,STUINUM,STUINAME,STUIWRITER,STUIFENLEI,STUIDANWEI,STUITIME,STUIPAYN}}IFN0PRINTF“\N你要找的书共有D本\N\N\N\N\N“,NIFN0{SYSTEM“CLS“PRINTF“\N\N对不起,没有你要找的书\N\N“}BREAKCASE51PRINTF“3\N\N请输入你要找的书的出版时间“SCANF“LD“,/用户输入要找书的出版时间/PRINTF“\N“PRINTF“你要找的书如下\N\N“PRINTF“登录号书名作者分类号出版单位出书时间价格\N\N“FORI0I0PRINTF“\N你要找的书共有D本\N\N\N\N\N“,NIFN0{SYSTEM“CLS“PRINTF“\N\N对不起,没有你要找的书\N\N“}BREAKCASE52PRINTF“4\N\N请输入你要找的书的价格“SCANF“D“,PRINTF“\N“PRINTF“你要找的书如下\N\N“PRINTF“登录号书名作者分类号出版单位出书时间价格\N\N“FORI0I0PRINTF“\N你要找的书共有D本\N\N\N\N\N“,NIFN0{SYSTEM“CLS“PRINTF“\N\N对不起,没有你要找的书\N\N“}BREAKCASE53PRINTF“5\N\N请输入你要找的书的分类号“GETSCHSTRLWRCHPRINTF“\N“PRINTF“你要找的书可能是\N\N“PRINTF“登录号书名作者分类号出版单位出书时间价格\N\N“FORI0I6{PRINTF“LD\TS\TS\TS\TS\TLD\TD\N“,STUINUM,STUINAME,STUIWRITER,STUIFENLEI,STUIDANWEI,STUITIME,STUIPAYN}}IFN0PRINTF“\N你要找的书共有D本\N\N\N\N\N“,NIFN0{SYSTEM“CLS“PRINTF“\N\N对不起,没有你要找的书\N\N“}BREAKCASE54PRINTF“6\N\N请输入你要找的书的出版单位“GETSCHPRINTF“\N“PRINTF“你要找的书可能是\N\N“PRINTF“登录号书名作者分类号出版单位出书时间价格\N\N“FORI0I4{PRINTF“LD\TS\TS\TS\TS\TLD\TD\N“,STUINUM,STUINAME,STUIWRITER,STUIFENLEI,STUIDANWEI,STUITIME,STUIPAYN}}IFN0PRINTF“\N你要找的书共有D本\N\N\N\N\N“,NIFN0{SYSTEM“CLS“PRINTF“\N\N对不起,没有你要找的书\N\N“}BREAKDEFAULTPRINTF“\N\N操作错误按任意键返回\N“GETCHGOTOL1BREAK}}/系统结束时的动画效果/JIESHU{INTIFORI0I32767IB_NUM,PB_NAME,PP_NAME,PP_TIMEYEAR,PP_TIMEMONTH,PT_NUM,PL_NUM,PB_KIND(5)函数原型INTSCANFCHARFORMAT,ADDRESS,;函数功能SCANF扫描输入字段,从标准输入设备中每读入一个字段,就依照FORMAT所规定的格式串中取一个开始的格式进行格式化,然后存入对应的一个地址ADDRESS中。参数说明PB_NUM,PB_NAME,PP_NAME,PP_TIMEYEAR,PP_TIMEMONTH,PT_NUM,PL_NUM,PB_KIND(6)函数原型VOIDFREEVOIDBLOCK函数功能释放以前分配的首地址为BLOCK的内存块。参数说明P1(7)函数原型INTFSCANFFILSTREAM,CHARFORMAT,ADDRESS,;函数功能从流STREAM中扫描输入字段,每读入一个字段,就按照从FORMAT所指定的格式串中取一个开始的格式进行格式化,之后存在对应的地址ADDRESS。参数说明FP,M2、模块功能/输入图书信息/STRUCTLIBRARYINPUT_MESSAGEVOID/指向输入图书信息/{STRUCTLIBRARYP1,P2,HEAD/包含三个指针/CHARCH/字符/HEADNULL/头指针为空/HEADP2P1STRUCTLIBRARYMALLOCN/指针自由分配的空间大小为N/DO{P1STRUCTLIBRARYMALLOCN/当P1所占的大小为N时/CLRSCR/清屏/PRINTF“\N\N\TINPUTBOOKMESSAGE\N“/输出图书信息/PRINTF“\TSERIAL_NUMBER“/输出序列号/SCANF“LD“,/输入书的名字/PRINTF“\TBOOK_NAME“/输出书的名字/SCANF“S“,P1B_NAME/输入书的名字/PRINTF“\TPRESS_NAME“/输出出版社/SCANF“S“,P1P_NAME/输入出版社/PRINTF“\TPRESS_TIMEYYMM“/输出出版日期/SCANF“DD“,/输入出版日期/PRINTF“\TTOTAL_NUMBER“/输出图书总数/SCANF“LD“,/输入图书总数/PRINTF“\TLEFT_NUMBER“/输出剩余图书数/SCANF“LD“,/输入剩余图书数/PRINTF“\TBOOK_KIND“/输出图书种类/SCANF“S“,P1B_KIND/输入图书种类/P2NEXTP1/将P2指针指向P2/P2P1PRINTF“\T\TCONTINUEY/N“/输出信息“是否继续(是/不是)”/CHGETCH/输入字符/}WHILECH'Y'||CH'Y'/当输入‘Y’或者‘Y’的时候/P2NEXTNULL/最后一个结点的后继指针为空/P1HEAD/P1等于头指针/HEADP1NEXT/头指针等于P1所指向的下一个/FREEP1/释放出P1的空间/PRINTF“\N\TINPUTOVER“/打印输入结束/CHGETCHAR/输入字符/RETURNHEAD/返回首部/}/储存图书信息/SAVE_MESSAGESTRUCTLIBRARYP{FILEFP/定义指向文件的指针/IFFPFOPEN“LIBRARYTXT“,“WT“NULL/为输出打开一个二进制文件夹,如果没有则建立/{PRINTF“\NSORRYOPENTHEDOCUMENTTOBEWRONG“/输出对不起,打开文件失败/RETURN/返回/}WHILEPNULL/如P不为空/{FPRINTFFP,K/输出图书的序列号,书名,出版社,出版日期,图书总量,剩余图数量,书的种类等信息/PPNEXT/P等于P所指向的NEXT/}FCLOSEFP/关闭文件/RETURN/返回/}由我负责这个模块,在这个模块里运用了指针,包含了FCLOSE、SCANF、PRINTF等函数,功能主要是输入和储存图书的信息,每一条对应的作用和意思上述代码后面都有相应的解释,可以输入新的图书信息,然后保存起来供查询使用。/NOTEYOURCHOICEISCIDE/INCLUDE“STDIOH“INCLUDEINCLUDE“CONIOH“INCLUDEINCLUDEVOIDMAIN{VOIDADM1,ADM2,BUILD,HUAN,BORROW,DELEADM1}VOIDADM1{FILEFP,PCHARADP20,PASSWORD20INTI,N0TEXTBACKGROUND2CLRSCRGOTOXY25,12FPFOPEN“PASS“,“R“IFFPNULL{PRINTF“NOEXIT“GETCHEXIT0}PRINTF“INPUTPASSWORD“FOR{WINDOW42,12,53,12TEXTBACKGROUND0CLRSCRGETSADPFORI0ADPI'\0'IFGETSPASSWORD,I1,FPGOTOXY55,12IFSTRCMPPASSWORD,ADP0{WINDOW55,12,70,12CLRSCRCPRINTF“YES“GETCHADM2GETCHEXIT0}ELSE{NWINDOW55,12,60,12CLRSCRGOTOXY55,12CPRINTF“ERROR“FORI0I6FORKIKINK{PRINTF“\NBOOKD“,K1SCANF“S“,BOOKK}FORK0KINKFPRINTFF,“S\N“,BOOKKFPUTC'\0',FPRINTF“SUCCESS“FCLOSEF}VOIDDELE{FILEFP,FCHARID20,A420,C,B550INTI0,J0,KWINDOW1,1,80,25CLRSCRPRINTF“INPUTIDNUMBER“SCANF“S“,IDFPFOPENID,“R“IFFPNULL{PRINTF“\NUSERISN'TEXIT“GETCHFCLOSEFPADM2}ELSEWHILEFEOFFP{FSCANFFP,“S“,AI}PRINTF“\NNAMES“,A0PRINTF“\NIDS“,A1PRINTF“\NSEXS“,A2PRINTF“\NGRADS“,A3FFOPENA0,“R“IFFNULLELSE{WHILEFEOFF{FSCANFF,“S“,BJ}FORK0KJ1KPRINTF“\NBOOKDS“,K1,BK}PRINTF“\NDOYOUWANTTODELETEY/N“CGETCHFCLOSEFPFCLOSEFIFC'Y'{REMOVEIDREMOVEA0PRINTF“\NSUCCESS“GETCHADM2}IFC'N'ADM2}
展开阅读全文