zhou86 发表于 2006-4-27 01:41

[求助]图书管理系统,不知道错在哪里了

<P>#include &lt;string.h&gt;<BR>#include &lt;stdio.h&gt;<BR>#include &lt;math.h&gt;<BR>#include &lt;time.h&gt;<BR>#include &lt;stdlib.h&gt;<BR>#include &lt;dos.h&gt;<BR>#include &lt;conio.h&gt;<BR>#include &lt;process.h&gt;<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",&amp;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",&amp;Student-&gt;name);<BR> if((fp=fopen(Student-&gt;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-&gt;password[i]=getch())!='\r'&amp;&amp;i&lt;=14)//变星号输出<BR>   {<BR>    if(Student-&gt;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-&gt;password[i]='\0';<BR>   printf("\n请再次你输入你的密码!\n");<BR>   i=0;<BR>   while((newpass[i]=getch())!= '\r'&amp;&amp;i&lt;=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-&gt;password,newpass)!=0)<BR>   printf("\n你的两个密码不一样,请重新输入\n");<BR>  else<BR>   temp=1;<BR>  }<BR>    if((fp=fopen(Student-&gt;name,"w"))==NULL)<BR> {<BR>  printf("不能打开文件!");<BR>  return;<BR> }<BR> else if(fwrite(&amp;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-&gt;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'&amp;&amp;i&lt;=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(&amp;Student,sizeof(struct StudentList),1,fp);<BR>    if(strcmp(pw,Student-&gt;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",&amp;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",&amp;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'&amp;&amp;i&lt;=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'&amp;&amp;i&lt;=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'&amp;&amp;i&lt;=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-&gt;name,"r");<BR> fread(&amp;Student,sizeof(struct StudentList),1,fp);<BR> if(strcmp(oldpw,Student-&gt;password)==0)<BR> { <BR>  if(strcmp(newpw,newpw2)!=0)<BR>  {<BR>   printf("你的两个新密码不一样,请重新输入\n");<BR>      change();<BR>  }<BR>  strcpy(Student-&gt;password,newpw);<BR>  fclose(fp);<BR>  if((fp=fopen(Student-&gt;name,"w"))==NULL)<BR>  {<BR>   printf("不能打开文件!");<BR>   return;<BR>  }<BR>  else if(fwrite(&amp;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&lt;1000;w++)<BR> {fread(&amp;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&lt;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-&gt;name);<BR>               Book[i].yes=0;<BR>             fp=fopen("books_list.txt","wb");<BR>               for(j=0;j&lt;1000;j++)<BR>                        fwrite(&amp;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&lt;strlen(Book[0].name)!=0;i++)<BR>            fread(&amp;Book[0],sizeof(struct BookList),1,fp);<BR>         fclose(fp);<BR>         for(i=0;i&lt;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",&amp;Book[0].name);<BR> printf("\n请输入新书的分类号:");<BR> scanf("%d",&amp;Book[0].sort);<BR> printf("\n请输入新书的主编:");<BR> scanf("%s",&amp;Book[0].editor);<BR> printf("\n请输入新书的出版社:");<BR> scanf("%s",&amp;Book[0].publisher);<BR> printf("\n请输入新书的主题词:");<BR> scanf("%s",&amp;Book[0].theme);<BR> printf("\n请输入新书的版次:");<BR> scanf("%d",&amp;Book[0].edition);<BR> printf("\n请输入新书的出版日期:格式为(2006 12 31):");<BR> scanf("%s%s%s",&amp;Book[0].publish.year,&amp;Book[0].publish.month,&amp;Book[0].publish.day);<BR> printf("\n请输入新书的ISBN:");<BR> scanf("%d",&amp;Book[0].ISBN);<BR> printf("\n请输入新书的定价:");<BR> scanf("%f",&amp;Book[0].price);<BR> Book[0].okay=1;<BR>Book[0].yes=1;<BR> fwrite(&amp;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&lt;1000;w++)<BR> {fread(&amp;Book[w],sizeof(struct BookList),1,fp);<BR> }<BR> fclose(fp);<BR>      for(i=0;i&lt;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-&gt;name);<BR>               Book[i].yes=2;<BR>               <BR>                        fp=fopen("books_list.txt","wb");<BR>               for(j=0;j&lt;1000;j++)<BR>                        fwrite(&amp;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>

DoubleJ 发表于 2006-4-27 02:53

哎.不能进行下去,可惜啊. 

feng1256 发表于 2006-4-27 05:36

<P><STRONG>乱呀,眼睛花了,要是到晚上还没人看,我再瞧瞧[em02]</STRONG></P>

li0605020322 发表于 2008-6-24 13:02

我连接的时候怎么出现了2个错误啊:6.obj : error LNK2001: unresolved external symbol _AllBooks
6.obj : error LNK2001: unresolved external symbol _MemberBook
哪位帮忙看看,谢谢啊,急

chinaxy11 发表于 2008-6-24 22:46

至少你也把mian()函数加上去嘛。。

页: [1]

编程论坛