c语言实习报告 图书信息管理系统.docx

上传人:b****4 文档编号:24159697 上传时间:2023-05-24 格式:DOCX 页数:22 大小:122.65KB
下载 相关 举报
c语言实习报告 图书信息管理系统.docx_第1页
第1页 / 共22页
c语言实习报告 图书信息管理系统.docx_第2页
第2页 / 共22页
c语言实习报告 图书信息管理系统.docx_第3页
第3页 / 共22页
c语言实习报告 图书信息管理系统.docx_第4页
第4页 / 共22页
c语言实习报告 图书信息管理系统.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

c语言实习报告 图书信息管理系统.docx

《c语言实习报告 图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言实习报告 图书信息管理系统.docx(22页珍藏版)》请在冰豆网上搜索。

c语言实习报告 图书信息管理系统.docx

c语言实习报告图书信息管理系统

C语言课程设计

 

院系:

工程学院

姓名:

王保成

学号:

20111000341

班号:

051113

指导教师:

日期:

 

一、需求分析:

1、图书管理信息包括:

登录号,书名,作者号,分类号,出版单位,出版时间,价格等。

设计图书管理系统。

2、程序的系统功能:

(1)、系统以菜单方式工作;

(2)、图书信息录入功能;

(3)、图书信息浏览功能;

(4)、图书信息查询功能;

(5)、图书信息删除与修改。

3、测试数据(后附)。

二、概要设计:

1:

本系统包括两个抽象数据:

图书库链表和借书者链表。

(1)定义图书链表类型为:

ADTAbook

数据对象D={bi|bi=Booktype,i=1……nn>=o}

数据关系R={|(bi-1,bi)=D,i=2……n}

基本操作:

Insert(n)

操作结果:

建立一个长度为n的链表或插入n个新结点。

Del(n)

操作结果:

从已建立链表中删除n个结点。

Print()

操作结果:

输出已建立链表。

Search()

操作结果:

按要求查找并输出已建立链表中的结点。

Borrow()

操作结果:

按要求改变已建立链表中某一结点的相关信息。

return()

操作结果:

按要求改变已建立链表中某一结点的相关信息。

(2)定义图书链表类型为:

ADTAborrow

数据对象D={ri|ri|borrowtype,i=1……nn>=1}

数据关系R={|ri-1,ri=D,i=2……n}

基本操作:

creat(n)

操作结果:

建立一个长度为n的链表。

Insert(n)

操作结果:

插入n个新结点到已建立链表中。

Remove(n)

操作结果:

从已建立链表中删除n个结点。

2:

主程序的流程:

1选择系统

(1)、录入图书信息

(2)、浏览图书信息

(3)、图书信息查询功能:

1按登录号查询2按书名查询3按作者名查询4按分类号查询5按出版单位查询6按价格查询

(4)、图书信息删除与修改1删除2修改

(0)、返回

 

三、详细设计:

structbook

