C语言课程设计论文图书信息管理系统设计.doc

上传人:wj 文档编号:1219403 上传时间:2023-04-30 格式:DOC 页数:21 大小:243.50KB
下载 相关 举报
C语言课程设计论文图书信息管理系统设计.doc_第1页
第1页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第2页
第2页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第3页
第3页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第4页
第4页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第5页
第5页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第6页
第6页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第7页
第7页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第8页
第8页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第9页
第9页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第10页
第10页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第11页
第11页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第12页
第12页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第13页
第13页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第14页
第14页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第15页
第15页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第16页
第16页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第17页
第17页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第18页
第18页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第19页
第19页 / 共21页
C语言课程设计论文图书信息管理系统设计.doc_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计论文图书信息管理系统设计.doc

《C语言课程设计论文图书信息管理系统设计.doc》由会员分享,可在线阅读,更多相关《C语言课程设计论文图书信息管理系统设计.doc(21页珍藏版)》请在冰点文库上搜索。

C语言课程设计论文图书信息管理系统设计.doc

C语言程序设计报告--图书信息管理系统

 

中国地质大学

C语言课程设计

综合实习报告

 

题目:

图书信息管理系统

 

 

 

姓名:

班学号:

院系:

专业:

指导教师:

 

2008年7月

目录

(1)作者简介……………………………………………………………3

(2)报告摘要……………………………………………………………3

(3)报告主体……………………………………………………………3

   3.1 报告要求………………………………………………………3

   3.2 需求分析………………………………………………………3

   3.3 总体设计………………………………………………………4

   3.4 详细设计………………………………………………………4

    3.4.1 主函数………………………………………………4

    3.4.2 各功能模块设计……………………………………6

    3.4.3 公共函数……………………………………………12

   3.5 上机操作………………………………………………………15

    3.5.1 数据源………………………………………………15

    3.5.2 编译、连接和运行…………………………………15

    3.5.3 结果…………………………………………………15

 (4)实习总结…………………………………………………………20

(1)作者简介:

我叫王栋,是地球科学学院资源环境与城乡规划管理专业的二年级学生,有幸在大二上学期学习C程序设计这门课程.刚开始的时候对这门课没什么理解,觉得很难很复杂,而在后来慢慢深入的学习之后开始对其产生了兴趣。

看到自己亲手编写的程序能够发挥出作用,觉得能够运用自己写出来的东西做出成果很高兴。

同时也知道了做程序并不是想象之中的那么难的,只要我们能好好看懂课本上面的东西,并能在实践中加以练习就一定能够很好的掌握。

(2)报告摘要:

  本论文设计了程序:

《C语言课程设计指导书》第12题——图书信息管理系统。

这个管理系统能对图书信息(包括登录号、书名、作者号、分类号、出版单位、出版时间、价格等)进行有效地信息录入、浏览、查询、插入、删除等操作,会给用户带来很大的便利,达到既节省时间又节省精力的目的。

(3)报告主体:

3.1题目要求

  图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:

  

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

  

(2)图书信息录入功能(图书信息用文件保存)

  (3)图书信息浏览功能

  (4)图书信息查询功能

  (5)图书信息删除与修改功能(可选项)

    [提示]

  建立图书信息结构体,结构体成员包括登录号、书名、作者名、分类号、出版单位、出版时间、价格。

3.2需求分析

根据题目要求,要求对图书信息进行输入、输出等操作;在程序中需要浏览图书的信息,应提供显示、查找、浏览、插入、修改等操作;另外还应提供键盘式选择菜单实现功能选择。

3.3总体设计

根据需求分析,可以对这个系统的设计分为以下几个模块:

图书信息管理系统

数据输入

数据浏览

数据查找

数据插入

退出

             图1.3系统功能模块图

3.4详细设计

3.4.1主函数

  主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

[流程图]:

显示一系列功能选项

根据n的值调用各功能模块函数

N

Y

输入n,判断n是否是0-5

          图1.4.1主函数流程图

