教材管理系统.docx
- 文档编号:2177912
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:17
- 大小:177.23KB
教材管理系统.docx
《教材管理系统.docx》由会员分享,可在线阅读,更多相关《教材管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
教材管理系统
沈阳航空工业学院
课程设计
学号__________
班级__________
姓名__________
指导教师__________
年月日
沈阳航空工业学院
课程设计任务书
机械与汽车学院机械设计及其自动化专业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教材查询");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教材 管理 系统