库存管理系统报告c语言,湖南工程学院C语言课程设计报告库存管理系统、学生成.doc...

253b171540df25e1b84436cbe50dfc72.gif湖南工程学院C语言课程设计报告库存管理系统、学生成.doc

课 程 设 计 报 告 课程名称课程名称 C 语言程序设计语言程序设计 课题名称课题名称 库存信息数据库管理系统设计库存信息数据库管理系统设计 专专 业业 测控技术与仪器测控技术与仪器 班班 级级 测控测控 1201 学学 号号 201201200125 姓姓 名名 郭稳郭稳 指导教师指导教师 何宏肖伟平何宏肖伟平 2012 年年 12 月月 20 日日 湖南工程学院 课 程 设 计 任 务 书 课程名称 C C 语言程序设计语言程序设计 课 题 库存信息数据库管理系统设计库存信息数据库管理系统设计 专业班级 测控技术与仪器测控技术与仪器 学生姓名 郭稳郭稳 学 号 201201200125 指导老师 何宏何宏 肖伟平肖伟平 审 批 任务书下达日期 2012 年 12 月 20 日 任务完成日期 2013 年 1 月 6 日 一一设设计计内内容容与与设设计计要要求求 1 1设计内容设计内容 数据库管理系统设计数据库管理系统设计 涉及的知识点涉及的知识点 掌握并熟练运用 C 语言的基本数据类型与各种表达式,程序的流程控制语 句; 掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数 之间的关系;掌握变量的作用域与生存期,了解函数的作用域。 掌握并熟练运用库函数的应用。 掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组 与字符串的关系以及字符串的简单处理。 掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的 表示,结构的赋值含义,结构与指针、函数的关系。 题目具体要求题目具体要求 数据库管理系统设计数据库管理系统设计 题目库存信息管理系统题目库存信息管理系统 从文件读取数据,提供新增、删除、修改和显示等功能,并将修改后的数据写入一个新的文 件。 库存表单如下 编号 int 4bytes 库存物品名称 char 20bytes 库存物品数量 int 2bytes 库存物品单价 int 4bytes 库存物品总额 int 4bytes 系统功能模块如下 1 建立库存表单; 2 菜单实现以下功能 计算库存物品总额; 显示库存表单信息; 新增一个库存表单; 库存物品出库(领出物品)(按库存物品编号) ; 查询一个库存物品状态( 按库存物品编号) 。 将修改后的库存物品表单存于一个新文件中。 2 2设计要求设计要求 1要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容; 2要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法, 给出程序流程图和全部源程序; 3设计报告的完整格式应包括以下部分的内容 设计总体思路; 程序及各个模块说明; 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于 400 字) 。 4上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。 5 总评成绩由三部分组成报告占 20,平时占 20,课程设计题目各占 30。 二二进进度度安安排排 星 期 1 2 节3 4 节5 6 节7 8 节晚上 17 周星期一布置任务,题目讲解 17 周星期四上机编程 17 周星期六上机编程 18 周星期三上机编程 19 周星期四上机编程、答辩 目 录 一、课题的主要功能一、课题的主要功能.3 二、课题的功能模块的划分二、课题的功能模块的划分.5 I文件读取模块.6 II显示模块6 III求和模块.6 IV追加模块 6 V查询模块6 VI修改模块 6 VII排序模块.6 VIII删除模块6 IX文件存储模块 7 X退出功能7 三、主要功能的实现三、主要功能的实现.7 I文件读取模块.7 II显示模块8 III求和模块.8 IV追加模块 10 V查询模块11 VI修改模块 12 VII排序模块.13 VIII删除模块14 IX文件存储模块 15 四、程序调试四、程序调试.16 I文件读取.17 II显示18 III求和.19 IV追加 20 V查询21 VI修改 23 VII排序.24 VIII删除25 IX文件存储 27 X退出28 五、总结五、总结.29 六、附件六、附件.30 一、课题的主要功能 总体功能设计 库存信息管理系统的每个表单存放了库存物品的编号、库存物品的名称、 1 2 库存物品的数量、库存物品的单价、库存物品的总额的数据库。每个表单都信 3 4 5 息定义在一个结构体变量中。其结构如下 库存物品的编 号 库存物品的名 称 库存物品的数 量 库存物品的单 价 库存物品的总 额 nonamenumpricesum struct Sto int no; char name20; int num; int price; int sum; ; 系统通过文件读取模块、显示模块、求和模块、追加模块、查询模块、 1 2 3 4 5 修改模块、排序模块、删除模块、存储模块来实现库存信息管理系统的文件 6 7 8 9 读取功能、显示功能、求和功能、追加功能、查询功能、排序功能、删除功能、存储 功能。主函数采用菜单模式便于用户操作,而各个功能的调用通过主函数中的 switch 语句来实现。 switchchoice case 1Read;break; 读取程序 case 2Disp;break; 显示模块 case 3Count;break; 求和模块 case 4Append;break; 追加模块 case 5Query;break; 查询模块 case 6Modify;break; 修改模块 case 7Sort;break; 排序模块 case 8Delete;break; 删除模块 case 9Save;break;存储模块 case 0exit0;退出 二、课题的功能模块的划分 主函数主函数 开始 结束 读数模块 显示模块 退出模块 求和模块 追加模块 查询模块 修改模块 排序模块 删除模块 保存模块 主函数 选择不同的模块 I文件读取模块 通过设计一个模块,来实现库存信息的文件读取,免去用户重复输入数据的工作。 II显示模块 通过设计一个模块,来实现库存信息的显示。以便于浏览库存的信息。 III求和模块 通过设计一个模块,来实现库存总额计算。 IV追加模块 通过设计一个模块,当要加入新的表单的信息的时候,来实现新库存表单信息的 加入。 V查询模块 通过设计一个模块,这个模块可以按库存表单的编号来查询该表单所有的信息。 并且当成功查询到表单信息时,提示用户是否对该表单信息进行修改的功能; VI修改模块 通过设计一个模块,当某库存表单的信息发生变化的时候,可以通过修改模块来 进行修改。当系统运行修改模块时,系统自动调用排序和显示模块将所有库存表单按 库存编号排好顺序显示出来。使用户十分方便的找到要修改的数据。 VII排序模块 通过设计一个模块,来实现数据库的信息按库存表单编号的升序排列。并显示所 有信息,使浏览者一目了然。 VIII删除模块 通过设计一个模块,当输入一个库存表单的编号时候,可以通过这个模块,将输 入表单编号的所有信息从数据库中删除出去。以后,这个库存表单的信息将不再会出 现再数据库中。 IX文件存储模块 通过设计一个模块,将编辑好的库存表单信息存储到新文件中。 X退出功能 该功能直接在菜单 switch 语句中实现。用户随时可以再菜单提示下选择此项功能 退出系统。 三、主要功能的实现 I文件读取模块 设置一个文件指针 fp(如 fpdx.txt,r), fp 是可找到存放库存 文件信息的结构变量,然后通过 fp 提供的信息找到该文件,实施对文件的读取操作。 在读取文件时,判断文件是否成功打开(fpNULL,当条件成立提示文件读取失败, 结束该模块的运行,返回主菜单;否则进行文件读取,这里用一个 while 循环语句实 现,一直读取至文件末尾,文件读取完毕后,提示文件读取成功,并关闭文件,结束 该模块的运行,返回主菜单。 流程图流程图 否 fpdx.txt,r; fpNULL 是 读取数据 文件读取成功 开始 结束 文件读取失败 II显示模块 用一个 for 循环语句实现对每个表单的输出,并加上相应的格式输出做为边框, 美化输出界面。 III求和模块 使用 for 循环语句来实现库存总额计算,si.sumsi.num*si.price。 并定义一个 total 整型变量进行所有表单 sum 域的累加。total 的累加结果就是所有库 存总额。并加上一些格式输出美化输出界面。 流程图流程图 否 isize 是 totalsi.sum; 开始 结束 si.sumsi.num*si.price; IV追加模块 首先提示用户输入要追加表单的编号,再将输入的编号进行数据对比查询数据库 中是否已存在该编号,若已经存在就提示错误信息,显示下一级菜单(是否继续追加) 这些使用 goto 语句实现;否则就直接输入追加表单的相关信息。 开始 输入要追加的编号 判断是否存在该库存编 号 否 输入追加的数据 提示编号输入错误 是否重新继续输 入编号 0.退出 1.继续 是 结束 V查询模块 通过设计一个模块,这个模块可以按库存表单的编号来查询该表单所有的信息。 并且当成功查询到表单信息时,提示用户是否对该表单信息进行修改的功能; 流程图流程图 提示用户没有 找到数据。 输入您要查询的数据 开始 是否找到该数据 输出库存信息 提示是否进行修改 是 否 0.不修改1.修改 修改内容 结束 VI修改模块 当系统运行修改模块时,系统自动调用排序和显示模块将所有库存表单按库存编 号排好顺序显示出来。使用户十分方便的找到要修改的数据。然后提示用户输入将要 修改的库存编号,判断该编号在数据库中是否存在,若不存在继续输入表单的其他详 细信息;否则提示输入有误,出现二级菜单,选择是否重新输入库存编号。 流程图流程图 开始 输出所有库存表单信息,便 于查看要修改数据 判断是否存在该库存编 号 否 输入修改的库存 数据 是否重新输入编 号 0.退出 1.继续 是 结束 输入要修改的库存编号 提示编号输入错误 VII排序模块 程序运用冒泡排序方法(从第一个数开始依次对相邻两数进行比较,如次序对则 不进行任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最 大数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍后就可以 完成排序。 )对所有库存表单编号进行升序排列,并通过调用 Disp 函数输出排序后的 数据。 流程图流程图 开始 按库存编号排序 调用 Disp函数 结束 VIII删除模块 流程图流程图 输入您要删除的表单 编号 开始 是否有该数据 删除并提示成功删 除的该库存信息, 是 否 结束 提示用户没有找到 要删除的数据。 按编号顺序输出所有库存表单,便于找到要 删除的表单数据。 1.继续删除1.继续删除0退出0退出 IX文件存储模块 通过设计一个模块,将编辑好的库存表单信息存储到新文件中。 流程图流程图 否 存储数据 flag0 是 文件保存成功 开始 结束 文件保存失败 flagfclosefp 四、程序调试 进入系统 I文件读取 主菜单选择 1 如果数据文件存在时,则显示 否则显示 II显示 主菜单选择 2 III求和 主菜单选择 3 IV追加 主菜单选择 4 系统会提示用户输入将要追加的库存编号;如果输入的编号在数据库中已经存在, 则会出现下一级菜单(下图 1) ; 图 1 (选择 1,重新进入追加模块;选择 0,则回到主菜单;若用户输入的不是 0 或 1, 则 会不断提示该级菜单) 如果没有相同的编号则出现提示用户输入库存详细信息(下图 2) ; 图 2 V查询 主菜单选择 5 系统提示用户输入要查找的编号 当成功查找到数据,出现二级菜单,用户可以选择是否进行修改。 (选择 1,修改库存详细内容; 选择 2,回到主菜单。 )如输入5(下图 1 所示) ; 图 1 如果输入的是库存中不存在的编号 如18 则会出现(下图 2 所示) 图 2 VI修改 主菜单选择 6 首先将库存的所有表单有序输出(便于找到数据修改) ;提示用户输入要修改数据的表 单 当输入的数据编号是库存中不存在的编号,会提示错误,并出现二级菜单(选择 1,重新进入修 改模块;选择 0,则回到主菜单;若用户输入的不是 0 或 1, 则会不断提示该级菜单) (如下图 1) ; 图 1 VII排序 主菜单选择 7 按编号升序排序方式输出库存表单 VIII删除 主菜单选择 8 首先将库存的所有表单有序输出(便于找到删除数据) ;提示用户输入要删除数据的表 单编号 当成功删除数据时,提示删除成功。出现二级菜单,用户可以选择是否继续删除。 (选择 1,程序 重新回到删除模块;选择 2,回到主菜单。 ) 如输入9(如下图 1 所示) 图 1 当未找到删除数据时,提示错误信息。出现二级菜单,用户可以选择是否继续删除。 (选择 1,程 序重新回到删除模块;选择 2,回到主菜单。 ) 如输入144(如下图 2 所示) 图 2 IX文件存储 主菜单选择 9 文件成功保存后 保存出现意外 X退出 主菜单选择 0 五、总结 通过这周的课程设计,通过实践来理解和巩固理论知识,使我对 C 语 言程序设计有了一个更加深入的认识,对于我来说,我感觉自己是很幸运 的,看着周围的同学学习 C 语言的过程,初学者的他们,让我回想起我刚 刚学习 PASCAL 语言的经历。想起自己那时,因为对计算机的兴趣,一无 所知自己就去书城买了一本编程书看了看,那时刚看还是很有韵味,看着 看着,一方面很多知识都不是高中所涉及的,另外一个最重要的方面就是 自己没有电脑,缺少实践的过程。其实 C 语言和 PASCAL 语言这两种语言 语法有点点不同而已。所以我对自己的评价就是进入大学学习 C 语言之前, 我算得上是懂得点点皮毛的。 从刚开始的初略了解到有了比较深入的认识,能够比较灵活的运用。 C 语言是一门比较灵活、有趣而且实践性非常强的课程,单从理论课上是 难以领略到它的精髓,我们只有从它的实践运用中,才能体会到了学习 C 语言的乐趣和好处,才能体会到了学习计算机的乐趣。在学习的过程中问 题是常常有的,这些我都不畏惧,重要的是我学会了分析问题,解决问题 这才是我最大的收获,我也渐渐喜欢这种感觉,喜欢这种处理问题的感觉。 C 语言的学习更是为我们以后学习的微机原理以及单片机原理奠定了 基础。我们的专业是测控技术,主要是跟电子仪器产品打交道,后面用到 C 语言的地方还有许多,所以说,学好 C 语言,为我们以后专业知识的学 习有很大好处。在学习 C 语言中更使我体会到了学习计算机技术的乐趣, 我将更加努力多学,学好计算机技术。 六、附件 源代码 include stdio.h include string.h include math.h include stdlib.h int size0;/*全局变量*/ struct Sto int no; char name20; int num; int price; int sum; ; struct Sto s100; void Read int i0; FILE *fp; fpdx.txt,r; iffpNULL printfan; printfttn; printftt n; printftt 文件读取失败 n; printftt n; printfttnnnn; else printfttn; printftt n; printftt 文件读取成功 n; printftt n; printfttn; while fscanffp,dnsndndn, fclosefp; sizei; /*文件读取数据*/ void Disp int i; printf * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n; printf * *n; printf * 编号 名称 数量 价格 总额 *n; fori0;isize;i printf * -12d-20s-12d-12d- 12d*n,si.no,si.name,si.num,si.price,si.sum; printf * *n; printf * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n; /*显示*/ void Count int i,total0; fori0;isize;i si.sumsi.num*si.price; totalsi.sum; Disp; printf * 表单库存总额-22d *n,total; printf * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *nnnn; /*计算库存物品总额*/ void Sort int i,j; struct Sto t; fori0;isize;i forji;jsj.notsi;sisj;sjt; printf按编号排序的表单n; Disp; /*排序采用的是冒泡排序*/ void Append int i, no,flag0,c;flag 用于标志是否添加相同了的编号 A1 printf新增编号; scanfd, fori0;isize;i ifnosi.no flag1; break; ; ifflag0没有相同的编号,直接修改 ssize.nono; printf请输入名称; scanfs,ssize.name; printf请输入数量和价格; scanfdd, si.sumssize.num*ssize.price; size; else有相同的编号,发出警报,提示错误,重新输入修改的编号 printfan; printfttn; printftt n; printftt 您输入的数据编号已存在,请重新输入编号n; printftt n; printfttnnnn; flag0; A2 printfttn; printftt n; printftt 是否继续追加其它库存1.继续 0.退出 n; printftt n; printfttnnnn; scanfd, ifc1goto A1; else ifc0 ; else goto A2; /*新增库存表单*/ void Modify int no,c,flag0,i; flag 找到修改的数据标志。 M1 printf已有的表单n; Sort; printfnn;给用户显示已经有了的排序数据,便于找到用户要修改的表单。 printfttn; printftt n; printftt 请输入您要修改的数据的编号 n; printftt n; printfttnnnn; scanfd, fori0;isize;i ifnosi.no当找到数据 printf * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n; printf * 这 是 要 修 改 编 号 的 内 容 *n; printf * * * * * * * * * * * * * * * * *

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值