[求助]图书管理系统,不知道错在哪里了
<P>#include <string.h><BR>#include <stdio.h><BR>#include <math.h><BR>#include <time.h><BR>#include <stdlib.h><BR>#include <dos.h><BR>#include <conio.h><BR>#include <process.h><BR>struct date //日期<BR>{<BR> int month;<BR> int day;<BR> int year;<BR>};</P><P><BR>struct BookList //图书结构体<BR>{<BR> char name[20]; //书名<BR> char sort; //图书分类号<BR> char editor[20]; //主编<BR> char publisher[20]; //出版社<BR> char theme[20]; //主题词<BR> int edition; //版次<BR> struct date publish; //出版日期<BR> int ISBN; //ISBN<BR> float price; //定价<BR> int user_number; //借阅人借阅证号<BR> struct date lend; //借阅日期<BR> int booking_number; //借阅预约人借阅证号<BR>char borrowname[20];//借阅人用户名<BR> char ordername[20];//预约人用户名<BR> struct date booking; //预约日期<BR> int okay;//遗损情况:1,完好;2,损坏;3,遗失 //损毁情况<BR>int yes;//判断书是否已经被借出或预约:0,已被预约;1,可借出或预约;2,已被预约<BR>}Book[1000];;</P>
<P>struct StudentList //用户//日期<BR>{<BR> char name[20];//用户名<BR> char password[16];//密码<BR>}Student[1000];</P>
<P><BR>void mainpage();//主页面<BR>void MemberAdd();//旧用户登录<BR>void landing(); //旧用户登录<BR>void administrators();//管理员登录<BR>void second();//成功登录后的界面<BR>void change(); //修改密码<BR>void BookBorrow();//借阅图书<BR>void BookSearch();//查找图书信息<BR>void Booking();//预约图书<BR>void BookReturn();//归还图书<BR>void Bookleft();//遗损处理<BR>void AddBooks();//新书入库<BR>void AllBooks();<BR>void MemberBook();</P>
<P>main() //主函数<BR>{<BR> printf("********************************************************************************\n");<BR> printf("********************************************************************************\n");<BR> printf("******* *******\n");<BR> printf("******* 欢迎使用图书管理系统 *******\n");<BR> printf("******* *******\n");<BR> printf("********************************************************************************\n");<BR> printf("********************************************************************************\n");<BR> printf("\n按数字键选择您所需的服务:\n");<BR> printf("1.新用户注册\n");<BR> printf("2.旧用户登录\n");<BR> printf("3.管理员登录\n");<BR> printf("\n");<BR> mainpage();<BR> <BR>}</P>
<P>void mainpage() //主页面<BR>{ <BR> int order1;<BR> scanf("%d",&order1);<BR> switch(order1)<BR> {<BR> case 1: MemberAdd();break;<BR> case 2: {landing();}break;<BR> case 3: administrators();break;<BR> default: {printf("\n你输入了错误的命令号!请你再次输入\n\n");main();mainpage();}<BR> }<BR>}</P>
<P> <BR>void MemberAdd() //新用户注册<BR>{ <BR> FILE *fp;<BR> char newpass[14];<BR> int i,temp;<BR> printf("请输入你要注册的用户名!\n");<BR> printf("(帐号必需用18位以内的数字组成)\n");<BR> scanf("%s",&Student->name);<BR> if((fp=fopen(Student->name,"r"))!=NULL)<BR> {printf("该用户名已被注册,请你用另一个用户名!\n");MemberAdd();}<BR> else <BR> { <BR> for(temp=0;temp==0;)<BR> {<BR> printf("\n请输入你的密码!\n");<BR> i=0;<BR> while((Student->password[i]=getch())!='\r'&&i<=14)//变星号输出<BR> {<BR> if(Student->password[i]=='\b')<BR> {<BR> putchar('\b');<BR> putchar(' ');<BR> putchar('\b');<BR> i--;<BR> }<BR> else<BR> {<BR> putchar('*');<BR> i++;<BR> }<BR> }<BR> Student->password[i]='\0';<BR> printf("\n请再次你输入你的密码!\n");<BR> i=0;<BR> while((newpass[i]=getch())!= '\r'&&i<=14)//变星号输出<BR> {<BR> if(newpass[i]=='\b')<BR> {<BR> putchar('\b');<BR> putchar(' ');<BR> putchar('\b');<BR> i--;<BR> }<BR> else<BR> {<BR> putchar('*');<BR> i++;<BR> }<BR> }<BR> newpass[i]='\0';<BR> if(strcmp(Student->password,newpass)!=0)<BR> printf("\n你的两个密码不一样,请重新输入\n");<BR> else<BR> temp=1;<BR> }<BR> if((fp=fopen(Student->name,"w"))==NULL)<BR> {<BR> printf("不能打开文件!");<BR> return;<BR> }<BR> else if(fwrite(&Student,sizeof(struct StudentList),1,fp)!=1)<BR> {<BR> printf("数据保存错误!");<BR> fclose(fp);<BR> }<BR> else<BR> {<BR> printf("\n你已成功注册了一个帐号,请你记住你的帐号与密码!\n");<BR> printf("你的帐号是: %s\n请你记住你的帐号与密码!\n\n\n\n\n\n",Student->name);<BR>second();<BR> }<BR> }<BR>}</P>
<P><BR>void landing() //旧用户登录<BR>{<BR> <BR>FILE *fp;<BR> char acc[18],pw[14]; <BR> int i;<BR> printf("请输入你的帐号!\n");<BR> scanf("%s",acc);<BR> if((fp=fopen(acc,"r"))==NULL) //检验帐号是否存在<BR> {<BR> printf("没有这个帐号!请先注册!");<BR> main();<BR> mainpage();<BR> <BR> } <BR> printf("请输入你的密码!\n");<BR> i=0;<BR> while((pw[i]=getch())!= '\r'&&i<=14)<BR> {<BR> if(pw[i]=='\b')<BR> {<BR> putchar('\b');<BR> putchar(' ');<BR> putchar('\b');<BR> i--;<BR> }<BR> else<BR> {<BR> putchar('*');<BR> i++;<BR> }<BR> }<BR> pw[i]='\0';<BR> fread(&Student,sizeof(struct StudentList),1,fp);<BR> if(strcmp(pw,Student->password)!=0)<BR> {<BR> printf("密码错误!\n");<BR> main();<BR> mainpage();<BR> <BR> }<BR> else <BR> {<BR> printf("\n你已经成功进入了管理系统!\n");<BR> fclose(fp);<BR> second();<BR> }<BR>}</P>
<P>void administrators()//管理员登录<BR>{<BR>second();<BR>}</P>
<P>void second()//成功登录后的界面<BR>{<BR> char j;<BR> int i,leap=0;<BR> printf("********************************************************************************\n");<BR> printf("********************************************************************************\n");<BR> printf("******* *******\n");<BR> printf("******* 欢迎进入华南农业大学图书馆 *******\n");<BR> printf("******* *******\n");<BR> printf("********************************************************************************\n");<BR> printf("********************************************************************************\n");<BR> printf("\n按数字键选择您所需的服务:");<BR> printf("\n@ 1:修改密码\n@ 2:借阅图书\n@ 3:预约图书\n@ 4: 归还图书\n@ 5: 查图书\n@ 6: 所有图书\n@ 7: 新书入库\n@ 8:退出\n\n");<BR> printf("\n您的选择是:");<BR> scanf("%c",&j);<BR> (int)i=j;<BR> do<BR> {<BR> switch(i)<BR> {<BR> case 1:printf("\n");change();break;<BR> case 2:printf("\n");BookBorrow();break;<BR> case 3:printf("\n");Booking();break;<BR> case 4:printf("\n");MemberBook();break;<BR> case 5:printf("\n");BookSearch();break;<BR> case 6:printf("\n"); AllBooks();break;<BR> case 7:printf("\n"); AddBooks();break;<BR> case 8:printf("\n");break;<BR> default:scanf("%d",&i);leap=1;<BR> }<BR> }while(leap==1);<BR>}<BR>void change() //修改密码<BR>{<BR> FILE *fp;<BR> char newpw[14],oldpw[14],newpw2[14];<BR> int i;<BR> printf("请你输入你的旧密码!\n");<BR> i=0;<BR> while((oldpw[i]=getch())!= '\r'&&i<=14)<BR> {<BR> if(oldpw[i]=='\b')<BR> {<BR> putchar('\b');<BR> putchar(' ');<BR> putchar('\b');<BR> i--;<BR> }<BR> else<BR> {<BR> putchar('*');<BR> i++;<BR> }<BR> }<BR> oldpw[i]='\0';<BR> printf("\n请你输入你的新密码!\n");<BR> i=0;<BR> while((newpw[i]=getch())!= '\r'&&i<=14)<BR> {<BR> if(newpw[i]=='\b')<BR> {<BR> putchar('\b');<BR> putchar(' ');<BR> putchar('\b');<BR> i--;<BR> }<BR> else<BR> {<BR> putchar('*');<BR> i++;<BR> }<BR> }<BR> newpw[i]='\0';<BR> printf("\n请再次你输入你的新密码!\n");<BR> i=0;<BR> while((newpw2[i]=getch())!= '\r'&&i<=14)<BR> {<BR> if(newpw2[i]=='\b')<BR> {<BR> putchar('\b');<BR> putchar(' ');<BR> putchar('\b');<BR> i--;<BR> }<BR> else<BR> {<BR> putchar('*');<BR> i++;<BR> }<BR> }<BR> newpw2[i]='\0';<BR> fp=fopen(Student->name,"r");<BR> fread(&Student,sizeof(struct StudentList),1,fp);<BR> if(strcmp(oldpw,Student->password)==0)<BR> { <BR> if(strcmp(newpw,newpw2)!=0)<BR> {<BR> printf("你的两个新密码不一样,请重新输入\n");<BR> change();<BR> }<BR> strcpy(Student->password,newpw);<BR> fclose(fp);<BR> if((fp=fopen(Student->name,"w"))==NULL)<BR> {<BR> printf("不能打开文件!");<BR> return;<BR> }<BR> else if(fwrite(&Student,sizeof(struct StudentList),1,fp)!=1)<BR> {<BR> printf("数据保存错误!");<BR> fclose(fp);<BR> }<BR> printf("你的密码已经修改,下次登录请使用新密码!\n\n\n");<BR> second();<BR> }<BR> else <BR> {<BR> printf("旧密码不正确,请重新输入\n\n");<BR> second();<BR> }<BR>}</P>
<P>void BookBorrow()//借阅图书<BR>{<BR> FILE *fp;<BR>// time_t am;//测试<BR> char bookname[40];<BR> int i,j,w,flag=0; <BR> if((fp=fopen("books_list.txt","rb"))==NULL)<BR> {<BR> printf("\n无法打开该文件! ");<BR> return;<BR> }<BR> else<BR> for(w=0;w<1000;w++)<BR> {fread(&Book[w],sizeof(struct BookList),1,fp);}<BR> fclose(fp);<BR> printf(" 借书\n");<BR> printf("\n请输入图书名:");<BR> scanf("%s",bookname);<BR> //getchar();<BR> for(i=0;i<1000;i++)<BR> {<BR> if((strcmp(Book[i].name,bookname))==0)<BR> { //printf("ghdfghdfsg");<BR> flag=1; <BR> if(Book[i].okay==1)<BR> {<BR> if(Book[i].yes==1)<BR> {<BR> strcpy(Book[i].borrowname,Student->name);<BR> Book[i].yes=0;<BR> fp=fopen("books_list.txt","wb");<BR> for(j=0;j<1000;j++)<BR> fwrite(&Book[j],sizeof(struct BookList),1,fp);<BR> fclose(fp);<BR> printf("\n借书成功!\n*为了其他用户也能即使借阅这本书,请您于一个月内归还此书。多谢合作!*\n");<BR> second();<BR> }<BR> else <BR> {<BR> printf("\n该书已被借出或已被预约\n");<BR> second();<BR> }<BR> }<BR> else <BR> {<BR> printf("该书已遗损!\n");<BR> second();<BR> }<BR> }<BR> }<BR> if(flag==0)<BR> {<BR> printf("该书不存在!\n");<BR> second();<BR> }<BR>}<BR>void BookSearch()//查找图书信息<BR>{<BR> int i,flag,m;<BR> char bookname[20];<BR> FILE *fp;<BR> if((fp=fopen("books_list.txt","rb"))==NULL)<BR> {<BR> printf("\n不能打开该文件");<BR> return;<BR> }<BR> else <BR> {<BR> printf(" *********************\n");<BR> printf(" * 图 书 信 息 查 询 *\n");<BR> printf(" *********************\n");<BR> printf("\n请输入书名:\n");<BR> scanf("%s",bookname);<BR> while(!feof(fp))<BR> {<BR> for(i=0;m<strlen(Book[0].name)!=0;i++)<BR> fread(&Book[0],sizeof(struct BookList),1,fp);<BR> fclose(fp);<BR> for(i=0;i<1000;i++);<BR> {<BR> if(strlen(Book[i].name)==0) break;<BR> else<BR> if(strcmp(bookname,Book[i].name)==0)<BR> {<BR> printf("\n\n已查到该书,其资料如下:");<BR> printf("\n书名:%s",Book[i].name);<BR> printf("\n分类号:%d",Book[i].sort);<BR> printf("\n主编:%s",Book[i].editor);<BR> printf("\n出版社:%s",Book[i].publisher);<BR> printf("\n主题词:%s",Book[i].theme);<BR> printf("\n版次:%d",Book[i].edition);<BR> printf("\n出版日期:%s",Book[i].publish);<BR> printf("\nISBN:%s",Book[i].ISBN);<BR> printf("\n定价:%f",Book[i].price);<BR> printf("\n借阅人用户名:%s",Book[i].borrowname);<BR> printf("\n预约人用户名:%s",Book[i].ordername);<BR> printf("\n该书现在状况:%s",Book[i].okay);<BR> printf("\n这本书的标记:0已借出,1可借出可预约,2已预约:%d",Book[i].yes);<BR> flag=1;<BR> break;<BR> }<BR> }<BR> }<BR> }<BR> if(flag==0)<BR> printf("\n\n查无此书。");<BR> fclose(fp);<BR> second();<BR>}</P>
<P>void BookReturn()//归还图书<BR>{<BR>}</P>
<P>void Bookleft()//遗损处理<BR>{<BR>}<BR>void AddBooks()//新书入库<BR>{<BR> FILE *fp;<BR> if((fp=fopen("books_list.txt","r"))==NULL)<BR> { <BR> printf("file not exit");<BR> if((fp=fopen("books_list.txt","w"))==NULL)<BR> {<BR> printf("new file fail!!");<BR> exit(0);<BR> }<BR> }<BR> else<BR> {<BR> <BR> <BR> if((fp=fopen("books_list.txt","a"))==NULL)<BR> {printf("file add fail!\n");<BR> exit(0);}<BR> }<BR> printf(" !!!!!!!!!!!!!!!!!!!\n");<BR> printf(" !! 新 书 入 库 !!\n");<BR> printf(" !!!!!!!!!!!!!!!!!!!\n");<BR> printf("\n请输入新书的名字: ");<BR> scanf("%s",&Book[0].name);<BR> printf("\n请输入新书的分类号:");<BR> scanf("%d",&Book[0].sort);<BR> printf("\n请输入新书的主编:");<BR> scanf("%s",&Book[0].editor);<BR> printf("\n请输入新书的出版社:");<BR> scanf("%s",&Book[0].publisher);<BR> printf("\n请输入新书的主题词:");<BR> scanf("%s",&Book[0].theme);<BR> printf("\n请输入新书的版次:");<BR> scanf("%d",&Book[0].edition);<BR> printf("\n请输入新书的出版日期:格式为(2006 12 31):");<BR> scanf("%s%s%s",&Book[0].publish.year,&Book[0].publish.month,&Book[0].publish.day);<BR> printf("\n请输入新书的ISBN:");<BR> scanf("%d",&Book[0].ISBN);<BR> printf("\n请输入新书的定价:");<BR> scanf("%f",&Book[0].price);<BR> Book[0].okay=1;<BR>Book[0].yes=1;<BR> fwrite(&Book[0],sizeof(struct BookList),1,fp);<BR> fclose(fp);<BR> printf("\n您已成功向图书馆添加图书《%s》\n",Book[0].name);<BR> second();<BR>}</P>
<P>void Booking()//预约图书<BR>{<BR>FILE *fp;<BR>char bookname[40];<BR> int i,j,w,flag=0;<BR> printf(" 预约图书\n");<BR> printf("\n请输入图书名:");<BR> scanf("%s",bookname);<BR>fp=fopen("books_list.txt","rb");<BR> if(fp==NULL)<BR> {<BR> printf("\n无法打开该文件! ");<BR> return;<BR> }<BR> else<BR> for(w=0;w<1000;w++)<BR> {fread(&Book[w],sizeof(struct BookList),1,fp);<BR> }<BR> fclose(fp);<BR> for(i=0;i<1000;i++)<BR> {<BR> if(strcmp(Book[i].name,bookname)==0)<BR> { <BR> flag=1; <BR> if(Book[i].okay==1)<BR> {<BR> if(Book[i].yes==1)//0,已被预约;1,可借出或预约;2,已被预约<BR> {<BR> //getch();<BR> printf("\n");<BR> strcpy(Book[i].ordername,Student->name);<BR> Book[i].yes=2;<BR> <BR> fp=fopen("books_list.txt","wb");<BR> for(j=0;j<1000;j++)<BR> fwrite(&Book[j],sizeof(struct BookList),1,fp);<BR> fclose(fp);<BR> printf("\n预约图书成功!\n*预约期限为一个月!\n*");<BR> second();<BR> }<BR> else <BR> {<BR> printf("\n该书已被借出或已被预约\n");<BR> second();<BR> }<BR> }<BR> else <BR> {<BR> printf("该书已遗损!");<BR> second();<BR> }<BR> }<BR> }<BR> if(!flag)<BR> {<BR> printf("该书不存在!\n");<BR> second();<BR> }<BR>}</P>
<P>我做到这,发现很乱了,请高手看看,哪里能修改更好!</P>
6.obj : error LNK2001: unresolved external symbol _MemberBook
哪位帮忙看看,谢谢啊,急 至少你也把mian()函数加上去嘛。。
页:
[1]
