教材管理系统.docx

上传人:b****3 文档编号:2177912 上传时间:2022-10-27 格式:DOCX 页数:17 大小:177.23KB
下载 相关 举报
教材管理系统.docx_第1页
第1页 / 共17页
教材管理系统.docx_第2页
第2页 / 共17页
教材管理系统.docx_第3页
第3页 / 共17页
教材管理系统.docx_第4页
第4页 / 共17页
教材管理系统.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

教材管理系统.docx

《教材管理系统.docx》由会员分享,可在线阅读,更多相关《教材管理系统.docx(17页珍藏版)》请在冰豆网上搜索。

教材管理系统.docx

教材管理系统

 

沈阳航空工业学院

课程设计

 

学号__________

班级__________

姓名__________

指导教师__________

年月日

沈阳航空工业学院

课程设计任务书

机械与汽车学院机械设计及其自动化专业5406108班学号200504061283

一、课程设计题目:

教材管理系统

二、课程设计工作自2007年7月9日起至2007年7月14日止

三、课程设计内容:

运用所学的C语言知识,编制和调试程序,具有如下功能:

(1)教材录入(教材信息至少应包括书名、作者、出版社、总数量等数据项)

(2)教材查询可以按照书名、作者、出版社分别进行查询

(3)购买教材及教材的出卖

(4)缺书统计(5)将教材信息存入文件book.dat中。

四、课程设计要求:

程序质量:

●贯彻结构化程序设计思想。

●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。

●用户界面中的菜单至少应包括“教材录入”、“教材查询”、“购买教材”、“出售教材”、“统计缺书”“退出”6项。

●代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:

课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:

●封面

●课程设计任务书

●目录

●需求分析(分析题目的要求)

●程序流程图(总体流程图和主要功能模块流程图)

●核心技术的实现说明及相应程序段

●个人总结

●参考资料

●源程序及适当的注释

指导教师:

____________________

学生签名:

____________________

目录

一、需求分析1

二、程序流程图3

三、核心技术的实现说明及相应程序段8

四、个人总结12

五、参考文献12

六、源程序13

一、需求分析

经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:

教材录入信息函数(lu),查询教材函数(chaxun),购买教材函数(add),出售教材函数(sell),统计缺书函数(que)。

1录入教材函数主要是实现对最初的教材信息进行录入;

2查询教材函数允许按照书号对教材的书名,作者,出版社,单价及现有数量进行查询;

3购买教材函数主要是实现教材信息录入后,对教材信息的追加购买功能;

4出售教材函数主要是实现按教材的书名,作者,出版社,单价及出售数量对教材进行出售;

5统计缺书函数主要是实现对所缺教材书名的统计。

除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。

每一本教材记录都包含教材的书号,书名,作者,出版社,教材的价格及数量。

在程序当中,将教材记录类型定义为结构体类型,购买以及录入教材信息直接写入E盘的book.dat文件中,其他函数每次对教材记录的访问,其来源都是book.dat文件,这样做不但可以保证教材数据的一致性,而且可以对教材数据进行永久保存,保证每次运行程序都可以采用原来的数据。

 

二、程序流程图

1程序总体结构图

图1程序总体结构图

 

2具体功能框图

(1)录入教材函数

图2录入教材函数

 

(2)读取教材函数

图3读取教材函数

(3)购买教材函数

图4购买教材函数

(4)出售教材函数

图5出售教材函数

三、核心技术的实现说明及相应程序段

本程序一共由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。

在这些函数中,教材录入函数,购买教材函数和出售教材函数是程序中较为核心的部分,下面分别对程序进行说明:

1、教材录入函数说明

教材录入前要用键盘先输入教材的编号,书名,作者,出版社,价格,数量。

用只写的方式打开一个文件夹(book.dat)把数据项写入指定文件(book.dat)中。

关闭文件。

具体的程序段如下:

voidsave()/*保存程序*/

