当前位置:首页 > 代码 > 正文

图书管理系统界面设计代码(图书管理系统程序框图)

admin 发布:2022-12-19 21:21 121


今天给各位分享图书管理系统界面设计代码的知识,其中也会对图书管理系统程序框图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

采用JAVA设计一个小型图书管理程序(只要增删查改)

使用java语言设计一款小型图书管理系统,能够通过主界面根据关键字查询图书信息,能够添加图书信息和删除过去图书信息

c语言 图书管理系统 源代码

#include

#include

#include

#include

#include

struct book{

char number[100];

char tittle[100];

char writer[100];

char publisher[100];

char date[100];

char price[100];

char status[100];

char reader[100];

};

void search_book();

void borrow_book();

void return_book();

void add_book();

void delete_book();

void modify_book();

void scan_book();

int main()

{

int c1=0,c2,c3;

int l,x,z;

while(1)

{

system("color 2C");

printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");

printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\n");

printf("\t\t\t* [1] 用户登录 *\n");

printf("\t\t\t* [2] 管理员登录 *\n");

printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");

printf("\n");

printf("请选择操作 :");

scanf("%d",c1);

system("cls");

break;

}

if(c1==1)

{

while(1){

system("color 2C");

printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");

printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\n");

printf("\t\t\t* [1] 查询图书 *\n");

printf("\t\t\t| [2] 借阅图书 |\n");

printf("\t\t\t* [3] 借图书 *\n");

printf("\t\t\t* [4] 浏览图书信息 *\n");

printf("\t\t\t| [5] 退图书管理系统 |\n");

printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");

printf("\n");

printf("请选择操作 :");

scanf("%d",c2);

getchar();

switch(c2)

{

case 1:search_book(); break;

case 2:borrow_book(); break;

case 3:return_book(); break;

case 4:scan_book(); break;

case 5:system("cls"); return 0;

}

}

}

if(c1==2)

{

while(1){

system("color 2C");

printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");

printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\n");

printf("\t\t\t| [1] 添加图书 |\n");

printf("\t\t\t* [2] 删减图书 *\n");

printf("\t\t\t| [3] 修改图书信息 |\n");

printf("\t\t\t* [4] 浏览图书信息 *\n");

printf("\t\t\t| [5] 退图书管理系统 |\n");

printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");

printf("\n");

printf("请选择操作 :");

scanf("%d",c3);

getchar();

switch(c3)

{

case 1:add_book(); break;

case 2:delete_book(); break;

case 3:modify_book(); break;

case 4:scan_book(); break;

case 5:system("cls"); return 0;

}

}

}

}

/*查询图书*/

void search_book()

