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

上传人:李司机 文档编号:1149863 上传时间:2022-07-05 格式:DOCX 页数:39 大小:440.94KB
返回 下载 相关 举报
湖南工程学院C语言课程设计报告库存管理系统学生成.docx_第1页
第1页 / 共39页
湖南工程学院C语言课程设计报告库存管理系统学生成.docx_第2页
第2页 / 共39页
湖南工程学院C语言课程设计报告库存管理系统学生成.docx_第3页
第3页 / 共39页
湖南工程学院C语言课程设计报告库存管理系统学生成.docx_第4页
第4页 / 共39页
湖南工程学院C语言课程设计报告库存管理系统学生成.docx_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《湖南工程学院C语言课程设计报告库存管理系统学生成.docx》由会员分享,可在线阅读,更多相关《湖南工程学院C语言课程设计报告库存管理系统学生成.docx(39页珍藏版)》请在三一办公上搜索。

1、一、设计内容与设计要求1设计内容:数据库管理系统设计涉及的知识点:掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握并熟练运用库函数的应用。掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。题目具体要求:数据库管理系统设计 题目:库存信息管理系统从文件读取数据,提供新增、删除、修改和显示等功

2、能,并将修改后的数据写入一个新的文件。库存表单如下:编号: int 4bytes库存物品名称: char 20bytes库存物品数量: int 2bytes库存物品单价: int 4bytes库存物品总额: int 4bytes系统功能模块如下:(1) 建立库存表单;(2) 菜单实现以下功能:计算库存物品总额;显示库存表单信息;新增一个库存表单;库存物品出库(领出物品)(按库存物品编号);查询一个库存物品状态(按库存物品编号)。将修改后的库存物品表单存于一个新文件中。2设计要求:1) 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;2) 要求学生必须按照课程设计报告的完整格

3、式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;3) 设计报告的完整格式应包括以下部分的内容: 设计总体思路; 程序及各个模块说明; 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于400字)。4) 上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。5) 总评成绩由三部分组成:报告占20%,平时占20%,课程设计题目各占30%。二、进度安排星 期 1 2 节3 4 节5 6 节7 8 节晚上17周星期一布置任务,题目讲解17周星期四上机编程17周星期六上机编程18周星期三上机编程19周星期四上机编程、答辩目 录一、课题的主要

4、功能3二、课题的功能模块的划分5I文件读取模块6II显示模块6III求和模块6IV追加模块6V查询模块6VI修改模块6VII排序模块6VIII删除模块6IX文件存储模块7X退出功能7三、主要功能的实现7I文件读取模块7II显示模块8III求和模块8IV追加模块10V查询模块11VI修改模块12VII排序模块13VIII删除模块14IX文件存储模块15四、程序调试16I文件读取17II显示18III求和19IV追加20V查询21VI修改23VII排序24VIII删除25IX文件存储27X退出28五、总结29六、附件30一、课题的主要功能总体功能设计:库存信息管理系统的每个表单存放了库存物品的编号

5、、库存物品的名称、库存物品的数量、库存物品的单价、库存物品的总额的数据库。每个表单都信息定义在一个结构体变量中。其结构如下:库存物品的编号库存物品的名称库存物品的数量库存物品的单价库存物品的总额nonamenumpricesumstruct Stoint no; char name20; int num; int price; int sum;系统通过文件读取模块、显示模块、求和模块、追加模块、查询模块、修改模块、排序模块、删除模块、存储模块来实现库存信息管理系统的文件读取功能、显示功能、求和功能、追加功能、查询功能、排序功能、删除功能、存储功能。主函数采用菜单模式便于用户操作,而各个功能的调

6、用通过主函数中的switch语句来实现。switch(choice) case 1:Read();break; 读取程序 case 2:Disp();break; 显示模块 case 3:Count();break; 求和模块 case 4:Append();break; 追加模块 case 5:Query();break; 查询模块 case 6:Modify();break; 修改模块 case 7:Sort();break; 排序模块case 8:Delete();break; 删除模块case 9:Save();break;存储模块 case 0:exit(0);退出 二、课题的功能模

