图书管理系统含源代码c语言数据结构课程设计报告.docx

上传人:b****6 文档编号:8064425 上传时间:2023-01-28 格式:DOCX 页数:18 大小:167.21KB
下载 相关 举报
图书管理系统含源代码c语言数据结构课程设计报告.docx_第1页
第1页 / 共18页
图书管理系统含源代码c语言数据结构课程设计报告.docx_第2页
第2页 / 共18页
图书管理系统含源代码c语言数据结构课程设计报告.docx_第3页
第3页 / 共18页
图书管理系统含源代码c语言数据结构课程设计报告.docx_第4页
第4页 / 共18页
图书管理系统含源代码c语言数据结构课程设计报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

图书管理系统含源代码c语言数据结构课程设计报告.docx

《图书管理系统含源代码c语言数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统含源代码c语言数据结构课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。

图书管理系统含源代码c语言数据结构课程设计报告.docx

图书管理系统含源代码c语言数据结构课程设计报告

数据结构大作业

图书管理系统

工程管理121279044伍杨

一、题目要求

1)目的要求

本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。

2)题目要求

实现图书管理信息系统的设计。

要求实现图书添加、显示全部图书、查询、借阅和归还。

主要考查利用文件的操作!

二、总体设计

 

三、编码实现

1)定义图书结构体

structbook{

charbookname[20];//书名

intNO;//书编号

chartype[20];//类型

intdate;//到书日期

};

structperson{

charname[10];//姓名

charclasses[20];//班级

intnumber;//学号

chartelephone[12];//联系电话

intNO;//书编号

charbookname[20];//书名

intborrowdate;//借书日期

intreturndate;//还书日期

2)登记操作

voidnew_book()//登记新书

