文档库 最新最全的文档下载
当前位置:文档库 › C语言课程设计图书(信息)管理系统源程序

C语言课程设计图书(信息)管理系统源程序

#include

#include

#include

#define STU struct Book

#define SIZE 100

void write();

void search();

void read();

void del();

void fdel();

void fmod();

void borrow();

void gback();

int load();

void printf_back();

void save(int n,STU*);

int modify_data(int,int);

void menu();

STU {char name[20]; /*图书名*/

char num[20]; /*图书编号*/

int price; /*价格*/

char author[20]; /*作者*/

int state; /*状态未借1 ;借出0 */

char loader[20]; /*借书人姓名*/

int sex; /*性别男1 ;女0*/

long stn; /*学号*/

char pub[20]; /*出版社*/

long time; /*出版时间*/

}book[SIZE];

void main()

{

int n, w ;

do

{

puts("*****************************menu*************************\n\n");

puts("\t\t 1.录入信息");

puts("\t\t 2.浏览图书信息");

puts("\t\t 3.图书信息查询");

puts("\t\t 4.删除与改写信息");

puts("\t\t 5.办理借书手续");

puts("\t\t 6.办理还书手续");

puts("\t\t 0.退出");

printf("选择功能(0~6):[ ]\b\b");

scanf("%d",&n);

if(n<0||n>6)

{

w=1;

getchar();

}

else w=0;

}while(w==1);

switch(n)

{

case 1:write();break;

case 2:read();break;

case 3:search();break;

case 4:del();break;

case 5:borrow();break;

case 6:gback();break;

case 0:exit(0);

}

}

void write()