7、块的划分主函数:I文件读取模块通过设计一个模块,来实现库存信息的文件读取,免去用户重复输入数据的工作。II显示模块通过设计一个模块,来实现库存信息的显示。以便于浏览库存的信息。III求和模块通过设计一个模块,来实现库存总额计算。IV追加模块通过设计一个模块,当要加入新的表单的信息的时候,来实现新库存表单信息的加入。V查询模块通过设计一个模块,这个模块可以按库存表单的编号来查询该表单所有的信息。并且当成功查询到表单信息时,提示用户是否对该表单信息进行修改的功能;VI修改模块通过设计一个模块,当某库存表单的信息发生变化的时候,可以通过修改模块来进行修改。当系统运行修改模块时,系统自动调用排序和显示

8、模块将所有库存表单按库存编号排好顺序显示出来。使用户十分方便的找到要修改的数据。VII排序模块通过设计一个模块,来实现数据库的信息按库存表单编号的升序排列。并显示所有信息,使浏览者一目了然。VIII删除模块通过设计一个模块,当输入一个库存表单的编号时候,可以通过这个模块,将输入表单编号的所有信息从数据库中删除出去。以后,这个库存表单的信息将不再会出现再数据库中。IX文件存储模块通过设计一个模块,将编辑好的库存表单信息存储到新文件中。X退出功能该功能直接在菜单switch语句中实现。用户随时可以再菜单提示下选择此项功能退出系统。三、主要功能的实现I文件读取模块设置一个文件指针fp(如fp=fop

9、en(d:x.txt,r)), fp是可找到存放库存文件信息的结构变量,然后通过fp提供的信息找到该文件,实施对文件的读取操作。在读取文件时,判断文件是否成功打开(fp=NULL?),当条件成立提示文件读取失败,结束该模块的运行,返回主菜单;否则进行文件读取,这里用一个while循环语句实现,一直读取至文件末尾,文件读取完毕后,提示文件读取成功,并关闭文件,结束该模块的运行,返回主菜单。流程图:II显示模块用一个for循环语句实现对每个表单的输出,并加上相应的格式输出做为边框,美化输出界面。III求和模块使用for循环语句来实现库存总额计算,si.sum=si.num*si.price。并定义

10、一个total整型变量进行所有表单sum域的累加。total的累加结果就是所有库存总额。并加上一些格式输出美化输出界面。流程图:IV追加模块首先提示用户输入要追加表单的编号,再将输入的编号进行数据对比查询数据库中是否已存在该编号,若已经存在就提示错误信息,显示下一级菜单(是否继续追加)这些使用goto语句实现;否则就直接输入追加表单的相关信息。V查询模块通过设计一个模块,这个模块可以按库存表单的编号来查询该表单所有的信息。并且当成功查询到表单信息时,提示用户是否对该表单信息进行修改的功能;流程图:VI修改模块当系统运行修改模块时,系统自动调用排序和显示模块将所有库存表单按库存编号排好顺序显示出

11、来。使用户十分方便的找到要修改的数据。然后提示用户输入将要修改的库存编号,判断该编号在数据库中是否存在,若不存在继续输入表单的其他详细信息;否则提示输入有误,出现二级菜单,选择是否重新输入库存编号。流程图:VII排序模块程序运用冒泡排序方法(从第一个数开始依次对相邻两数进行比较,如次序对则不进行任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍后就可以完成排序。)对所有库存表单编号进行升序排列,并通过调用Disp函数输出排序后的数据。流程图:VIII删除模块流程图:IX文件存储模块通过设计一个模块,将

12、编辑好的库存表单信息存储到新文件中。流程图:四、程序调试进入系统I文件读取主菜单选择1: 如果数据文件存在时,则显示:否则显示:II显示主菜单选择2:III求和主菜单选择3:IV追加主菜单选择4:系统会提示用户输入将要追加的库存编号;如果输入的编号在数据库中已经存在,则会出现下一级菜单(下图1); 图1(选择1,重新进入追加模块;选择0,则回到主菜单;若用户输入的不是0或1, 则会不断提示该级菜单)如果没有相同的编号则出现提示用户输入库存详细信息(下图2);图2V查询主菜单选择5:系统提示用户输入要查找的编号:当成功查找到数据,出现二级菜单,用户可以选择是否进行修改。(选择1,修改库存详细内容

13、;选择2,回到主菜单。)如输入:5(下图1所示);图1如果输入的是库存中不存在的编号 如:18 则会出现(下图2所示)图2VI修改主菜单选择6:首先将库存的所有表单有序输出(便于找到数据修改);提示用户输入要修改数据的表单:当输入的数据编号是库存中不存在的编号,会提示错误,并出现二级菜单(选择1,重新进入修改模块;选择0,则回到主菜单;若用户输入的不是0或1, 则会不断提示该级菜单)(如下图1);图1VII排序主菜单选择7:按编号升序排序方式输出库存表单:VIII删除主菜单选择8:首先将库存的所有表单有序输出(便于找到删除数据);提示用户输入要删除数据的表单编号:当成功删除数据时,提示删除成功

