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

上传人:b****1 文档编号:867830 上传时间: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

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

成绩

评定

报告撰写情况(30分)

系统完成情况(30分)

答辩情况(40分)

总分

20分

规范程度

5分

程序测试

基本功能20分

扩展功能10分

自述情况10分

答辩情况

30分

成绩评定教师:

一.需求分析

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

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

基本功能包括:

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

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

测试数据有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.程序清单

{

printf("

\n**************************************************\n"

);

printf("

图书馆图书管理系统\n"

---------------------------------------------------\n"

0-退出系统6-按类别查询\n"

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

2-浏览图书8-按价格排序\n"

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

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

5-按作者查询11-修改图书\n"

__________________________________________________\n"

}

密码验证

voidsecret()

实现系统的密码验证功能

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

system("

cls"

库函数清频

chara[20];

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

do{

gets(a);

/*输入密码*/

system("

/*调用库函数清屏*/

对不起!

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

}while(strcmp(a,"

0605"

)!

=0);

/*单一密码“0605”*/

欢迎进入图书管理系统\n"

添加新图书及是否保存

structtushu*Input()

实现图书的添加及保存(其中调用函数voidfprint(structtushu*head);

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

*head链表头结点指针

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

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

structtushu*p1,*p2,*head;

/*建立辅助结点及头结点*/

charnum;

intn=0,x;

menu();

\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,&

time,&

price);

num='

#'

;

/*?

*/

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

p2->

next=p1;

p2=p1;

n++;

}while

(1);

p1->

next=NULL;

图书信息输入结束!

getchar();

是否保存图书信息?

(1.是/2.否):

"

scanf("

%d"

x);

if(x==1)

fprint(head);

/*调用函数保存至文件*/

else

\n文件没有被保存!

returnhead;

/*返回头指针*/

将信息导入文件可追加

voidfprint(structtushu*head)

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

structtushu*head链表头结点指针

structtushu*p1;

if((fp=fopen("

tushu_list.txt"

"

a"

))==NULL)

{

Fileopenerror!

exit(0);

}

for(p1=head;

next!

=NULL;

p1=p1->

next)/*遍历*/

fprintf(fp,"

%s\t%s\t%s\t%s\t%s\t%.0lf\t%lf\n"

num,p1->

kind,p1->

time,p1->

/*将图书信息写入文件*/

fclose(fp);

/*关闭文件*/

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

将信息导入文件不可追加

voidfprint_(structtushu*head)

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

w"

p1!

浏览图书信息

voidBrowse(structtushu*head)

实现图书信息的输出

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

a+"

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

while(!

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

fscanf(fp,"

%s%s%s%s%s%lf%lf"

num,name,writer,press,kind,&

%s\t%s\t%s\t%s\t%s\t%.0lf\t%.2lf\n"

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

};

if(fclose(fp))

Cannotclosethefile!

从tushu_list中读取数据构建链表

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

建立图书信息单向链表

int*n图书数目指针

structtushu*p,*p1,*p2;

))==NULL)/*先安全打开目录文件*/

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

(*n)++;

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

fscanf(fp,"

p->

num,p->

name,p->

writer,p->

press,p->

p->

if(head==NULL){

head=p;

p1=p;

}

else{

p1->

next=p;

p2=p1;

p2->

free(p);

/*释放辅助结点所占用空间*/

(*n)--;

统计图书数目

voidcount(structtushu*head)

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

n计数

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

intn=0;

head=create(head,&

n);

/*调用创建链表函数*/

/*计数*/

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

(n+1)/2);

/*计算并输出图书数目*/

按书名查询图书信息

voidFindofname(structtushu*head)

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

i计数判定

charb[20];

查找编号

2.函数流程图

3.程序清单

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

inti=0,n;

/*i为计数判定*/

charb[20];

/*定义查找编号*/

structtushu*p;

p=head;

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

b);

while(p!

=NULL){

if(strcmp(p->

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

printf("

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

%s\t%s\t%s\t%s\t%s\t%.0lf\t%.2lf\n"

kind,p->

time,p->

i++;

p=p->

next;

if(i==0)

\n对不起!

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

按作者查询图书

voidFindofwriter(structtushu*head)

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

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

writer,b)==0){

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

p->

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

按类别查询图书

voidFindofkind(structtushu*head)

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

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

kind,b)==0){

p=

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

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

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

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