{

FILE*fp;

struct book n;

struct book nn;

int l,r;

char x,z;

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb");

while(1)

{

l=0;

system("cls");

printf("请输入图书名称:");

scanf("%s",n.tittle);

fflush(stdin);

rewind(fp);

while(1)

{

fread(nn,sizeof(nn),1,fp);

if(feof(fp))

break;

r=strcmp(n.tittle,nn.tittle );

if(r==0)

{

l=1;

break;

}

}

if(l==0)

{

printf("没要查询图书\n\n ");

}

else

{

printf("查询图书:");

printf("\n");

printf("****************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

printf("%s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);

printf("\n\n\n");

}

printf("否继续查询图书 ? [(y)/否(n)] ? \n\n");

do

{

x=getche();

}while(x!='n'x!='y');

if(x=='n')

break;

}

fclose(fp);

system("cls");

}

//添加

void add_book()

{

FILE *fp;

struct book n;

struct book nn;

char x,z;

int l,r;

fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+");

do

{

system("cls");

do

{

l=0;

printf("\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

fflush(stdin);

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);

system("cls");

rewind(fp);

while(!feof(fp))

{

fread(nn,sizeof(nn),1,fp);

r=strcmp(n.tittle,nn.tittle);

if(r==0)

{

l=1;

printf(" 该图书已存请输入新图书信息: \n\n");

break;

}

}

}while(l);

fwrite(n,sizeof(n),1,fp);

printf("\n");

printf("否继续输入新图书信息[y/n] \n\n");

do

{

x=getche();

}while(x!='n'x!='y');

}while(x=='y');

fclose(fp);

system("cls");

}

//删除图书

void delete_book()

{

FILE *fp,*fp1;

char x,z;

struct book n;

struct book nn;

int l,r;

fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+");

while(1)

{

l=0;

system("cls");

printf("\n");

printf("请输入需要删除图书名: \n\n");

fflush(stdin);

scanf("%s",n.tittle);

rewind(fp);

while(1)

{

fread(nn,sizeof(nn),1,fp);

if(feof(fp))

break;

r=strcmp(n.tittle,nn.tittle);

if(r==0)

{

l=1;

break;

}

}

if(l==0)

{

printf("\n");

printf("起未找该图书 \n");

}

else

{

printf("\n");

printf("****************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);

printf("\n");

printf("确认删除图书信息 [(y)/否(n)]\n\n");

do

{

z=getche();

}while(z!='n'z!='y');

if(z=='n')

break;

else

{

fp1=fopen("F:\\课程设计\\图书管理系统new.txt","wb");

rewind(fp);

while(1)

{

fread(nn,sizeof(nn),1,fp);

if(feof(fp))

break;

r=strcmp(n.tittle,nn.tittle);

if(r!=0)

fwrite(nn,sizeof(nn),1,fp1);

}

fclose(fp);

fclose(fp1);

fp=fopen("F:\\课程设计\\图书管理系统.txt","wb");

fp1=fopen("F:\\课程设计\\图书管理系统new.txt","rb");

while(1)

{

fread(nn,sizeof(nn),1,fp1);

if(feof(fp1))

break;

fwrite(nn,sizeof(nn),1,fp);

}

fclose(fp);

fclose(fp1);

}

}

printf("\n");

printf("否继续删除图书信息 [(y)/否(n)] \n");

do

{

x=getche();

}while(x!='n'x!='y');

if(x=='n')

break;

}

fclose(fp);

system("cls");

}

//修改图书信息

void modify_book()

{

FILE *fp;

struct book n;

struct book nn;

int l,r;

char x,z;

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");

while(1)

{

l=0;

printf("\n");

system("cls");

printf("请输入需要修改图书名: \n\n");

fflush(stdin);

scanf("%s",n.tittle);

system("cls");

rewind(fp);

while(1)

{

fread(nn,sizeof(nn),1,fp);

if(feof(fp))

break;

r=strcmp(n.tittle,nn.tittle);

if(r==0)

{

l=1;

break;

}

}

if(l==0)

{

printf("\n");

printf("起未找该图书信息 \n\n");

}

else

{

printf("\n");

printf("****************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);

printf("请依修改图书信息\n\n\n");

fflush(stdin);

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);

fseek(fp,sizeof(nn),1);

fwrite(n,sizeof(nn),1,fp);

}

printf("\n");

printf(" 否继续修改用户信息[y/n]? \n\n");

do

{

x=getch();

}while(x!='n'x!='y');

if(x=='n')

break;

}

fclose(fp);

system("cls");

}

//借书

void borrow_book()

{

FILE*fp;

struct book n;

struct book nn;

char x,z;

int l,r;

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");

while(1)

{

l=0;

system("cls");

printf("\n");

printf("请输入需要借阅图书名: \n");

fflush(stdin);

scanf("%s",n.tittle);

rewind(fp);

while(1)

{

fread(nn,sizeof(nn),1,fp);

if(feof(fp))

break;

r=strcmp(n.tittle,nn.tittle);

if(r==0)

{

l=1;

break;

}

}

if(l==0)

{

printf("\n");

printf("起未找该图书 \n");

}

else

{ printf("\n");

printf("****************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);

printf("\n");

fflush(stdin);

printf("请输入图书信息并修改库状态及借阅者信息");

printf("****************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);

fseek(fp,sizeof(nn),1);

fwrite(n,sizeof(nn),1,fp);

}

printf("\n");

printf(" 否继续借书 [(y)/否(n)] \n\n");

do

{

x=getch();

}while(x!='n'x!='y');

if(x=='n')

break;

}

fclose(fp);

system("cls");

}

//书

void return_book()

{

FILE*fp;

struct book n;

struct book nn;

char x,z;

int l,r;

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");

while(1)

{

l=0;

system("cls");

printf("\n");

printf("请输入需要借图书名: \n");

fflush(stdin);

scanf("%s",n.tittle);

rewind(fp);

while(1)

{

fread(nn,sizeof(nn),1,fp);

if(feof(fp))

break;

r=strcmp(n.tittle,nn.tittle);

if(r==0)

{

l=1;

break;

}

}

if(l==0)

{

printf("\n");

printf("起未找该图书 \n");

}

else

{

printf("\n");

printf("****************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);

printf("\n");

fflush(stdin);

printf("请输入图书信息并修改库状态 \n\n");

printf("****************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);

fseek(fp,-(int)sizeof(nn),1);

fwrite(n,sizeof(nn),1,fp);

}

printf("\n");

printf("否继续书 [(y)/否(n)] \n");

do

{

x=getche();

}while(x!='n'x!='y');

if(x=='n')

break;

}

fclose(fp);

system("cls");

}

//浏览

void scan_book()

{

FILE*fp;

char x,z;

struct book n;

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb");

rewind(fp);

system("cls");

while(1)

{

fread(n,sizeof(n),1,fp);

if(feof(fp))

break;

else

{

printf("********************************************\n");

printf("编号 书名 作者 版社 版间 价格 状态 借阅者\n");

printf("\n");

printf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);

printf("\n");

}

}

printf("\n");

printf("主菜单请按车");

do

{

x=getche();

}while(x!='\r');

if(x=='\r')

{

fclose(fp);

system("cls");

}

}

C语言 有关于图书信息管理系统代码

#includestdio.h

#include string.h

#include stdlib.h

#includeconio.h

#define Max 2

typedef struct book //书的信息

{

char book_num[10];//书号

char book_name[20];//书名

char book_writer[10];//作者

int book_xy;//书的剩余数量

int book_kc;//书的总数量

struct book *next;

}BK;

typedef struct borrow //被借书的信息

{

char borrow_book_num[10];//借书书号

char limit_date[8];//借书归还日期

}BO;

typedef struct reader //读者信息

{

char reader_num[10];//读者号

char reader_name[10];//读者姓名

int right;//已借数量

BO borrow[Max];//已借书信息

struct reader *next;

}RD;

BK *h_book;

RD *h_reader;

void Login();

int Menu();

void Init();

void Init_book();

void Menu_select();

void Insert_New_Book();

void Find_Book();

void add_reader();

void Print_reader();

void Print_book();

void Borrow_Book();

void Return_Book();

void Save();

void Save_Book();

void Save_Reader();

void Load();

void Load_Reader();

void Load_Book();

void Login()

{

system("cls");

printf("\n\n\n\t\t\t欢迎使用图书管理系统\n");

printf("\n\n\t\t本程序分析者 秦义 学号:200907014122\n\n\n\n\n\n\n");//以前是设计者 xxxx

printf("\n\n\n\t\t 按 任 意 键 进 入 系 统 ...");

getch(); system("cls");

}

int Menu() /*主菜单*/

{ int dm;

printf("\n\t\t图书管理系统主菜单\n");

printf("=================================================\n");

printf("☆\t0----退出系统 ☆\n");

printf("☆\t1----采编入库 ☆\n");

printf("☆\t2----登记读者 ☆\n");

printf("☆\t3----借阅登记 ☆\n");

printf("☆\t4---还书管理 ☆\n");

printf("☆\t5---查询图书信息 ☆\n");

printf("☆\t6----查询读者信息 ☆\n");

printf("=================================================\n");

printf("请选择相应的代码:");

for(;;)

{ scanf("%d",dm);

if(dm0||dm6)

printf("\n错误!请重新输入:");

else break;

}

return dm;

}

void Menu_select()/*主菜单选择函数*/

{

for(;;)

{

switch(Menu()) /*功能选择*/

{ case 0:

system("cls");

Save();

printf("\n\n\t文件保存成功!\n");

printf("\n\n\t欢迎下次使用本系统!\n");

getch();

exit(0);

case 1:Insert_New_Book();break;

case 2:add_reader();break;

case 3:Borrow_Book();break;

case 4:Return_Book();break;

case 5:Print_book();break;

case 6:Print_reader();break;

default:printf("\n错误!");

exit(0);}

}

}

void Init() /*初始化*/

{

Init_book();

}

void Init_book() /*初始化图书信息*/

{

BK *p0;

printf("\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n");

p0=(BK*)malloc(sizeof(BK));

h_book=p0;

printf("\n请输入图书信息:\n");

printf("图书编号:"); /*输入图书编号(唯一)*/

scanf("%s",p0-book_num);

printf("图书名称:"); /*输入图书名称*/

scanf("%s",p0-book_name);

printf("图书作者:"); /*输入图书作者*/

scanf("%s",p0-book_writer);

printf("图书数量:"); /*输入图书数量*/

scanf("%d",p0-book_kc);

p0-book_xy=p0-book_kc; /*开始时图书现有量和库存量相等*/

p0-next=NULL;

printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");

getch();

system("cls");

}

void Insert_New_Book()/*新书入库*/

{

BK *p,*p0,*p1;

p=p1=h_book;

printf("\n新书入库模块...\n");

printf("\n请输入新书信息..\n包括书号.书名.数量..\n");

p0=(BK *)malloc(sizeof(BK));

printf("图书编号:");

scanf("%s",p0-book_num);

while(strcmp(p0-book_num,p1-book_num)!=0p1-next!=NULL)

p1=p1-next;

if(strcmp(p0-book_num,p1-book_num)==0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/

{

printf("\n此编号图书已存在!!直接入库!\n");

printf("图书数量:");

scanf("%d",p0-book_kc);

p1-book_kc+=p0-book_kc;

p1-book_xy+=p0-book_kc;

}

else/*若不存在,则需要输入其他的信息 ,然后在进行插入操作*/

{

printf("图书名称:");

scanf("%s",p0-book_name);

printf("图书作者:");

scanf("%s",p0-book_writer);

printf("图书数量:");

scanf("%d",p0-book_kc);

while(p-next)

{ p=p-next; }

if(h_book==NULL) h_book=p0; /*此处分两种情况,链表中没有数据,head直接指向p0处*/

else p-next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/

p0-next=NULL;

p0-book_xy=p0-book_kc;

}

printf("\n新书入库完毕!按任意键继续下一步操作..\n");

getch();

system("cls");

}

void add_reader()/*添加读者*/

{ RD *p0;

int i;

printf("\n读者初始化开始,请输入读者信息..\n包括书证号.姓名..\n");

p0=(RD*)malloc(sizeof(RD)); /*申请新结点存储空间*/

h_reader=p0;

printf("\n请输入读者的信息:\n");

printf("读者书证号:");

scanf("%s",p0-reader_num);

printf("读者姓名:");

scanf("%s",p0-reader_name);

p0-right=0;

for(i=0;iMax;i++)

{

strcpy(p0-borrow[i].borrow_book_num,"0"); /*所借图书直接置为0(即没有借书)*/

strcpy(p0-borrow[i].limit_date,"0");

}

p0-next=NULL;

printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");

getch();

system("cls");

}

void Borrow_Book() /*借书模块*/

{

BK *p0; RD *p1;

char bo_num[10],rea_num[10],lim_date[8];

int i;

p0=h_book; p1=h_reader;

printf("\n借书模块...\n");

printf("\n请输入借书的读者书证号:");

scanf("%s",rea_num);

while(p1-next!=NULLstrcmp(rea_num,p1-reader_num)!=0) //查找读者号

{p1=p1-next;}

if(p1-next==NULLstrcmp(rea_num,p1-reader_num)!=0)

{

printf("\n此读者编号不存在!按任意键返回..\n");

goto END;

}

printf("\n请输入你要借的书的编号:");

scanf("%s",bo_num);

while(strcmp(bo_num,p0-book_num)!=0p0-next!=NULL) //查找书号

{p0=p0-next;}

if(p0-next==NULLstrcmp(bo_num,p0-book_num)!=0)

{

printf("\n此图书编号不存在!按任意键返回..\n");

}

else if(p0-book_xy=0)

{

printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回....");

}

else if(p1-right=Max)

{

printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回....");

}

else if(strcmp(p1-borrow[0].borrow_book_num,"0")!=0)

{

for(i=0;iMax;i++)

{

if(strcmp(p1-borrow[i].borrow_book_num,bo_num)==0)

{

printf("\n抱歉!同一个读者不能同借两本相同的书!\n");

}

else if(strcmp(p1-borrow[i].borrow_book_num,"0")==0)

{

printf("\n请输入你要归还图书的日期:");

scanf("%s",lim_date);

strcpy(p1-borrow[p1-right++].borrow_book_num,bo_num);

strcpy(p1-borrow[p1-right-1].limit_date,lim_date);

p0-book_xy--;

printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1-reader_num);

}

}

}

else

{

printf("\n请输入你要归还图书的日期:");

scanf("%s",lim_date);

strcpy(p1-borrow[p1-right++].borrow_book_num,bo_num);

strcpy(p1-borrow[p1-right-1].limit_date ,lim_date );

p0-book_xy--;

printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1-reader_num);

}

END:getch(); system("cls");

}

void Return_Book() /*还书模块*/

{

BK *p; RD *q;

int i,j,find=0;

char return_book_num[10],return_reader_num[10];

p=h_book; q=h_reader;

printf("\n还书模块...\n");

printf("\n请输入要还书的读者编号:");

scanf("%s",return_reader_num);

while(q-next!=NULLstrcmp(return_reader_num,q-reader_num)!=0)

q=q-next;

if(q-next==NULLstrcmp(return_reader_num,q-reader_num)!=0)

{

find=2;

printf("\n此读者编号不存在!按任意键返回..\n");

goto end;

}

printf("\n请输入读者还书的编号:");

scanf("%s",return_book_num);

while(p-next!=NULLstrcmp(return_book_num,p-book_num)!=0)

p=p-next;

if(p-next==NULLstrcmp(return_book_num,p-book_num)!=0)

{

find=2;

printf("\n错误!此图书编号不存在!按任意键返回..\n");

goto end;

}

for(i=0;iMax;i++)

if(strcmp(return_book_num,q-borrow[i].borrow_book_num)==0) /*如果此读者借了此书*/

{

find=1;

for(j=i;jMax-1;j++)

{

strcpy(q-borrow[j].borrow_book_num,q-borrow[j+1].borrow_book_num);

strcpy(q-borrow[j].limit_date,q-borrow[j+1].limit_date);

}

strcpy(q-borrow[Max-1].borrow_book_num,"0");

strcpy(q-borrow[Max-1].limit_date,"0");

p-book_xy++;

q-right--;

printf("\n编号%s的读者还书完毕!按任意键继续下步操作..",return_reader_num);

}

if(find==0)

printf("\n错误!此读者未借此书!按任意键返回..\n");

end: getch(); system("cls");

}

void Print_book() /*查询图书信息*/

{

BK *p;

p=h_book;

printf("\n图书信息如下:\n\n");

printf("图书编号\t图书名称\t图书作者\t现有\t\t库存\n");

while(p!=NULL)

{

printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p-book_num,p-book_name,p-book_writer,p-book_xy,p-book_kc);

p=p-next;

}

printf("\n图书信息打印完毕!按任意键继续下一步操作..");

getch();

system("cls");

}

void Print_reader() /*查询读者信息*/

{

RD *p;

int i;

p=h_reader;

printf("\n读者信息如下:\n\n");

printf("读者书证号\t\t读者姓名\n");

printf("\n");

while(p!=NULL)

{

printf("\t%s\t\t%s",p-reader_num,p-reader_name);

for(i=0;iMax;i++)

{

printf("\n");

printf("图书编号",i+1);

printf("\t还书日期",i+1);

printf("\n");

printf("\t%s",p-borrow[i].borrow_book_num);

printf("\t\t%s",p-borrow[i].limit_date);

}

printf("\n");

p=p-next;

}

printf("\n读者信息打印完毕!按任意键继续下一步操作..");

getch();

system("cls");

}

//文件模块

void Save() /*保存信息*/

{

Save_Reader();

Save_Book();

}

void Save_Reader() /*保存读者信息*/

{

FILE *fp_reader;

RD *p,*p0;

p=h_reader;

if((fp_reader=fopen("Reader.txt","wb"))==NULL) /*创建文件,进行保存*/

{

printf("\n文件保存失败!\n请重新启动本系统...\n");

exit(0);

}

while(p!=NULL)

{

if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*将链表中的信息写入文件中*/

printf("\n写入文件失败!\n请重新启动本系统!\n");

p0=p;

p=p-next;

free(p0); /*释放所有结点*/

}

h_reader=NULL;

fclose(fp_reader); /*关闭文件*/

}

void Save_Book() /*保存图书信息*/

{

FILE *fp_book; /*创建文件型指针*/

BK *p,*p0;

p=h_book;

if((fp_book=fopen("Book.txt","wb"))==NULL) /*创建文件,进行保存*/

{

printf("\n文件保存失败!\n请重新启动本系统...\n");

exit(0);

}

while(p!=NULL)

{

if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*将链表中的信息写入文件中*/

printf("\n写入文件失败!\n请重新启动本系统!\n");

p0=p;

p=p-next;

free(p0);

}

h_book=NULL;

fclose(fp_book); /*关闭文件*/

}

void Load() /*加载信息*/

{

Load_Reader();

Load_Book();

}

void Load_Reader() /*加载读者信息*/

{

RD *p1,*p2,*p3;

FILE *fp; /*创建文件型指针*/

fp=fopen("book.txt","rb"); /*打开文件*/

p1=(RD *)malloc(sizeof(RD));

fread(p1,sizeof(RD),1,fp);

h_reader=p3=p2=p1;

while(! feof(fp)) /*读出信息,重新链入链表*/

{ p1=(RD *)malloc(sizeof(RD));

fread(p1,sizeof(RD),1,fp);

p2-next=p1;

p3=p2;

p2=p1;

}

p3-next=NULL;

free(p1);

fclose(fp); /*关闭文件*/

}

void Load_Book() /*加载图书信息*/

{

BK *p1,*p2,*p3;

FILE *fp; /*创建文件型指针*/

fp=fopen("Book.txt","rb"); /*打开文件*/

p1=(BK *)malloc(sizeof(BK));

fread(p1,sizeof(BK),1,fp);

h_book=p3=p2=p1;

while(! feof(fp)) /*读出信息,重新链入链表*/

{ p1=(BK *)malloc(sizeof(BK));

fread(p1,sizeof(BK),1,fp);

p2-next=p1;

p3=p2;

p2=p1;

}

p3-next=NULL;

free(p1);

fclose(fp); /*关闭文件*/

}

void main()

{

FILE *fp_book,*fp_reader; /*创建文件型指针*/

Login();

if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("Reader.txt","rb"))==NULL)

{ Init(); }

else Load();

Menu_select(); /*调用主菜单*/

}

高加分!!!!求用C语言编程序~~~~

C语言课程设计报告:(流程图就不好给出了)

图书管理系统

系统需求

一、 新书入库: 图书信息包括书名, 书号, 库存量, 现存量共4项. 首先输入3本书的信息, 并将其存入文件 ”book.dat” 中. 当有新书入库时, 先判断文件中是否有此书( 即比较书名 ), 若有则修改库存量, 现存量的信息; 若无此书, 则将该书的信息添加到文件中.

二、图书查询: 输入一个书号, 在文件中查找此书, 若找到则输出此书的全部信息; 若找不到则输出查找失败的信息.

三、借阅管理

(1) 每个读者的信息包括姓名, 编号, 1张借书卡( 限借一本书 ), 输入3个读者的信息存入文件 “reader . dat” 中.

(2) 借书登记: 输入读者的编号, 所借图书的书号, 先判断姓名是否在文件”reader.dat” 中, 若有则将书号存入一张借书卡上( 注: 初始时借书卡的信息都为零, 借书后借书卡的信息改为所借书的书号), 并修改文件”reader.dat”的相应内容, 同时修改文件”book.dat”中此书的现存量. 若”reader.dat”无此姓名, 则应提示错误

(3) 还书管理: 输入读者的编号, 所还图书的书号, 将借书卡的信息置为零, 并修改文件”reader.dat”的相应内容, 同时修改文件”book.dat”中此书的现存量.

四、输出全部图书信息和全部读者信息

五、退出系统.

六、附加说明:系统将来完善的功能有:添加读者,一位读者可同时借阅和归还多本图书等

总体设计

一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

1、 新书入库模块:可用一个函数insert_new_book(char book_num[],char book_name[],int number)来实现。形参分别为:书名, 书号,以及有多少本书要入库,再根据要求将信息写入文件boot.dat中。又由于最开始要输入三本新书,故可以加一个初始化函数init_book(),但是初始化函数只执行一次,也就是在系统第一次运行的时候执行,此时可以根据判断是否存在boot.dat这个文件来决定是否执行初始化函数.

2、 查询模块:可用一个函数void find_book(char book_num[])来实现。找到就输出此书全部信息,找不到就输出查找失败信息。

3、 借阅管理模块:

(1) 三个读者的信息可以在系统初始化时完成.即可用初始化函数init_reader()来实现对读者的初始化。因为读者初始化函数也只是在系统第一次运行的时候执行一次,故也可以根据是否存在reader.dat文件来确定是否执行此函数。(到现在可以发现在系统初始化函数里,至少已经需要调用两个初始化函数了)

(2) 借书登记模块:可用一个函数borrow_book(char reader_num[],char book_num[])来实现。在函数中要分别判断

A 该读者的编号是否已经存在,如果不存在,则提示错误。

B 该读者的借阅书是否已满(即最多只能借1本书)如果是,则提醒该用户先去还书

C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。

借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存量。

(3) 还书管理模块:可用一个函数return_book(char reader_num[],

char book_num[])来实现。在实现此函数时要判断:

A 该读者的姓名是否已经存在,如果不存在,则提示错误。

B 该读者是否已经借阅此书。如果没有,则提示错误。

C 还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。

4、 输出图书和读者信息:可分别用模块print_book()和print_reader()来实现

直接从book.dat文件和reader.dat文件中读取信息并输出。

5、 退出系统:可用一个函数exit()来实现。首先将信息保存到文件,释放动态创建的内存空间,再退出此程序。

详细设计

一、 界面设计

此系统界面采用图形和数字化菜单设计。

主界面设计如下:

图书管理系统

图书管理系统主菜单

请选择相应的数字执行相应的功能:

0:退出此系统

1:新书入库

2:图书查询

3:借书登记

4:还书管理

5:输出全部图书信息和读者信息

各子界面如下:

1、 新书入库界面:

请选择相应的数字执行相应的功能:

10:返回主菜单

11:新书入库

请输入新书名:

请输入新书号:

请输入新书数量:

(注:新书入库成功后,程序返回到子界面1)

2、 图书查询界面界面:

请选择相应的数字执行相应的功能:

20:返回主菜单

21:图书查询

请输入需要查询的书号:

(注:图书查询完成后,返回到子界面2)

` 3、借书登记界面:

请选择相应的数字执行相应的功能:

30:返回主菜单

31:借书登记

请输入读者编号:

请输入所借书号:

(注:借书过程完成后,返回到子界面3)

` ` 4、还书管理:

请选择相应的数字执行相应的功能:

40:返回主菜单

41:还书登记

请输入读者编号:

请输入所借书号:

(注:还书过程完成后,返回到子界面4)

5、输出全部图书和读者信息:

请选择相应的数字执行相应的功能:

50:返回主菜单

51:输出全部图书信息:

书号 书名: 库存量 现存量

52:输出全部读者信息:

读者编号 读者姓名 所借书号

(注:输出图书和读者信息后,返回到子界面5)

二、 数据结构设计

程序中考虑到图书信息和读者信息中都包含有不同类型的数据,故分别建立图书和读者两种类型的结构体;由于图书和读者的数量非固定,所以采用动态链式存储来实现。

图书类型:

typedef struct bk{

char book_num[11]; /* 书号采用10位编码最后1位为字符串结束标志(下同). */

char book_name[41]; /* 书名规定不超过40个字母(20 个汉字) */

unsigned book_kc,book_xc; /* book_kc 代表库存梁,book_xc代表现存量 */

struct bk *next;

}book;

读者类型:

typedef struct rd{

char reader_num[11]; /* 读者编号采用10位编码 */

char reader_name[11]; /* 读者姓名 */

char reader_book_num[11]; /*表示所借书号,初始值为“0”*/

struct bk *next;

}reader;

程序代码:

#include stdio.h

#include graphics.h /*图形函数头文件 */

#include math.h

#include string.h

typedef struct bk {

char book_num[11];

char book_name[41];

int book_kc;

int book_xc;

struct bk * next;

}book; /* 图书信息*/

typedef struct rd {

char reader_num[11];

char reader_name[11];

char reader_book_num[11];

struct rd * next ;

}reader;/*读者信息*/

struct bk * h_book,* h_reader; /*全局变量,分别为指向图书信息链表和读者信息链表的头指针*/

void Form_Insert_New_Book(); /*新书入库菜单*/

void Form_Find_Book(); /*查询图书菜单 */

void Form_Borrow_Book(); /*借书菜单*/

void Form_Return_Book(); /*还书菜单*/

void Find_Book(char *); /*查询图书*/

void Insert_New_Book(char *,char * ,int ); /*新书入库,即在链表中插入一个新节点*/

void Borrow_Book(char *,char *);/*借书,修改读者借阅信息和图书的现存信息*/

void Return_Book(char *,char *);/*还书,修改读者借阅信息和图书的现存信息*/

void print_book(struct bk *);/*输出全部图书信息*/

void print_reader(struct rd *);/*输出全部读者信息*/

void load_data();/*从文件中读取数据,链表头指针指向第一个节点*/

void init_reader();/*第一次运行程序时对三个读者的初始化*/

void init_book();/*第一次运行程序时对三本图书的初始化*/

void save();/*将链表中的信息保存到文件中*/

void M_Form()/*主菜单*/

{ char ch;

printf("\n 图书管理系统主窗口");

printf("\n 0:退出系统");

printf("\n 1:新书入库");

printf("\n 2:图书查询");

printf("\n 3:借书登记");

printf("\n 4:还书管理");

printf("\n 5:输出全部信息");

do{ /*此循环用来保证选择正确的数字键执行相应的功能*/

printf("\n\n 请选择相应的功能代码:");

scanf("%c",ch);

fflush(stdin); /*用于清除键盘缓冲区中的多余字符*/

}while(ch!='0'ch!='1'ch!='2'ch!='3'ch!='4'ch!='5');

switch(ch) /*根据输入的字符进行选择执行相应的模块*/

{ case '0':exit(0);

case '1':Form_Insert_New_Book();break;

case '2':Form_Find_Book();break;

case '3':Form_Borrow_Book();break;

case '4':Form_Return_Book();break;

case '5':load_data();print_book(h_book);print_reader(h_reader);M_Form();

default:printf("error\n");exit(0);

}

}

void Form_Find_Book()

{ char ch;

char book_num[11];

printf("\n 图书查询功能模块,请选择相应的功能代码:\n");

printf(" 0:返回到主菜单\n");

printf(" 1:图书查询");

do{

printf("\n\n 请选择相应的功能代码:");

scanf("%c",ch);

fflush(stdin);

}while(ch!='0'ch!='1');

switch(ch)

{ case '0':M_Form();break; /*选择0,则返回到上一级目录,即主菜单*/

case '1':

{ printf(" \n请输入需要需要查询的书的编号:");

scanf("%s",book_num);

fflush(stdin);

Find_Book(book_num); /*执行查询*/

Form_Find_Book();/*查询完毕后继续返回到查询窗口,执行下一个查询*/

}

default:printf("error\n");exit(0);

}

}

void Find_Book(char book_num[]) /*查询图书模块,根据图书编号查询*/

{ struct bk *p;

p=h_book;

while(p!=NULLstrcmp(p-book_num,book_num)!=0)

p=p-next; /*此循环用于查找,如果在中间找到,则p就不可能到末尾指向空*/

if(p==NULL) printf("\n\t此编号对应的图书不存在!\n");

else { printf("\n\t图书编号\t图书名\t库存量\t现存量 \n");

printf(" %10s\t %10s\t %d\t %d\t\n",p-book_num,p-book_name,p-book_kc,p-book_xc);

}

getch();

}

void init_book() /*初始化图书模块*/

{ book ba[3];

FILE *fp;

int i;

printf("\n 系统即将进行初始化,图书初始化模块:\n");

printf("\n 请分别输入三本书的书号,书名,数量(以空格隔开):\n ");

for(i=0;i3;i++) /*输入3本图书进行初始化*/

scanf("%s%s%d",ba[i].book_num,ba[i].book_name,ba[i].book_kc);

for(i=0;i3;i++) {ba[i].book_xc=ba[i].book_kc;} /*开始时库存=现存*/

if((fp=fopen("book.dat","wb"))==NULL)/*建立新文件book.dat准备写入数据*/

{ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }

for(i=0;i3;i++)/*将初始化的3本图书写入文件book.dat中*/

{ if(fwrite(ba[i],sizeof(struct bk),1,fp)!=1)

{ printf("\写数据错误!\n"); exit(0); }

}

fclose(fp);

}

void init() /*对图形函数、图书信息、读者信息进行初始化(本程序中暂且没有用图形函数)*/

{ int drive=DETECT,mode=0;

initgraph(drive,mode,"");

init_book();

init_reader();

}

void Insert_New_Book(char book_num[],char book_name[],int number)

/*增加1本新书,读入新书的名称、编号和数量*/

{ struct bk *book_fp;

struct bk *p,*q,*t;

q=p=h_book;

while(p!=NULLstrcmp(p-book_num,book_num)!=0) { q=p;p=p-next; }

if(strcmp(p-book_num,book_num)==0)

{ printf("\n\t\t此编号已经存在,请重新输入!\n");

return;

}

t=(struct bk *)malloc(sizeof(struct bk));

strcpy(t-book_num,book_num);

strcpy(t-book_name,book_name);

t-book_kc=t-book_xc=number;

q-next=t;t-next=NULL;

if((book_fp=fopen("book.dat","ab"))==NULL)

{ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }

/*将新书信息添加到文件中*/

fwrite(t,sizeof(struct bk),1,book_fp);

fclose(book_fp);

}

void print_book(struct bk *h)

/*输出图书信息*/

{ struct bk *p;

p=h;

printf("\n\t图书编号 \t图书名 \t库存量 \t现存量 \n");

while(p!=NULL)

{ printf(" %10s\t %10s %10d\t%10d\n",p-book_num,p-book_name,p-book_kc,p-book_xc);

p=p-next;

}

}

void print_reader(struct rd *h)

/*输出读者信息*/

{ struct rd *p;

p=h;

printf("\n\t读者编号 \t读者姓名 \t所借书号 \n");

while(p!=NULL)

{ printf(" %10s\t %10s %10s\n",p-reader_num,p-reader_name,p-reader_book_num);

p=p-next;

}

getch();

}

void Form_Borrow_Book()

/*借书菜单界面*/

{ char ch;

char book_num[11],reader_num[11];

printf("\n 图书借阅功能模块,请选择相应的功能代码:\n");

printf(" 0:返回到主菜单\n");

printf(" 1:图书借阅\n");

do{

printf("\n\n 请选择相应的功能代码:");

scanf("%c",ch);

fflush(stdin);

}while(ch!='0'ch!='1');

switch(ch)

{ case '0':M_Form();break;

case '1':

{ printf(" \n请输入读者编号与所借书编号:(以空格分隔)");

scanf("%s%s",reader_num,book_num);

fflush(stdin);

Borrow_Book(reader_num,book_num);/*调用借书函数,执行借书功能*/

Form_Borrow_Book();/*借书完成后,程序返回到借书菜单*/

}

default:printf("error\n");exit(0);

}

}

void Borrow_Book(char reader_num[],char book_num[])

/*输入读者编号,和需要借阅的书的编号,执行借书功能*/

{ struct bk *book_p;

struct rd *reader_p;

book_p=h_book;

while(book_p!=NULLstrcmp(book_p-book_num,book_num)!=0)

book_p=book_p-next;

if(book_p==NULL)

{ printf("\n\t此编号对应的图书不存在!\n");

Form_Borrow_Book();

}

reader_p=h_reader;

while(reader_p!=NULL(strcmp(reader_p-reader_num,reader_num)!=0))

reader_p=reader_p-next;

if(reader_p==NULL)

{ printf("\n\t此编号对应的读者不存在!\n");

Form_Borrow_Book();

}

else if(strcmp(reader_p-reader_book_num,"0")!=0)

{ printf("\n\t已达到最大借阅数,不能再借书!\n");

Form_Borrow_Book();

}

else {

book_p-book_xc=book_p-book_xc-1;/*借书完成后,修改现存量*/

strcpy(reader_p-reader_book_num,book_p-book_num);/*修改读者的借阅信息*/

save();/*将修改后的信息保存到文件中*/

load_data(); /*读入新文件中的数据*/}

Form_Borrow_Book();/*程序执行完毕后,返回到借书菜单界面*/

}

void Form_Return_Book()

/*还书菜单*/

{ char ch;

char book_num[11],reader_num[11];

printf("\n 归还图书功能模块,请选择相应的功能代码:\n");

printf(" 0:返回到主菜单\n");

printf(" 1:归还图书\n");

do{

printf("\n\n 请选择相应的功能代码:");

scanf("%c",ch);

fflush(stdin);

}while(ch!='0'ch!='1');

switch(ch)

{ case '0':M_Form();break;

case '1':

{ printf(" \n请输入读者编号与所还书编号:(以空格分隔)");

scanf("%s%s",reader_num,book_num);

fflush(stdin);

Return_Book(reader_num,book_num);/*调用还书函数*/

Form_Return_Book();

}

default:printf("error\n");exit(0);

}

}

void Return_Book(char reader_num[],char book_num[])

/*输入读者编号和所还书编号执行还书*/

{ struct bk *book_p;

struct rd *reader_p;

book_p=h_book;

while(book_p!=NULLstrcmp(book_p-book_num,book_num)!=0)

book_p=book_p-next;

if(book_p==NULL)

{ printf("\n\t此编号对应的图书不存在!\n");

Form_Return_Book();

}

reader_p=h_reader;

while(reader_p!=NULL(strcmp(reader_p-reader_num,reader_num)!=0))

reader_p=reader_p-next;

if(reader_p==NULL)

{ printf("\n\t此编号对应的读者不存在!\n");

Form_Return_Book();

}

else if(strcmp(reader_p-reader_book_num,book_num)!=0)

{ printf("\n\t读者没有借阅此书\n");

Form_Return_Book();

}

else {

book_p-book_xc=book_p-book_xc+1;/*还书后,修改图书库存量*/

strcpy(reader_p-reader_book_num,"0");/*还书后,修改读者借阅信息*/

save();/*保存到文件*/

load_data(); /*读入文件中的数据*/}

Form_Return_Book();

}

void init_reader()

/*系统第一次运行时,初始化3位读者信息,从键盘读入*/

{ FILE *fp;

reader ra[3];

int i;

printf("\n 系统即将进行读者初始化:\n");

printf("\n 请分别输入三位读者的编号和姓名(以空格隔开):\n ");

for(i=0;i3;i++)

scanf("%s%s",ra[i].reader_num,ra[i].reader_name);

for(i=0;i3;i++)

strcpy(ra[i].reader_book_num,"0");

if((fp=fopen("reader.dat","wb"))==NULL)

{ printf("不能建立读者文件,初始化失败!请重新启动系统!\n"); return; }

for(i=0;i3;i++)/*将3位读者信息写入文件*/

{ if(fwrite(ra[i],sizeof(struct rd),1,fp)!=1)

{ printf("\写数据错误!\n"); exit(0); }

}

}

void Form_Insert_New_Book()

/*添加新书菜单*/

{ char ch;

struct bk t;

printf("\n 新书入库功能模块,请选择相应的功能代码:\n");

printf(" 0:返回到主菜单\n");

printf(" 1:新书入库");

do{

printf("\n\n 请选择相应的功能代码:");

scanf("%c",ch);

fflush(stdin);

}while(ch!='0'ch!='1'ch!='2'ch!='3'ch!='4'ch!='5');

switch(ch)

{ case '0':M_Form();break;

case '1':

{ printf(" \n请按顺序输入新书的编号、名称、数量(以空格隔开):");

scanf("%s%s%d",t.book_num,t.book_name,t.book_kc);

fflush(stdin);

Insert_New_Book(t.book_num,t.book_name,t.book_kc);

Form_Insert_New_Book();

}

default:printf("error\n");exit(0);

}

}

void load_data()

/*从文件book.dat和文件reader.dat中读取数据到内存*/

/*将读取的数据存放到2个链表中*/

{ struct bk *book_p1,*book_p2,*book_p3;

struct rd *reader_p1,*reader_p2,*reader_p3;

FILE *fp_book,*fp_reader;

fp_book=fopen("book.dat","rb");

book_p1=(struct bk *)malloc(sizeof(struct bk));

fread(book_p1,sizeof(struct bk),1,fp_book);

h_book=book_p3=book_p2=book_p1;

while(! feof(fp_book))

{ book_p1=(struct bk *)malloc(sizeof(struct bk));

fread(book_p1,sizeof(struct bk),1,fp_book);

book_p2-next=book_p1;book_p3=book_p2;book_p2=book_p1;

}

book_p3-next=NULL;

free(book_p1);

fclose(fp_book);

fp_reader=fopen("reader.dat","rb");

reader_p1=(struct rd *)malloc(sizeof(struct rd));

fread(reader_p1,sizeof(struct rd),1,fp_reader);

h_reader=reader_p3=reader_p2=reader_p1;

while(! feof(fp_reader))

{ reader_p1=(struct rd *)malloc(sizeof(struct rd));

fread(reader_p1,sizeof(struct rd),1,fp_reader);

reader_p2-next=reader_p1;reader_p3=reader_p2;reader_p2=reader_p1;

}

reader_p3-next=NULL;

free(reader_p1);

fclose(fp_reader);

}

void save()

/*将链表中的数据保存到内存中*/

{ FILE *book_fp,*reader_fp;

struct bk *book_p;

struct rd *reader_p;

book_p=h_book; reader_p=h_reader;

if((book_fp=fopen("book.dat","wb"))==NULL)

{ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }

while(book_p!=NULL)

{ if(fwrite(book_p,sizeof(struct bk),1,book_fp)!=1)

{ printf("\写数据错误!\n"); exit(0); }

book_p=book_p-next;

}

fclose(book_fp);

if((reader_fp=fopen("reader.dat","wb"))==NULL)

{ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }

while(reader_p!=NULL)

{ if(fwrite(reader_p,sizeof(struct rd),1,reader_fp)!=1)

{ printf("\写数据错误!\n"); exit(0); }

reader_p=reader_p-next;

}

fclose(reader_fp);

}

main()

{ FILE * fp;

struct bk temp;

clrscr();

h_book=NULL;h_reader=NULL;

if((fp=fopen("book.dat","r"))==NULL)

init();/*第1次运行系统时的初始化*/

fclose(fp);

load_data();/*从文件中读入数据*/

M_Form();/*显示主菜单*/

save();/*保存内存中的数据(即链表中的数据)到文件*/

getch();

}

程序中出现的问题及解决方法

问题一、借书管理模块中,当正确输入存在的读者编号和所借的书的编号,系统进行判断时,提示不存在此读者。

解决办法及步骤:

1、一个个输出所有的读者的编号,检查文件中是否有此读者,发现有。

2、既然有此读者,那么检查循环判断是否有此读者的语句发现没有错

3、输出用于循环检查语句中的读者信息,发现乱码

3、仔细分析乱码的原因,最后发现是变量的类型错误,错将读者类型的结构体指针变量定义为了图书类型的指针变量。

(注意:这部分内容至少要写2页,这里只是给出格式)

体会

通过这次课程设计,我对复杂程序的开发有了一个深刻的认识,使我进一步明白了模块化思想在程序开发中的重要性。

(注意:这部分内容要多写)

关于图书管理系统界面设计代码和图书管理系统程序框图的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/24722.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载