C语言课程报告图书馆管理系统可做模板套用.docx

上传人:b****1 文档编号:646711 上传时间:2023-04-29 格式:DOCX 页数:28 大小:125.38KB
下载 相关 举报
C语言课程报告图书馆管理系统可做模板套用.docx_第1页
第1页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第2页
第2页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第3页
第3页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第4页
第4页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第5页
第5页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第6页
第6页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第7页
第7页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第8页
第8页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第9页
第9页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第10页
第10页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第11页
第11页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第12页
第12页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第13页
第13页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第14页
第14页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第15页
第15页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第16页
第16页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第17页
第17页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第18页
第18页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第19页
第19页 / 共28页
C语言课程报告图书馆管理系统可做模板套用.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程报告图书馆管理系统可做模板套用.docx

《C语言课程报告图书馆管理系统可做模板套用.docx》由会员分享,可在线阅读,更多相关《C语言课程报告图书馆管理系统可做模板套用.docx(28页珍藏版)》请在冰点文库上搜索。

C语言课程报告图书馆管理系统可做模板套用.docx

C语言课程报告图书馆管理系统可做模板套用

 

课程报告

 

课程名称:

程序设计实践

专业班级:

学生姓名:

学号:

任课教师:

学期:

2010-2011学年第二学期

课程报告任务书

题目

图书信息管理系统

主要

内容

开发一个图书信息管理系统,图书信息包括:

图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。

使之能提供以下基本功能:

(1)图书信息录入功能(图书信息用文件保存)--输入

(2)图书信息浏览功能--输出

(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):

①按书名查询②按作者名查询

按照价钱排序

按出版时间排序等等

(4)图书信息的删除与修改

扩展功能:

可以按照自己的程度进行扩展。

比如

(1)简单的权限处理