{

FILE*fp;

structbookb;

inti,j;

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

printf("Fileopenerror!

\n");

exit(0);

}

printf("请朱老师输入此次收到的书本总数:

");

scanf("%d",&i);

for(j=0;j

printf("请朱老师输入书名:

");

scanf("%s",b.bookname);

fprintf(fp,"%s",b.bookname);

printf("请朱老师输入书编号:

");

scanf("%d",&b.NO);

fprintf(fp,"%d",b.NO);

printf("请朱老师输入类型:

");

scanf("%s",b.type);

fprintf(fp,"%s",b.type);

printf("请朱老师输入到书日期:

");

scanf("%d",&b.date);

fprintf(fp,"%d",b.date);

}

if(fclose(fp)){

printf("Cannotclosethefile!

\n");

exit(0);

}

}

 

voidnew_person()//登记借书

{

FILE*fp;

structpersonp;

charchoice;

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

printf("Fileopenerror!

\n");

exit(0);

}

printf("请朱老师输入借书人姓名:

");

scanf("%s",p.name);

fprintf(fp,"%s",p.name);

printf("请朱老师输入借书人班级:

");

scanf("%s",p.classes);

fprintf(fp,"%s",p.classes);

printf("请朱老师输入借书人学号:

");

scanf("%d",&p.number);

fprintf(fp,"%d",p.number);

printf("请朱老师输入借书人联系电话:

");

scanf("%s",p.telephone);

fprintf(fp,"%s",p.telephone);

printf("请朱老师输入书编号:

");

scanf("%d",&p.NO);

fprintf(fp,"%d",p.NO);

printf("请朱老师输入书名:

");

scanf("%s",p.bookname);

fprintf(fp,"%s",p.bookname);

printf("请朱老师输入借书日期:

");

scanf("%d",&p.borrowdate);

fprintf(fp,"%d",p.borrowdate);

printf("请朱老师输入还书日期:

");

scanf("%d",&p.returndate);

fprintf(fp,"%d",p.returndate);

printf("\n\t您想继续吗?

(y/n)");

scanf("%c",&choice);

if(choice=='Y'||choice=='y'){

system("cls");

new_person();

}

if(fclose(fp)){

printf("Cannotclosethefile!

\n");

exit(0);

}

}实现程序对文件的读取

voidRead()

{

inti=0;

intj=0;

ifstreamin("Libra.txt",ios:

:

out);

in>>i;

all=i;

if(i>0&&i<=Max)

{

for(j=1;j<=i;j++)

{

in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].count;

}

}

in.close();

}

3)查看操作

vvoidsee_book()//查看书库记录

{

FILE*fp;

longNO;

charbookname[20];

chartype[20];

longdate;

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

printf("Fileopenerror!

\n");

exit(0);

}

while(!

feof(fp))

{

fscanf(fp,"%s%ld%s%ld",bookname,&NO,type,&date);

printf("%-10s%-10ld%-10s%ld\n",bookname,NO,type,date);

};

if(fclose(fp)){

printf("Cannotclosethefile!

\n");

exit(0);

}

 

}

voidsee_person()//查看所有借书记录

{

FILE*fp;

charname[10];

charclasses[20];

intnumber;

chartelephone[20];

intNO;

charbookname[20];

intborrowdate;

intreturndate;

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

printf("Fileopenerror!

\n");

exit(0);

}

while(!

feof(fp))

{

fscanf(fp,"%s%s%ld%s%ld%s%ld%ld",name,classes,&number,telephone,&NO,bookname,&borrowdate,&returndate);

printf("%-5s%-5s%ld%-5s%ld%-5s%ld%ld\n",name,classes,number,telephone,NO,bookname,borrowdate,returndate);

};

if(fclose(fp)){

printf("Cannotclosethefile!

\n");

exit(0);

}

}

4)删除操作

voiddelete_books()//删除旧书

{

FILE*fp;

structbookb;

intnumber;

voiddeletebooks();

printf("请输入您要删除的书编号:

");

scanf("%d",&number);

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

printf("不能打开此文件!

\n");

exit(0);

}

 

while(!

feof(fp)){

fscanf(fp,"%s%d%s%d",b.bookname,&b.NO,b.type,&b.date);

if(b.NO==number){

printf("\n\n\t***************图书信息*******************\n");

printf("\n\t图书书名:

%25s",b.bookname);

printf("\n\t-----------------------------------------");

printf("\n\t图书编号:

%25d",b.NO);

printf("\n\t-----------------------------------------");

printf("\n\t图书类型:

%23s",b.type);

printf("\n\t-----------------------------------------");

printf("\n\t到书日期:

%25d",b.date);

printf("\n\t-----------------------------------------");

deletebooks();

}

}

}

voiddeletebooks()

{

FILE*fp,*fp1,*fp2,*fp3;

intnumber;

structbookb;

printf("\n\n确认删除?

请再次输入书编号:

");

scanf("%d",&number);

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

printf("不能打开此文件!

\n");

exit(0);

}

if((fp1=fopen("tempshuku.txt","w"))==NULL){//建立一个临时文件

printf("不能打开此文件!

\n");

exit(0);

}

while(!

feof(fp)){

fscanf(fp,"%s%d%s%d",b.bookname,&b.NO,b.type,&b.date);

if(b.NO==number)

continue;

else

fprintf(fp1,"%s%d%s%d",b.bookname,b.NO,b.type,b.date);

}

fclose(fp);

fclose(fp1);

if((fp2=fopen("tempshuku.txt","r"))==NULL){

printf("不能打开此文件!

\n");

exit(0);

}

if((fp3=fopen("shuku.txt","w"))==NULL){//清空书库

printf("不能打开此文件!

\n");

exit(0);

}

while(!

feof(fp2)){//将临时文件的内容写人源文件

fscanf(fp2,"%s%d%s%d",b.bookname,&b.NO,b.type,&b.date);

fprintf(fp3,"%s%d%s%d",b.bookname,b.NO,b.type,b.date);

}

fclose(fp2);

fclose(fp3);

printf("\n删除成功!

\n");

}

voiddelete_returnbook()//删除借书记录

{

FILE*fp;

intnumbers;

structpersonp;

voiddeletereturnbook();

charchoice;

printf("\n请输入所还书本的书编号:

");

scanf("%d",&numbers);

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

printf("不能打开此文件!

\n");

exit(0);

}

while(!

feof(fp)){

fscanf(fp,"%s%s%ld%s%ld%s%ld%ld",p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);

if(p.NO==numbers){

printf("\n\t***************图书信息*******************\n");

printf("\n\t借书人姓名:

%20s",p.name);

printf("\n\t-----------------------------------------");

printf("\n\t借书人班级:

%20s",p.classes);

printf("\n\t-----------------------------------------");

printf("\n\t借书人学号:

%20d",p.number);

printf("\n\t-----------------------------------------");

printf("\n\t借书人联系电话:

%20s",p.telephone);

printf("\n\t-----------------------------------------");

printf("\n\t图书编号:

%24d",p.NO);

printf("\n\t-----------------------------------------");

printf("\n\t图书名称:

%23s",p.bookname);

printf("\n\t-----------------------------------------");

printf("\n\t借书日期:

%25d",p.borrowdate);

printf("\n\t-----------------------------------------");

printf("\n\t还书日期:

%25d",p.returndate);

printf("\n\t-----------------------------------------");

deletereturnbook();

printf("\n\t您想继续吗?

(y/n)");

scanf("%c",&choice);

if(choice=='Y'||choice=='y'){

system("cls");

delete_returnbook();

}

}

}

fclose(fp);

}

voiddeletereturnbook()

{

FILE*fp,*fp1,*fp2,*fp3;

structpersonp;

intnumbers;

printf("\n\n确认删除?

请再次输入书编号:

");

scanf("%d",&numbers);

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

printf("不能打开此文件!

\n");

exit(0);

}

if((fp1=fopen("tempbook.txt","w"))==NULL){

printf("不能打开此文件!

\n");

exit(0);

}

while(!

feof(fp)){

fscanf(fp,"%s%s%d%s%d%s%d%d",p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);

if(p.NO==numbers)

continue;

else

fprintf(fp1,"%s%s%d%s%d%s%d%d",p.name,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);

}

fclose(fp);

fclose(fp1);

if((fp2=fopen("tempbook.txt","r"))==NULL){

printf("不能打开此文件!

\n");

exit(0);

}

if((fp3=fopen("jieshujilu.txt","w"))==NULL){

printf("不能打开此文件!

\n");

exit(0);

}

while(!

feof(fp2)){//将临时文件写人源文件

fscanf(fp2,"%s%s%d%s%d%s%d%d",p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);

fprintf(fp3,"%s%s%d%s%d%s%d%d",p.name,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);

}

fclose(fp2);

fclose(fp3);

printf("\n删除成功!

\n");

}

5)Main函数

intmain(void)

{

intchoice;

charchoice2;

structbook;

structperson;

do{

printf("\n\n\n图书馆管理系统\n\a");

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

printf("***朱老师您好吖********功能选项:

登记******请按1,******\n");

printf("*******************************查看/查询*请按2******\n");

printf("*******************************删除*****请按3******\n");

printf("*******************************退出*****请按0******\n");

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

printf("请选择功能:

");

scanf("%d",&choice);

switch(choice){

case1:

printf("登记选项:

新书登记请按1,借书登记请按2,返回请按3\n");

printf("请选择:

");

scanf("%d",&choice);

switch(choice){

case1:

system("cls");//清屏

printf("新书资料登记:

\n\n");

new_book();//新书登记

printf("登记完毕!

\n");

printf("\n");

scanf("%c",&choice2);

system("cls");

break;

case2:

system("cls");

printf("借书资料登记:

\n\n");

new_person();//借书登记

printf("\npressanykey");

scanf("%c",&choice2);

system("cls");

break;

case3:

system("cls");

break;

}

break;

case2:

printf("查看/查询选项:

书库查看请按1,总借书记录查看请按2,到期记录查询请按3,返回请按4\n");

printf("请选择:

");

scanf("%d",&choice);

switch(choice){

case1:

system("cls");

printf("欢迎朱老师进入书库!

\n\n");

printf("书名书编号类型到书日期\n");

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

see_book();//书库显示

printf("\npressanykey");

scanf("%c",&choice2);

system("cls");

break;

case2:

system("cls");

printf("欢迎朱老师进入借书记录!

\n\n");

printf("姓名班级学号联系电话书编号书名借书日期到书日期\n");

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

see_person();//借书记录显示

printf("\npressanykey");

scanf("%c",&choice2);

system("cls");

break;

case3:

system("cls");

search_person();//显示符合记录

printf("\npressanykey");

scanf("%c",&cho

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1