图书馆问题 C语言写的啊 帮帮忙 很急啊
图书管理系统
图书管理用户通过注册用户名和密码,然后使用用户名和密码登陆图书管理系统。图书信息包括图书分类号、主编、出版社、主题词、版次、出版日期、ISBN、定价、借阅人借阅证号、借阅日期、借阅预约人借阅证号、预约日期、遗损情况。注册使用用户信息和图书信息均分别存储在文件中。(图书信息要求采用二进制文件存储数据。)
(1)、系统使用者注册: 系统使用用户通过注册系统进行用户名和密码的注册;
(2)、密码修改:成功注册后的用户可以在旧密码正确的情况下修改密码;
(3)、新书入库
(4)、借阅登记、管理(只有书本没有被借阅、没有预约、没有遗损的情况下可以被借出,被预约的图书预约期内只有预约人可以借出)
(5)、借阅查询(可以根据借阅证号、书名等查询)
(6)、催还、预约(每本书只能借出一个月,根据借出日期催还过期的书)
(7)、遗损处理(书本遗失或损坏进行遗损登记)
功能相近即可
这是第一次写这么大程序啊,大一而已,帮帮忙,明天就要交了
[解决办法]
这个用纯C写工作量还真的有点大,如果用数据库的工具写估计会轻松许多.
[解决办法]
给个类似的 自己修改去
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct BOOK
{
int id,usr[10],total,store,days[10];
char name[31],author[21];
}books[100];
/*上面是结构体的定义,用于存放书籍及借书的信息。*/
void page_title(char *menu_item)
{
clrscr();
printf( "> > > library system < < <\n\n- %s -\n\n ",menu_item);
}
/*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/
void return_confirm(void)
{
printf( "\npress any key to return……\n ");
getch();
}
/*上面是返回前请求确认的函数,以便在返回前观察结果*/
int search_book(void)
{
int n,i;
printf( "please input the number: ");
scanf( "%d ",&i);
for(n=0;n <100;n++)
{
if(books[n].id==i)
{
printf( "name:%s\n ",books[n].name);
printf( "author:%s\n ",books[n].author);
printf( "total number:%d of ",books[n].store);
printf( "%d\n ",books[n].total);
return n;
}
}
printf( "\nthe bumber is fault.\n ");
return -1;
}
/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返
回数组下标,如果找不到相应记录则提示错误并返回-1。*/
void book_out(void)
{
int n,s,l,d;
page_title( "borrow a book ");
if((n=search_book())!=-1&&books[n].store> 0)
{
printf( "input your id number: ");
scanf( "%d ",&s);
printf( "input the days: ");
scanf( "%d ",&d);
for(l=0;l <10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!=-1&&books[n].store==0) printf( "此书已经全部借出.\n ");
return_confirm();
}
/*上面是借书的函数,首先调用找书函数*/
void book_in(void)
{
int n,s,l;
page_title( "归还图书 ");
if((n=search_book())!=-1&&books[n].store <books[n].total)
{
printf( "借阅者图书证列表:\n ");
for(l=0;l <10;l++)
if (books[n].usr[l]!=0)
printf( "[%d] - %d天\n ",books[n].usr[l],books[n].days[l]);
printf( "请输入借书证序号: ");
scanf( "%d ",&s);
for(l=0;l <10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!=-1&&books[n].store==books[n].total)
printf( "全部入藏.\n ");
return_confirm();
}
void book_add(void)
{
int n;
page_title( "注册新书 ");
for(n=0;n <100;n++)
if(books[n].id==0) break;
printf( "序号: ");
scanf( "%d ",&books[n].id);
printf( "书名: ");
scanf( "%s ",&books[n].name);
printf( "作者: ");
scanf( "%s ",&books[n].author);
printf( "数量: ");
scanf( "%d ",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
void book_del(void)
{
int n;
page_title( "注销旧书 ");
if((n=search_book())!=-1) books[n].id=0;
printf( "该书已注销.\n ");
return_confirm();
}
void main(void)
{
menu: page_title( "操作选单 ");
printf( "请用数字键选择操作\n\n ");
printf( "1 借阅图书\n2 归还图书\n\n ");
printf( "3 注册新书\n4 注销旧书\n\n ");
printf( "\n0 退出\n ");
switch(getch())
{
case '1 ' : book_out();break;
case '2 ' : book_in();break;
case '3 ' : book_add();break;
case '4 ' : book_del();break;
case '0 ' : exit(0);
}
goto menu;
}