{

chardlnum[10];/*登录号/*

charname[50];/*书名/*

charwriter[20];/*作者名/*

charflnum[10];/*分类号/*

charpressname[50];/*出版单位/*

charpresstime[20];/*出版时间/*

charprice[10];/*价格/*

}books[N];

 

四、调试分析

1在最初进行模块划分是未将借书人信息管理作为一个单独摸块,致使调试时无法明确管理结借书者信息,造成书目链表混乱,重新分配后解决了这个问题

2原先想进行中文书名及人命输入输出,但由于未能找到相关信息资料,无法完成该操作,最终放弃该设计

3最初我们曾规定了一些变量以及结构体,但随着设计的进行深化,最初的结构体及变量无法满足需要,致使调试时出现不少混乱,后来我们重新规定了一下,解决了这些问题;

4程序的串联我们采取了循环控制与选择结构相结合的结构很好地解决了系统长时间运行及循环执行命令的问题,使演示系统现实化。

五、测试结果:

1、在windows状态下,2、执行TC文件,3、进入系统操作界面。

4、选择系统选项,5、进行图书管理操作。

进入后根据提示信息可进行。

0退回界面。

六、用户使用说明书:

1选择操作类型,例选择1录入图书信息

2浏览已经录入的图书信息

选择3为图书信息查询项

(1)按登陆号

(2)按书名(3)按作者(4)按分类号(5)出版单位(6)出版时间(7)价格

选择4为删除和修改功能1为删除2为修改

首先欢迎您使用本图书馆管理系统。

本系统主要面向图书馆的管理人员。

运行主程序后,您将能够看到一个带有欢迎界面的窗口,上面有您所能进行的操作,您可以在这里选择。

(附)源程序:

#defineN100

#include

#include

#include

structbook

{

chardlnum[10];

charname[50];

charwriter[20];

charflnum[10];

charpressname[50];

charpresstime[20];

charprice[10];

}books[N];

 

voidprintf_face()

{

printf("dlnumnamewriterflnumpressnamepresstimeprice\n");

}

 

voidenter()

{

inti,n;

voidmenu();

voidinput(intk);

voidsave(intk);

printf("Howmanybooks(0-%d)?

:

",N-1);

scanf("%d",&n);

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

for(i=0;i

{

printf("\nInput%dthbookrecord.\n",i+1);

input(i);

}

if(i!

=0)save(n);

printf("Passanykeytoback\n");

getchar();

menu();

}

 

voidinput(inti)

{

printf_face();

scanf("%s%s%s%s%s%s%s",books[i].dlnum,books[i].name,books[i].writer,books[i].flnum,books[i].pressname,books[i].presstime,books[i].price);

}

voidsave(intn)

{

FILE*fp;

inti;

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

{

printf("\nCannotopenfile\n");

}

for(i=0;i

if(fwrite(&books[i],sizeof(structbook),1,fp)!

=1)

printf("filewriteerro\n");

fclose(fp);

}

 

voidbrowse()

{

intk;

voidmenu();

intload();

voidprintf_books(intn);

k=load();

printf_books(k);

printf("Passanykeytoback\n");

getchar();

menu();

}

 

voidprintf_one(inti)

{

printf("%5s%5s%5s%5s%5s%5s%5s",books[i].dlnum,books[i].name,books[i].writer,books[i].flnum,books[i].pressname,books[i].presstime,books[i].price);

printf("\n\n");

}

 

voidprintf_books(intn)

{

intj;

printf("dlnumnamewriterflnumpresspresstimeprice\n");

for(j=0;j

{

if(j!

=0&&j%10==0)

{

printf("\n\nPassanykeytocontiune...");

getchar();

puts("\n\n");

}

printf_one(j);

}

}

 

intload()

{

FILE*fp;

inti;

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

{

printf("\nCannotopenfile\n");

return0;

}

for(i=0;!

feof(fp);i++)

fread(&books[i],sizeof(structbook),1,fp);

fclose(fp);

return(i-1);

}

voidsearch_by_name()

{

structbooks;

intn,i,k=0;

intload();

voidprintf_one(inti);

n=load();

printf("enterabookname:

");

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

for(i=0;i

if(strcmp(s.name,books[i].name)==0)

{

printf_one(i);

k=1;

}

if(k==0)printf("\nNotfoundthefile!

\n");

}

 

voidsearch_by_writer()

{

structbooks;

intn,i,k=0;

intload();

voidprintf_one(inti);

n=load();

printf("enterawriter'sname:

");

scanf("%s",&s.writer);

for(i=0;i

if(strcmp(s.writer,books[i].writer)==0)

{

printf_one(i);

k=1;

}

if(k==0)printf("\nNotfoundthefile!

\n");

}

voidsearch_by_flnum()

{

structbooks;

intn,i,k=0;

intload();

voidprintf_one(inti);

n=load();

printf("enteraflnum:

");

scanf("%s",&s.flnum);

for(i=0;i

if(strcmp(s.flnum,books[i].flnum)==0)

{

printf_one(i);

k=1;

}

if(k==0)printf("\nNotfoundthefile!

\n");

}

voidsearch_by_press()

{

structbooks;

intn,i,k=0;

intload();

voidprintf_one(inti);

n=load();

printf("enterapress:

");

scanf("%s",&s.pressname);

for(i=0;i

if(strcmp(s.pressname,books[i].pressname)==0)

{

printf_one(i);

k=1;

}

if(k==0)printf("\nNotfoundthefile!

\n");

}

voidsearch_by_dlnum()

{

structbooks;

intn,i,k=0;

intload();

voidprintf_one(inti);

n=load();

printf("enteradlnum:

");

scanf("%s",&s.dlnum);

for(i=0;i

if(strcmp(s.dlnum,books[i].dlnum)==0)

{

printf_one(i);

k=1;

}

if(k==0)printf("\nNotfoundthefile!

\n");

}

 

menu_search()

{

intn,w;

do

{

puts("\t\t*************MENUOFSEARCH**********************\n\n");

puts("\t\t\t\t1.search_by_name");

puts("\t\t\t\t2.search_by_writer");

puts("\t\t\t\t3.search_by_dlnum");

puts("\t\t\t\t4.search_by_flnum");

puts("\t\t\t\t5.search_by_press");

puts("\t\t\t\t6.back");

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

printf("Choiceyournumber(1-6):

[]\b\b");

scanf("%d",&n);

if(n<1||n>6)

{

w=1;

getchar();

}

elsew=0;

}while(w==1);

switch(n)

{

case1:

search_by_name();break;

case2:

search_by_writer();break;

case3:

search_by_dlnum();break;

case4:

search_by_flnum();break;

case5:

search_by_press();break;

case6:

menu();

}

}

 

voidprintf_back()

{

intw;

do

{

printf("Whatdoyouwanttodo?

\n\n\t1).BACKTOMENU\t2)continue...:

[]\b\b");

scanf("%d",&w);

switch(w)

{

case1:

menu();break;

case2:

menu_search();break;

}

}while(w!

=1&&w!

=2);

}

 

voidsearch()

{

menu_search();

printf_back();

}

 

voidmodify(intm,intn)

{

intc,w1;

voidmenu();

do

{puts("\nmodifyby=>\n\n1).dlnum2).name3).writer4).flnum\n5).pressname6).presstime7).price8).modifyall");

printf("Whichyouneed?

:

[]\b\b");

scanf("%d",&c);

if(c>8||c<1)

{puts("\nChoiceerror!

Pleaseagain!

");

getchar();

}

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

do

{

switch(c)

{

case1:

printf("dlnum:

");scanf("%s",books[m].dlnum);break;

case2:

printf("name:

");scanf("%s",books[m].name);break;

case3:

printf("writer:

");scanf("%s",books[m].writer);break;

case4:

printf("flnum:

");scanf("%s",books[m].flnum);break;

case5:

printf("pressname:

");scanf("%s",books[m].pressname);break;

case6:

printf("presstime:

");scanf("%s",books[m].presstime);break;

case7:

printf("price:

");scanf("%s",books[m].price);break;

case8:

printf("Enteranewinformation:

\n");input(m);

}

printf_face();

printf_one(m);

printf("\nAreyousure?

\n\n\t1).Sure2).noandremodify3).Backwithoutsaveinthistime[]\b\b");

scanf("%d",&w1);

}while(w1==2);

if(w1==1)save(n);

}

voiddel(intm,intn)

{FILE*fp;

intk,w;

printf("Areyousuredeleteit?

\n\n\t1).Sure\t2).Giveup:

[]\b\b");

scanf("%d",&w);

if(w==1)

{

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

printf("\nCannotopenfile\n");

for(k=0;k

if(k!

=m)

if(fwrite(&books[k],sizeof(structbook),1,fp)!

=1)

printf("filewriteerror\n");

fclose(fp);

}

}

 

voiddeal()

{

voidmenu();

intw,i,m,n,k=0;

structbooks;

n=load();

printf_books(n);

printf("enterabookname:

");

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

for(i=0;i

if(strcmp(s.name,books[i].name)==0)

{

printf_one(i);

k=1;m=i;

}

if(k==0)

{

printf("Notfoundthefile!

");

getchar();

menu();

}

printf("Whatdoyouwanttodo?

\n\n\t1).Modify\t2).Delete:

[]\b\b");

scanf("%d",&w);

switch(w)

{

case1:

modify(m,n);break;

case2:

del(m,n);break;

default:

menu();

}

menu();

 

}

add()

{

inti,n,m,k;

FILE*fp;

n=load();

printf("Howmanybooksareyouwanttoadd(0-%d)?

:

",N-1-n);

scanf("%d",&m);

k=m+n;

for(i=n;i

{

printf("\nInput%dthbooksrecord.\n",i-n+1);

input(i);

}

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

{

printf("cannotopenfile\n");

}

for(i=n;i

if(fwrite(&books[i],sizeof(structbook),1,fp)!

=1)

printf("filewriteerror\n");

fclose(fp);

printf_back();

}

voidmenu()

{

intn,w;

do

{

puts("\t\t**********************MENU************************\n\n");

puts("\t\t\t\t1.enter");

puts("\t\t\t\t2.browse");

puts("\t\t\t\t3.search");

puts("\t\t\t\t4.deleteormodify");

puts("\t\t\t\t5.add");

puts("\t\t\t\t6.exit");

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

printf("Choiceyournumber(1-5):

[]\b\b");

scanf("%d",&n);

if(n<1||n>6)

{

w=1;

getchar();

}

elsew=0;

}while(w==1);

switch(n)

{

case1:

enter();break;

case2:

browse();break;

case3:

search();break;

case4:

deal();break;

case5:

add();break;

case6:

exit(0);

}

}

 

main()

{

menu();

}

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

当前位置:首页 > 教学研究 > 教学计划

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

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