[程序]

/*****************主函数**********************/

main()

 menu();

 }/*****************menu函数********************/

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);

}

}

  

  注:

menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。

3.4.2各功能模块设计

(1)输入模块

在这里主要运用结构体的形式来输入保存图书的各种信息,包括图书的登录号、书名、作者名、分类号等等,因为图书的数目众多,因此采用结构体数组的形式。

  

  用结构体来存放图书信息:

/********************结构体*******************/

#defineN100

#include

#include

#include

structbook

{

chardlnum[10];

charname[50];

charwriter[20];

charflnum[10];

charpressname[50];

charpresstime[20];

charprice[10];

}books[N];books[N]中每个数组元素对应一本图书*/

其中可以根据宏定义#defineN随时对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();

}

(2)浏览模块

[需求分析]该模块的功能是显示所有图书记录信息。

[流程图]

显示图书记录(10个一屏)

按任意键显示下一屏

按任意键返回主菜单

图1浏览模块流程图

[程序]:

    /****************浏览(全部)模块***************/

voidbrowse()

{

intk;

voidmenu();

intload();

voidprintf_books(intn);

k=load();

printf_books(k);

printf("Passanykeytoback\n");

getchar();

menu();

}

(3)查找模块

/***************按书名查找模块***************/

  [流程图]:

按书名查找模块

用户作出选择,输入一整型数值

1,2,还是3

修改

返回主菜单

继续查找

图2按书名查找模块流程图

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");

}  

/***************按作者查找模块***************/

[流程图]

按作者名称查找模块

用户作出选择,输入一整型数值

1,2,还是3

修改

继续查找

返回主菜单

图3按图书名查找模块流程图

 [程序]:

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");

}

/***************按出版社查找模块***************/

按出版社查找模块

用户作出选择,输入一整型数值

1,2,还是3

返回主菜单

修改

继续查找

图4按出版社查找模块流程图

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");

}

/***************按登录号查找模块***************/

按登录号查找模块

用户作出选择,输入一整型数值

1,2,还是3

修改

继续查找

返回主菜单

图5按登录号查找模块流程图

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");

}

(4)插入模块

[需求分析]该模块的功能是插入图书纪录信息并且不能覆盖原有图书信息。

[流程图]

插入模块

调用加载函数

让用户输入要插入的图书信息个数

调用整条信息输入函数

用户作出选择,输入1or2

1还是2

1浏览全部

2返回主菜单

图6插入模块流程图

    /*************************插入模块*********************/

add()            

{

 inti,n,m,k;

 FILE*fp;

 n=load();         

 printf("Howmanybookareyouwanttoadd(0-%d)?

:

",N-1-n);

 scanf("%d",&m);

 k=m+n;

  for(i=n;i

   {

    printf("\n Input%dthebooksrecord.\n",i-n+1);

    input(i);

   }

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

{

printf("cannotopenfile\n");

}

for(i=n;i

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

=1)

printf("filewriteerror\n");

fclose(fp);

printf_back();

 }

(5)修改功能

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);

}

3.4.3公共函数

(1)保存函数save(intn)

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);

}

(2)加载函数load()

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);

}

(3)图书信息输入函数no_input(inti,intn)

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);

}

(4)输入整一个记录函数input(inti)

[说明]:

形参i表示第i个图书记录。

voidinput(inti)

{ no_input(i,i);

printf("book-name:

");scanf("%s",book[i].name);

printf("writer-name:

");scanf("%s",book[i].writer);

printf("classify-num:

");scanf("%s",book[i].flnum);

printf("publish-unit:

");scanf("%s",book[i].pressname);

printf("publish-time:

");scanf("%s",book[i].presstime);

printf("price:

");scanf("%s",book[i].price);

}

(5)显示一个记录的函数printf_one(inti)

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");

}

(6)一个任务结束时的选择浏览还是返回的函数printf_back()

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);

}

(7)修改整条数据记录函数modify_data(inti,intn)

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||

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2