{FILE*fp;

inti;

if((fp=fopen("e:

\\book.dat","wb"))==NULL)/*只写方式打开文件*/

{printf("cannotopenfile\n");

return;

}

for(i=0;i

fwrite(&jiaocai[i],sizeof(structbook),1,fp);/*将fp所指向的文件写入指定文件中*/

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

}

voidlu()

{inti;

printf("\n请输入第%d本教材的编号,书名,作者,出版社,价格,总量,用空格分开,并按回车键确认:

\n");

for(i=0;i

scanf("%d%s%s%s%d%d",&jiaocai[i].num,jiaocai[i].name,jiaocai[i].writer,jiaocai[i].repub,&jiaocai[i].money,&jiaocai[i].count);

save();/*调用save()保存程序*/

}

2、购买教材函数

购买教材数据分为两种情况,其一是在教材文件(book.dat)不存在的情况下,首先由程序创建一个新文件,并将录入的教材信息写入该文件当中;其二是在教材文件(book.dat)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。

具体的程序段如下:

voidadd()/*购买教材*/

{FILE*fp;

intn,i,j;

structbookjiaocai;

if((fp=fopen("e:

\\book.dat","rb+"))!

=NULL)/*读写方式打开文件*/

{j=getw(fp);

rewind(fp);/*文件位置指针返回文件开头*/

printf("请输入要购买的教材数量,按回车键确认:

");

scanf("%d",&n);

putw(j+n,fp);/*将整数n+j输出到fp所指向的文件*/

fseek(fp,0L,2);/*将位置指针从文件末尾向后退0个字节*/

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

{printf("\n请输入购买教材的编号,书名,作者,出版社,价格,总量,用空格分开,并按回车键确认:

\n");

scanf("%s%s%s%s%d%d",&jiaocai.num,&jiaocai.name,&jiaocai.writer,&jiaocai.repub,&jiaocai.money,&jiaocai.count);

fwrite(&jiaocai,sizeof(structbook),1,fp);

}

}

else

{if((fp=fopen("e:

\\book.dat","wb"))!

=NULL)/*只写方式打开文件*/

{printf("请输入要购买的教材数量,按回车键确认:

");

scanf("%d",&n);

putw(n,fp);

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

{printf("\n请输入购买教材的编号,书名,作者,出版社,价格,总量,用空格分开,并按回车键确认:

\n");

scanf("%s%s%s%s%d%d",&jiaocai.num,&jiaocai.name,&jiaocai.writer,&jiaocai.repub,&jiaocai.money,&jiaocai.count);

fwrite(&jiaocai,sizeof(structbook),1,fp);

}

}

}

fclose(fp);

}

3、出售教材函数

该部分的核心是统计出售该教材的数量和出售后的数量,以读写或追加读写的方式将文件打开,将剩余教材的数量以只写的方式写入(book.dat)文件中。

在以前数据的基础上统计出售的教材和剩余教材。

具体的程序段如下:

voidsell()/*出售教材*/

{FILE*fp;

intn,i,j;

structbookjiaocai;

if((fp=fopen("e:

\\book.dat","rb+"))!

=NULL)/*以读写的方式打开文件*/

{j=getw(fp);

rewind(fp);/*文件位置指针返回文件开头*/

printf("请输入要出售的教材数量,按回车键确认:

");

scanf("%d",&n);

putw(j-n,fp);/*将整数j-n输出到fp指向的文件*/

fseek(fp,0L,2);

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

{printf("\n请输入出售教材的编号,书名,作者,出版社,价格,总量,用空格分开,并按回车键确认:

\n",i);

scanf("%s%s%s%s%d%d",&jiaocai.num,&jiaocai.name,&jiaocai.writer,&jiaocai.repub,&jiaocai.money,&jiaocai.count);

}

if((fp=fopen("e:

\\book.dat","wb"))==NULL)/*以只写的方式打开文件*/

{printf("cannotopenfile\n");

return;

}

else/*重新写回文件当中*/

{putw(n,fp);

for(i=0;i

{printf("\n请输入出售教材的编号,书名,作者,出版社,价格,总量,用空格分开,并按回车键确认:

\n",i);

scanf("%s%s%s%s%d%d",&jiaocai.num,&jiaocai.name,&jiaocai.writer,&jiaocai.repub,&jiaocai.money,&jiaocai.count);}

fwrite(&jiaocai,sizeof(structbook),1,fp);

}

fclose(fp);

}

四、个人总结

本次课程设计使我掌握了在C语言中,如何对文件进行处理。

如如何创建文件,如何保存文件,如何将数据输入文件或将文件中的数据输出到内存中。

我的程序基本上都是处理文件中的数据,将文件录入,保存,增加,删减等。

但是程序未能全部实现预期的效果,关于教材的统计没法做到更具体,更细致的分类,关于购买和出售教材,统计不够全面。

五、参考文献

1谭浩强.C程序设计.北京:

清华大学出版社,2005

2刘成等.C语言程序设计实验指导与习题集.北京:

中国铁道出版社,2006

六、源程序

#include

#include

#defineSIZE2

structbook

{charnum[20];

charname[10];

charwriter;

charrepub;

intcount;

intmoney;

}jiaocai[SIZE];

intmenu();

voidreads();

voidsave();

voidlu();

voidchaxun();

voidadd();

voidsell();

voidque();

intmenu()

{

intn;

printf("教材管理系统");

printf("\n1教材录入");

printf("\n2教材查询");

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

当前位置:首页 > 工程科技

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

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