{ int i,m,k,n;

FILE *fp;

n=load();

printf("要追加的记录个数:\n ");

scanf("%d",&m);

k=m+n;

if((fp=fopen("book.txt","a"))==NULL)

{

printf("\n无法打开文件\n");

}

for(i=n;i

{

printf("请输入第%d本图书的信息",i-n+1);

printf("\n图书信息:图书名编号价格作者状态借书人性别学号出版社出版时间\n");

scanf("%s%s%d%s%d%s%d%ld%s%ld",book[i].name,book[i].num,&book[i].price,book[i].autho r,&book[i].state,book[i].loader,&book[i].sex,&book[i].stn,book[i].pub,&book[i].time);

}

for(i=n;i

if(fwrite(&book[i],sizeof(STU),1,fp)!=1)

printf("文件写入错误!");

fclose(fp);

printf_back();

}

void search()

{ int i,n,k,w1=1;

STU fbook;

n=load();

do

{ k=-1;

printf("\n请输入查询书目名称:\n");

scanf("%s", https://www.wendangku.net/doc/ed13084305.html,);

for(i=0;i

if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0)

{ k=i;

printf("\n图书信息:图书名编号价格作者状态借书人性别学号出版社出版时间\n");

printf("%s %s %d %s %d %s %d %ld %s %ld\n",book[i].name,book[i].num,book[i].price,bo ok[i].author,book[i].state,book[i].loader,book[i].sex,book[i].stn,book[i].pub,book[i].time);

printf_back();

break;

}

if(k==-1)

{

printf("\n不存在这个书名的信息\n");

printf("\n1).again 2).no and back\n");

scanf("%d",&w1);

if(w1==2) printf_back();

}

while(k==-1&&w1==1);

}

void read()

{

int i,n;

n=load();

printf("图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n");

for(i=0;i

printf("%s %s %d %s %d %s %d %ld %s %ld\n",book[i].name,book[i].num,book[i].price,book[i]. author,book[i].state,book[i].loader,book[i].sex,book[i].stn,book[i].pub,book[i].time);

printf_back();

}

void del()

{

int n,w;

do

{

printf("\t\t**********删除与修改信息**********\n\n");

printf("\t\t 1.删除操作\n");

printf("\t\t 2.修改操作\n");

printf("\t\t 0.返回");

printf("\n选择功能(0~2):[ ]\b\b");

scanf("%d",&n);

if(n<0||n>2)

{

w=1;

getchar();

}

else w=0;

}while(w==1);

switch(n)

{

case 1:fdel();break;/*删除函数*/

case 2:fmod();break;/*修改函数*/

case 0:printf_back();

}

}

void fdel ()

{ STU fbook;

int i,n,j,k=-1;

n=load();

do

{printf("请输入要修改书目名称:");

scanf("%s", https://www.wendangku.net/doc/ed13084305.html,);

for(i=0;i

if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0)

{ k=i;

fbook=book[i];

}

if(k==-1) printf("\n书名不存在!请重新输入:\n");

}while(k==-1);

printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n");

printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time);

printf("\n\n确定要删除此图书信息?\n1 确定0 取消并返回[ ]\b\b");

scanf("%d",&j);

switch(j)

{case 1: {strcpy(book[k].name,"0");

strcpy(book[k].num,"0");

book[k].price=0;

strcpy(book[k].author,"0");

book[k].state=0;

strcpy(book[k].loader,"0");

book[k].sex=0;

book[k].stn=0;

strcpy(book[k].pub,"0");

book[k].time=0;};

break;

case 0:printf_back();

}

save(n,book);

printf_back();

void fmod()

{ STU fbook;

int i,n,k=-1,w0=1,w1,w2=0;

n=load();

do

{

do

{printf("请输入要修改书目名称:");

scanf("%s", https://www.wendangku.net/doc/ed13084305.html,);

for(i=0;i

if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0)

{ k=i;

fbook=book[i];

}

if(k==-1) printf("\n书名不存在!请重新输入:\n");

}while(k==-1);

printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n");

printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time);

w1=modify_data(k,n); /*只会返回1或3,1是确认修改,3是放弃修改*/

if(w1==1)

{

printf("\n修改成功!\n\n要修改其它数据吗?\n1).是2).否,返回\t[ ]\b\b");

scanf("%d",&w0);

w2=1;

}

else

{w0=0;

if(w2==0)

book[k]=fbook;

}

if(w0!=1&&w2==1)/*W2=1说明进行了上一个if语句,数据修改成功了,W0!=1不再修改其他数据*/

save(n,book);

}while(w0==1);/*do while语句w0=1表示修改成功,还要修改其他语句,进行循环*/

menu();

}

void gback()

{

STU fbook;

int i,n,k=-1;

n=load();

do

{printf("请输入要还的书目名称:");

scanf("%s", https://www.wendangku.net/doc/ed13084305.html,);

for(i=0;i

if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0)

{ k=i;

fbook=book[i];

}

if(k==-1) printf("\n书名不存在!请重新输入:\n");

}while(k==-1);

printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n");

printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time);

printf("\n确定要归还这本书?1).确定2).取消并返回[ ]\b\b");

scanf("%d",&i);

if (i==1)

{ book[k].state=1;

strcpy(book[k].loader,"0");

book[k].sex=0;

book[k].stn=0;

save(n,book);

printf("图书归还成功!\n");

printf_back();

}

else printf_back();

}

void borrow ()

{STU fbook;

int i,n,k=-1;

n=load();

{printf("请输入要借的书目名称:");

scanf("%s", https://www.wendangku.net/doc/ed13084305.html,);

for(i=0;i

if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0)

{ k=i;

fbook=book[i];

}

if(k==-1) printf("\n书名不存在!请重新输入:\n");

}while(k==-1);

printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n");

printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time);

printf("\n确定要借这本书?1).确定2).取消并返回[ ]\b\b");

scanf("%d",&i);

if (i==1)

{ book[k].state=0;

printf("\n请输入借阅者姓名:\n");

scanf("%s",book[k].loader);

printf("\n请输入借阅者性别(1:男、0:女):\n");

scanf("%d",&book[k].sex);

printf("\n请输入借阅者学号:");

scanf("%ld",&book[k].stn);

save(n,book);

printf("图书借阅成功!\n");

printf_back();

}

else printf_back();

}

void save(int n,STU *tr)

{

FILE *fp;

int i;

if((fp=fopen("book.txt","w"))==NULL)

{

printf("无法打开文件!\n");

return NULL;

for(i=0;i

if(tr[i].time!=0)

if(fwrite(&tr[i],sizeof(STU),1,fp)!=1)

printf("文件写入错误!\n");

fclose(fp);

}

void printf_back()

{

int w;

printf("\n1).返回主菜单2).退出\n");

scanf("%d",&w);

if(w==1) menu();

else exit(0);

}

int load()

{

FILE *fp;

int i;

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

{

printf("\n不能打开文件book!\n");

return NULL;

}

for(i=0;!feof(fp);i++)

fread(&book[i],sizeof(STU),1,fp);

fclose(fp);

return (i-1);

}

int modify_data(int i,int n)

{int c,w1;

do

{

printf("\n选择修改项目=>\n\n1.书名2.图书编号3.价格4.作者5.借阅状态6.借书人7.性别8.学号9.出版社10.出版时间11.修改所有信息12.取消\n");

printf("你的选择:\n");

scanf("%d",&c);

if(c>12||c<1)

{ printf("输入错误,请重新输入\n");

c=getchar();

}

}while(c>12||c<1);

do

{

switch(c)

{case 1:printf("输入新书名:");scanf("%s",book[i].name);break;

case 2:printf("输入新图书编号:");scanf("%s",book[i].num);break;

case 3:printf("输入新价格:");scanf("%d",&book[i].price);break;

case 4:printf("输入作者:");scanf("%s",book[i].author);break;

case 5:printf("输入新借阅状态:");scanf("%d",&book[i].state);break;

case 6:printf("输入新借书人:");scanf("%s",book[i].loader);break;

case 7:printf("输入性别:");scanf("%d",&book[i].sex);break;

case 8:printf("输入学号:");scanf("%ld",&book[i].stn);break;

case 9:printf("输入出版社:");scanf("%s",book[i].pub);break;

case 10:printf("输入出版日期:");scanf("%ld",&book[i].time);break;

case 11:printf("\n图书信息:图书名编号价格作者状态借书人性别学号出版社出版时间\n");

scanf("%s%s%d%s%d%s%d%ld%s%ld",book[i].name,book[i].num,&book[i].price,book[i].autho r,&book[i].state,book[i].loader,&book[i].sex,&book[i].stn,book[i].pub,&book[i].time);

}

if(c>0||c<12)

{printf("\n\n修改后的信息:\n");

printf("%s %s %d %s %d %s %d %ld %s %ld",book[i].name,book[i].num,book[i].price,book [i].author,book[i].state,book[i].loader,book[i].sex,book[i].stn,book[i].pub,book[i].time);}

printf("\n确定要修改?\n1).确定2).放弃,重新输入3).这次输入不保存,返回\n [ ]\b\b");

scanf("%d",&w1);

}while(w1==2);

return(w1);

}

void menu()

{int w,n;

do

{

puts("*****************************menu*************************\n\n");

puts("\t\t 1.录入信息");

puts("\t\t 2.浏览图书信息");

puts("\t\t 3.图书信息查询");

puts("\t\t 4.删除与改写信息");

puts("\t\t 5.办理借书手续");

puts("\t\t 6.办理还书手续");

puts("\t\t 0.退出");

printf("选择功能(0~6):[ ]\b\b");

scanf("%d",&n);

if(n<0||n>6)

{

w=1;

getchar();

}

else w=0;

}while(w==1);

switch(n)

{

case 1:write();break;

case 2:read();break;

case 3:search();break;

case 4:del();break;

case 5:borrow();break;

case 6:gback();break;

case 0:exit(0);

}

}

相关文档
相关文档 最新文档