14、。出现二级菜单,用户可以选择是否继续删除。(选择1,程序重新回到删除模块;选择2,回到主菜单。)如输入:9(如下图1所示)图1当未找到删除数据时,提示错误信息。出现二级菜单,用户可以选择是否继续删除。(选择1,程序重新回到删除模块;选择2,回到主菜单。)如输入:144(如下图2所示)图2IX文件存储主菜单选择9:文件成功保存后:保存出现意外:X退出主菜单选择0:五、总结通过这周的课程设计,通过实践来理解和巩固理论知识,使我对C语言程序设计有了一个更加深入的认识,对于我来说,我感觉自己是很幸运的,看着周围的同学学习C语言的过程,初学者的他们,让我回想起我刚刚学习PASCAL语言的经历。想起自己那

15、时,因为对计算机的兴趣,一无所知自己就去书城买了一本编程书看了看,那时刚看还是很有韵味,看着看着,一方面很多知识都不是高中所涉及的,另外一个最重要的方面就是自己没有电脑,缺少实践的过程。其实C语言和PASCAL语言这两种语言语法有点点不同而已。所以我对自己的评价就是进入大学学习C语言之前,我算得上是懂得点点皮毛的。 从刚开始的初略了解到有了比较深入的认识,能够比较灵活的运用。C语言是一门比较灵活、有趣而且实践性非常强的课程,单从理论课上是难以领略到它的精髓,我们只有从它的实践运用中,才能体会到了学习C语言的乐趣和好处,才能体会到了学习计算机的乐趣。在学习的过程中问题是常常有的,这些我都不畏惧,

16、重要的是我学会了分析问题,解决问题这才是我最大的收获,我也渐渐喜欢这种感觉,喜欢这种处理问题的感觉。C语言的学习更是为我们以后学习的微机原理以及单片机原理奠定了基础。我们的专业是测控技术,主要是跟电子仪器产品打交道,后面用到C语言的地方还有许多,所以说,学好C语言,为我们以后专业知识的学习有很大好处。在学习C语言中更使我体会到了学习计算机技术的乐趣,我将更加努力多学,学好计算机技术。六、附件源代码:#include stdio.h#include string.h#include math.h#include stdlib.hint size=0;/*全局变量*/struct Stoint n