(2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。

(4)模糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。

任务

要求

一、提交材料应包括:

(1)系统源代码

(2)课程报告

二、整个设计过程具体要求

(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;

(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)

(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;

(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。

成绩

评定

报告撰写情况(30分)

系统完成情况(30分)

答辩情况(40分)

总分

内容

20分

规范程度

5分

程序测试

5分

基本功能20分

扩展功能10分

自述情况10分

答辩情况

30分

成绩评定教师:

一.需求分析

本次C语言程序设计以“图书馆管理系统”为题,题目要求开发一个图书信息管理系统,图书信息包括:

图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己的当前能力进行扩充)。

基本功能包括:

(1)图书信息录入功能(图书信息用文件保存)--输入

(2)图书信息浏览功能--输出

(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):

①按书名查询②按作者名查询

按照价钱排序

按出版时间排序等等

(4)图书信息的删除与修改

当然,也可以根据个人的情况进行适当的扩展:

比如权限处理啊,报表打印功能,模糊查询,统计功能,或筛选出小于指定数量库存的图书等等。

测试数据有ASCII文件tushu_list.txt提供:

tushu_list.txt文件结构:

图书编号书名作者出版社类别出版社时间价格

-----------------------------------------------------------------

1002cbhsbqq221zrkx201112.3

1001cbsbywbgdzrkx201110.5

1008cbsb2ywbrmjyjy201210.0

1004cblsbzj220zz20119.91

1007cbyysbywbgdzrkx201210.1

1006cbyzsbzzgdshkx201255.5

1003cbysbzzgdzrkx20119.22

1010cbsb4qqrmjyjy201210.58

1009cbsb3zjrmjyjy20129.9

1005cbyrsbcb220shkx20118.52

二.概要设计

(1).数据结构

根据题目给定的图书信息和数据格式可知道,链表结点必须用结构体实现。

故:

首先建立结构体数组:

structtushu{

charnum[10];字符型图书编号

charname[20];字符型书名

charwriter[20];字符型作者

charpress[20];字符型出版社

charkind[20];字符型类别

doubletime;双精度实型出版时间

doubleprice;实型价格

structtushu*next;用与构建连表指向下一结点

};

FILE*fp;定义全局变量fp

(2).模块划分

定义全局变量:

FILE*fp;/*定义全局变量fp*/

函数原型清单:

/*密码验证*/

voidsecret();

/*主菜单*/

voidmenu();

/*录入图书信息*/

structtushu*Input();

/*将信息导入文件可追加*/

voidfprint(structtushu*head);

/*将信息导入文件只写(可覆盖)*/

voidfprint_(structtushu*head);

/*从tushu_list中读取数据构建链表*/

structtushu*create(structtushu*head,int*n);

/*浏览全部图书信息*/

voidBrowse(structtushu*head);

/*统计图书数目*/

voidcount(structtushu*head);

/*按书名查询图书*/

voidFindofname(structtushu*head);

/*按作者查询图书*/

voidFindofwriter(structtushu*head);

/*按类别查询图书*/

voidFindofkind(structtushu*head);

/*按出版时间排序*/

voidSort_time(structtushu*head);

/*按价格排序*/

voidSort_price(structtushu*head);

/*按图书编号排序*/

voidSort_num(structtushu*head);

/*按编号删除图书*/

structtushu*Delete(structtushu*head,charm[15]);

/*修改图书*/

structtushu*Revise(structtushu*head);

(3).程序总体框架

模块层次结构只确定了模块之间的关系以及函数原型,不是程序的执行步骤。

程序的总体框架是程序的总体流程图。

此程序并非是按照顺序逐一执行的,其中有某些程序他们之间的关系并不是递进,而是并列。

所以选取一个合适的菜单是最佳方案。

程序的总体框架如下:

三.功能模块的详细设计

主菜单

1.函数原型,功能及形参说明

函数原型:

voidmenu()

函数功能:

实现系统的菜单调用,显示对应选项

参数说明:

函数类型为空

2.程序清单

voidmenu()

{

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

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

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

printf("0-退出系统6-按类别查询\n");

printf("1-添加新图书7-按时间排序\n");

printf("2-浏览图书8-按价格排序\n");

printf("3-统计图书数目9-按编号排序\n");

printf("4-按书名查询10-按编号删除图书\n");

printf("5-按作者查询11-修改图书\n");

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

printf("__________________________________________________\n");

}

密码验证

1.函数原型,功能及形参说明

函数原型:

voidsecret()

函数功能:

实现系统的密码验证功能

参数说明:

chara[20]20个字符以内的密码输入

system("cls");库函数清频

2.程序清单

voidsecret()

{

chara[20];

printf("**进入图书管理系统前请先进行密码验证---");

do{

gets(a);/*输入密码*/

system("cls");/*调用库函数清屏*/

printf("对不起!

您输入的密码有误,请重新输入---");

}while(strcmp(a,"0605")!

=0);/*单一密码“0605”*/

system("cls");

printf("欢迎进入图书管理系统\n");

}

添加新图书及是否保存

1.函数原型,功能及形参说明

函数原型:

structtushu*Input()

函数功能:

实现图书的添加及保存(其中调用函数voidfprint(structtushu*head);/*将信息导入文件可追加*/)

参数说明:

*head链表头结点指针

*p1,*p2辅助结点局外变量

2.程序清单

/*录入图书信息建立图书信息的链表*/

structtushu*Input()

{

structtushu*p1,*p2,*head;/*建立辅助结点及头结点*/

charnum;

intn=0,x;

system("cls");

menu();

printf("\n请按对应项输入图书信息以#结束:

\n");

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

head=p2=p1;

do{/*使用dowhile语句输入图书信息*/

scanf("%s",&p1->num);

if(strcmp(p1->num,"#")==0)break;/*判断结束符*/

else

scanf("%s%s%s%s%lf%lf",

p1->name,p1->writer,p1->press,p1->kind,&p1->time,&p1->price);

num='#';/*?

*/

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

p2->next=p1;

p2=p1;

n++;

}while

(1);

p1->next=NULL;

printf("图书信息输入结束!

\n");

getchar();

printf("是否保存图书信息?

(1.是/2.否):

");

scanf("%d",&x);

if(x==1)

fprint(head);/*调用函数保存至文件*/

else

printf("\n文件没有被保存!

\n");

returnhead;/*返回头指针*/

}

将信息导入文件可追加

1.函数原型,功能及形参说明

函数原型:

voidfprint(structtushu*head)

函数功能:

实现图书的保存将信息导入文件可追加

参数说明:

structtushu*head链表头结点指针

2.程序清单

voidfprint(structtushu*head)

{

structtushu*p1;

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

{

printf("Fileopenerror!

\n");

exit(0);

}

for(p1=head;p1->next!

=NULL;p1=p1->next)/*遍历*/

fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%.0lf\t%lf\n",

p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price);/*将图书信息写入文件*/

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

system("cls");

menu();

printf("\n图书信息已成功保存到文件tushu_list.txt中!

\n");

getchar();

}

将信息导入文件不可追加

1.函数原型,功能及形参说明

函数原型:

voidfprint_(structtushu*head)

函数功能:

实现修改及删除后的图书保存将信息导入文件并覆盖原文件

参数说明:

structtushu*head链表头结点指针

2.程序清单

voidfprint_(structtushu*head)

{

structtushu*p1;

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

{

printf("Fileopenerror!

\n");

exit(0);

}

for(p1=head;p1!

=NULL;p1=p1->next)/*遍历*/

fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%.0lf\t%lf\n",

p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price);/*将图书信息写入文件*/

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

system("cls");

menu();

printf("\n图书信息已成功保存到文件tushu_list.txt中!

\n");

getchar();

}

浏览图书信息

1.函数原型,功能及形参说明

函数原型:

voidBrowse(structtushu*head)

函数功能:

实现图书信息的输出

参数说明:

structtushu*head链表头结点指针

2.程序清单

voidBrowse(structtushu*head)/*浏览全部图书信息*/

{

charnum[10];

charname[20];

charwriter[20];

charpress[20];

charkind[20];

doubletime;

doubleprice;

system("cls");

menu();

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

{

printf("Fileopenerror!

\n");

exit(0);

}

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

printf("编号书名作者出版社类别出版时间价格\n");

while(!

feof(fp))/*读取并输出*/

{

fscanf(fp,"%s%s%s%s%s%lf%lf",

num,name,writer,press,kind,&time,&price);

printf("%s\t%s\t%s\t%s\t%s\t%.0lf\t%.2lf\n",

num,name,writer,press,kind,time,price);

};

if(fclose(fp))

{

printf("Cannotclosethefile!

\n");

exit(0);

}

}

从tushu_list中读取数据构建链表

1.函数原型,功能及形参说明

函数原型:

structtushu*create(structtushu*head,int*n)

函数功能:

建立图书信息单向链表

参数说明:

structtushu*head链表头结点指针

int*n图书数目指针

2.程序清单

structtushu*create(structtushu*head,int*n)

{

structtushu*p,*p1,*p2;

if((fp=fopen("tushu_list.txt","a+"))==NULL)/*先安全打开目录文件*/

{

printf("Fileopenerror!

\n");

exit(0);

}

while(!

feof(fp))/*读取并创建链表*/

{

(*n)++;

p=(structtushu*)malloc(sizeof(structtushu));

fscanf(fp,"%s%s%s%s%s%lf%lf",

p->num,p->name,p->writer,p->press,p->kind,&p->time,&p->price);

if(head==NULL){

head=p;

p1=p;

}

else{

p1->next=p;

p2=p1;

p1=p;

}

}

p2->next=NULL;

free(p);/*释放辅助结点所占用空间*/

(*n)--;

fclose(fp);

returnhead;

}

统计图书数目

1.函数原型,功能及形参说明

函数原型:

voidcount(structtushu*head)

函数功能:

实现图书信息数目统计并输出

参数说明:

structtushu*head链表头结点指针

n计数

2.程序清单

voidcount(structtushu*head)/*统计图书数目*/

{

intn=0;

structtushu*p1;

head=create(head,&n);/*调用创建链表函数*/

for(p1=head;p1->next!

=NULL;p1=p1->next)/*遍历*/

n++;/*计数*/

printf("\n此系统统计在内的图书共有%d册。

\n",(n+1)/2);/*计算并输出图书数目*/

}

按书名查询图书信息

1.函数原型,功能及形参说明

函数原型:

voidFindofname(structtushu*head)

函数功能:

实现图书信息按照书名查询并输出

参数说明:

structtushu*head链表头结点指针

i计数判定

charb[20];查找编号

2.函数流程图

3.程序清单

voidFindofname(structtushu*head)/*按书名查询图书*/

{

inti=0,n;/*i为计数判定*/

charb[20];/*定义查找编号*/

structtushu*p;

head=create(head,&n);

p=head;

system("cls");

menu();

printf("\n请输入要查询的图书名称:

");

scanf("%s",b);

while(p!

=NULL){

if(strcmp(p->name,b)==0){/*比较输入的字符串与原文件中书名*/

printf("\n编号书名作者出版社类别出版时间价格\n");

printf("%s\t%s\t%s\t%s\t%s\t%.0lf\t%.2lf\n",

p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);

i++;

}

p=p->next;

}

if(i==0)

printf("\n对不起!

没有找到名为《%s》的图书!

\n",b);

}

按作者查询图书

1.函数原型,功能及形参说明

函数原型:

voidFindofwriter(structtushu*head)

函数功能:

实现图书信息按照图书作者查询并输出

参数说明:

structtushu*head链表头结点指针

2.程序清单

voidFindofwriter(structtushu*head)

{

inti=0,n;

charb[20];

structtushu*p;

head=create(head,&n);

p=head;

system("cls");

menu();

printf("\n请输入要查询的图书作者姓名:

");

scanf("%s",b);

while(p!

=NULL){

if(strcmp(p->writer,b)==0){

printf("\n编号书名作者出版社类别出版时间价格\n");

printf("%s\t%s\t%s\t%s\t%s\t%.0lf\t%.2lf\n",p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);

i++;

}

p=p->next;

}

if(i==0)

printf("\n对不起!

没有找到‘%s’所著的相关图书!

\n",b);

}

按类别查询图书

1.函数原型,功能及形参说明

函数原型:

voidFindofkind(structtushu*head)

函数功能:

实现图书信息按照图书类别查询并输出

参数说明:

structtushu*head链表头结点指针

2.程序清单

voidFindofkind(structtushu*head)

{

inti=0,n;

charb[20];

structtushu*p;

head=create(head,&n);

p=head;

system("cls");

menu();

printf("\n请输入您要查询的图书类别:

");

scanf("%s",b);

while(p!

=NULL){

if(strcmp(p->kind,b)==0){

printf("\n编号书名作者出版社类别出版时间价格\n");

printf("%s\t%s\t%s\t%s\t%s\t%.0lf\t%.2lf\n",

p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);

i++;

}

p=

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

当前位置:首页 > 总结汇报 > 学习总结

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

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