17、o; char name20; int num; int price; int sum;struct Sto s100;void Read() int i=0; FILE *fp; fp=fopen(d:x.txt,r); if(fp=NULL) printf(an); printf(tt#n); printf(tt# #n); printf(tt# 文件读取失败! #n); printf(tt# #n); printf(tt#nnnn); else printf(tt#n); printf(tt# #n); printf(tt# 文件读取成功! #n); printf(tt# #n); pr

18、intf(tt#n); while( fscanf(fp,%dn%sn%dn%dn,&si.no,si.name,&si.num,&si.price)!=EOF) i+; fclose(fp); size=i; /*文件读取数据*/void Disp()int i; printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * *n); printf( * 编号 名称 数量 价格 总额 *n); for(i=0;isize;i+)printf( * %-12d%-

19、20s%-12d%-12d%-12d*n,si.no,si.name,si.num,si.price,si.sum); printf( * *n); printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n);/*显示*/void Count()int i,total=0;for(i=0;isize;i+)si.sum=si.num*si.price; total+=si.sum; Disp();printf( * 表单库存总额:%-22d *n,total);printf( * *

20、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *nnnn);/*计算库存物品总额*/void Sort()int i,j; struct Sto t; for(i=0;isize;i+) for(j=i;jsj.no)t=si;si=sj;sj=t; printf(按编号排序的表单:n); Disp(); /*排序(采用的是冒泡排序)*/void Append()int i, no,flag=0,c;/flag用于标志是否添加相同了的编号 A1: printf(新增编号:); scanf(%d,&n

21、o); for(i=0;isize;i+) if(no=si.no) flag=1; break; ;if(flag=0)/没有相同的编号,直接修改 ssize.no=no; printf(请输入名称:); scanf(%s,ssize.name); printf(请输入数量和价格:); scanf(%d%d,&ssize.num,&ssize.price); si.sum=ssize.num*ssize.price; size+;else/有相同的编号,发出警报,提示错误,重新输入修改的编号 printf(an); printf(tt#n); printf(tt# #n); printf(t

22、t# 您输入的数据编号已存在,请重新输入编号:#n); printf(tt# #n); printf(tt#nnnn);flag=0;A2: printf(tt#n); printf(tt# #n); printf(tt# 是否继续追加其它库存?(1.继续 0.退出) #n); printf(tt# #n); printf(tt#nnnn); scanf(%d,&c); if(c=1)goto A1;else if(c=0) ; else goto A2; /*新增库存表单*/void Modify()int no,c,flag=0,i; /flag 找到修改的数据标志。 M1:printf(

23、已有的表单:n); Sort();printf(nn);/给用户显示已经有了的排序数据,便于找到用户要修改的表单。 printf(tt#n); printf(tt# #n); printf(tt# 请输入您要修改的数据的编号 #n); printf(tt# #n); printf(tt#nnnn);scanf(%d,&no);for(i=0;isize;i+) if(no=si.no)/当找到数据 printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 这

24、是 要 修 改 编 号 的 内 容 *n); printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * *n); printf( * 编号 名称 数量 价格 总额 *n); printf( * %-12d%-20s%-12d%-12d%-12d*n,si.no,si.name,si.num,si.price,si.sum); printf( * *n); printf( * * * * * * * * * * * * * * * * * * * * * * *

25、 * * * * * * * * * * * * * * *nnnn); printf(请输入新的名称:); scanf(%s,si.name); printf(请输入新的数量和价格:); scanf(%d%d,&si.num,&si.price); si.sum=si.num*si.price; flag=1; break; ; if(flag=0)/当没有找到数据,发出警报,提示。 printf(an); printf(tt#n); printf(tt# #n); printf(tt# 对不起!没找到要修改的数据 #n); printf(tt# #n); printf(tt#nnnn);M

26、2: printf(tt#n); printf(tt# #n); printf(tt# 是否修改其他编号?(1.修改 0.不修改) #n); printf(tt# #n); printf(tt#nnnn); flag=0;scanf(%d,&c);if(c=1)goto M1;else if(c=0) ; else goto M2; /*修改信息*/void Query()int i,c,no,flag=0;/flag数据查询结果的标志 printf(tt#n);printf(tt# #n);printf(tt# 请输入您要查询的数据的编号: #n);printf(tt# #n);printf

27、(tt#nnnn); scanf(%d,&no); for(i=0;isize;i+)if(no=si.no) printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 成 功 找 到 数 据 ! *n); printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * *n); printf( * 编号 名称 数量 价格 总额 *

28、n); printf( * %-12d%-20s%-12d%-12d%-12d*n,si.no,si.name,si.num,si.price,si.sum); printf( * *n); printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *nnnn);Q1: printf(tt#n); printf(tt# #n); printf(tt# 是否对其修改?(1.修改 0.不修改) #n); printf(tt# #n); printf(tt#nnnn); scanf(%d,&c)

29、; if(c=1) printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * 这 是 要 修 改 编 号 的 内 容 *n); printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf( * *n); printf( * 编号 名称 数量 价格 总额 *n); printf( * %-12d%-20s%-12d%-12d%-12d*

30、n,si.no,si.name,si.num,si.price,si.sum); printf( * *n); printf( * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *nnnn); printf(请输入新的名称:); scanf(%s,si.name); printf(请输入新的数量和价格:); scanf(%d%d,&si.num,&si.price); si.sum=si.num*si.price; else if(c=0) ; else goto Q1; flag=1; break; if(flag=0)printf(an); printf(tt#n); printf(tt# #n); printf(tt# 对不起!没找到数据! #n); printf(tt# #n); printf(tt#nnnn);/*查询信息*/void Delete() int flag=0,no,i,c,j;/flag 找到删除的数据标志。D1: printf(tt已有的表单:n); Sort();/给用户显示已经有了的排序数据,便于找到用户要删除的表单。 printf(nn); printf(tt#

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号