




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SOUTH CENTRAL UNIVERSITY FOR NATIONALITIES C综合设计报告 设计题目: 电子元器件管理系统 学院:电子信息工程 专业:电气信息类 年级: 2012级 班级: 4 班 姓名: 杨赵南 学号:2012214462 姓名: 裴忠慧 学号:2012214447 指导老师: 田晓梅 2012年6月14日目录设计题目11. 引言12. 设计依据及框图 2.1设计平台2 2.2设计目的2 2.3设计思想2 2.4系统总体结构框图3 2.5数据结构设计53. 各模块功能实现 3.1 源文件定义6 3.2 系统中定义的函数列表6 3.3 封面7 3.4 主函数7 3.5 信息添加模块9 3.6 信息删除模块11 3.7 查找模块13 3.8 修改模块17 3.9 排序模块20 3.10显示模块24 3.11加载模块26 3.12保存模块28 3.13退出模块30 3.14统计模块324. 软件调试分析 4.1 在编程当中遇到的一些问题38 4.2 程序待完善之处38 5. 结语38 6.参考文献387.致谢39 39 / 43 电子元器件管理系统摘要: C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。 它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。具体应用比如硬件方面,单片机以及嵌入式系统都可以用C来开发。C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASEPLUS、DBASE都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,像PC-DOS、WORDSTAR等就是用这种方法编写的。本程序是一个完全基于C语言,利用链表,数组结构为用户提供元器件管理的系统。关键词: C语言、链表、结构体、元器件管理1. 引 言C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。C语言优点甚多:1、简洁紧凑、灵活方便;2、运算符丰富;3、数据类型丰富;4、表达方式灵活实用;5、允许直接访问物理地址,对硬件进行操作;6、生成目标代码质量高,程序执行效率高;7、可移植性好;8、表达力强.C语言是一门实践性很强的编程语言,我们通过理论课的学习,已经对其有了一定的理解和掌握,并且能够编写一些简单的小程序,但是还是缺乏系统的应用实践。而这次课程设计,正好给了我们这样一个机会,即:1通过本环节的充分编程实践和实际应用,进一步熟悉和巩固C语言语法知识和程序设计的基本方法;2利用适当形式的命题,了解结构化程序设计的方法,培养自顶而下、逐步细化的编程思维方式;3通过一定的文档要求,培养良好的程序设计风格,包括程序结构形式,行文格式和程序正文格式等。2 设计依据及框图2.1设计平台Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。既可以编辑C+程序,也可以编辑C程序。所以本设计以Microsoft visualC+6.0为开发平台设计基于DOS界面的电子元器件管理系统。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。本系统是以VC6.0为开发平台利用C语言设计的基于DOS界面的电子信息管理系统。2.2设计目的本系统为用户提供一个在Windows系统上运行的电子元器件管理平台。该平台为用户提供主要功能有:1. 通过键盘输入元器件的相关信息, 2.通过编号查找并删除相应元器件的信息,3.通过编号,类型,型号等查找相应元器件的信息,4.通过编号查找并选择修改某一项信息或全部信息,5.根据编号,类型,型号等的降序或升序排序,6.显示系统中的所有信息,7.通过给定文件的地址或名称加载元器件信息,8.根据编号,类型,型号等统计元器件的相关信息,9.保存系统中的系信息到指定的文件或地址,10.退出程序。2.3设计思想该程序在每一处需要容错的地方都添加了容错处理,包括添加主函数,添加,查找等模块。本程序的重点在程序的排序的统计模块,难点在统计模块,统计模块共调用了4个函数。系统采用结构化的程序设计方法进行,采用链表存储数据,采用C语言进行开发,程序的书写是锯齿状,各个函数分开存放。在基本功能的基础上添加了更多的元器件信息,如在添加和显示模块的元器件的购买日期,元器件的总价,元器件的状态(可用于表示缺货,过多等信息),在排序中添加降序或升序的可选排序方式,在修改函数中添加了修改单项信息和全部信息的功能,在统计模块中可以先显示所选类型的种类再根据选择的信息,显示相应的元器件信息,并统计所查找的元器件的总数目和总价格。且该系统在一些特殊的位置调用back()函数实现返回,要求只能输入B或b才能返回上一级菜单,进而避免无意的返回或退出的现象。2.4系统总体结构框图 该电子元器件管理系统提供元器件的添加,删除,查询,修改,排序, 显示,加载,统计,保存,退出等主要功能。系统总框架如图1所示,子系统框架如图2所示。 图1:元器件管理系统总框架 图2:元器件管理系统子模块框架2.5数据结构设计本系统采用链表储存数据,系统中共定义了两个结构体:struct produc和struct pro ;利用product 存储元器件的编号,类型,型号,数目,单价,总价,厂家,生产日期,购买日期,状态等信息,利用pro 暂时存储查询时输入的元器件相应信息,其中总价是根据 单价*数量 确定的不需要从键盘输入。具体结构如下:typedef struct product / 宏定义 链表 char num10; / num 表示 元器件的 编号 char type10; / type 表示 元器件的 类型 char model10; / model 表示 元器件的 型号 int sum; / sun 表示 元器件的 数目 整型 char pack10; / pack 表是 元器件的 封装 char factory10; / fantory 表示 元器件的 厂家 float price ; / price 表示 元器件的 单价 浮点型 float zprice; / zprice 表示 元器件的 总价 浮点型 char date10; / date 表示 元器件的 生产日期 char gdate10; / gdate 表示 元器件的 购买日期 char state10; / state 表示 元器件的 状态(缺货 。) struct product *next;PRODUCT; struct pro / 定义一个数组用于 比较和判断 (表示的内容与上面相同) char num10; char type10; char model10; int sum; char pack10; char factory10; float price; float zprice; char date10; char gdate10; char state10;3. 各模块功能实现3.1源文件定义为了实现个模块的功能,系统中定义了一下文件: header_.c 元器件信息头文件 huanying_.c 封面created_.c 添加模块 dele_.c 删除模块 find_.c 查找模块 modify_.c 修改模块 sort_.c 排序模块 back_.c 返回 copy_.c 复制 jianshao_.c 去重 main_.c 主函数 menu_.c 菜单模块print_.c 显示模块 printtf_bf.c 显示去重后的函数 quit_.c 退出模块 read_.c 加载模块 statistic_.c 统计模块 tongji_.c 显示统计信息模块 Write. 保存模块3.2系统中定义的函数列表为了实现函数的各项功能,在程序的设计中定义了相应的相关的函数,各个函数的原型如下:PRODUCT *creat(); / 添加函数PRODUCT *dele(); / 删除函数void find(PRODUCT *); / 查找函数void modify(PRODUCT *) ; / 修改函数PRODUCT * sort(PRODUCT *) ; / 排序函数PRODUCT * sort1(PRODUCT *,char ,char ); void print(); / 显示函数void write(PRODUCT *); / 保存函数PRODUCT *read(PRODUCT *); / 加载函数void statistic(PRODUCT *); / 统计函数void print_bf(PRODUCT *pjs,char choice_s) / 显示 统计后的。void tongji(PRODUCT *head,char choice_s)PRODUCT *copy(PRODUCT *head) / 复制函数 形参和返回值都是指针PRODUCT *jianshao(PRODUCT *head1,char n) / 删除“重复的”用于统计不同的种类int quit(); / 退出函数void back(); / 返回函数 3.3封面程序的封面用于介绍程序设计的基本信息,用于表明程序名,作者,时间等相关信息。界面如图3所示。 图3:元器件管理的封面3.4主函数 主函数main()利用多分支结构switch实现功能的选则,调用不同的函数实现不同的功能,包括信息的添加,删除,查找,修改,排序,显示,加载,统计,保存,退出等功能。在功能的选择上进行了容错处理,当输入没有的选项是会让用户重新输入。系统主界面如图4所示,主函数的流程图如图5所示。 图4:元器件管理系统的主菜单 图5:主函数流程图3.5信息添加模块 该信息的添加指的是从键盘添加,逐一的输入元器件的编号,类型,型号等信息。该添加模块考虑了各种添加情况,可以是最基本的没有信息直接添加,也可以是在加载完元器件信息之后的添加,加载模块和添加模块可以很好的兼容。在数目和单价上设置了容错处理,若输入的信息有误时,会让用户从新输入。从数据的源头提高了元器件信息的正确率。添加模块的界面如图6所示。流程图如图7所示。 图6:添加模块的界面 图7:添加模块的流程图3.6 信息删除模块 元器件的删除是通过输入编号查找相应的元器件来实现的,先显示元器件的信息,再询问用户是否确认删除该条信息,做相应处理后,再询问是否继续删除,是则重复之前的步骤,否则返回主菜单。删除函数的界面如图8所示,删除函数的流程图如图9所示。 (删除模块下)找到元器件的界面 (删除模块下)未能找到元器件的界面 图8:删除模块的界面 图9:删除模块的流程图3.7 查找模块 为了便于用户查找所需的信息,在查找模块中可以根据元器件的任意一个信息查找到所需的元器件信息,其中在数目,单价,总价,生产日期,购买日期五项中可以通过查询一个范围来获取所需的信息,增加了系统灵活性。其他的几项是通过精确查找确定的。查找模块的界面如图10。查找模块的流程图如图11.。(该模块的流程图与统计模块中的tongji ()函数相似,只是tongji()函数多加了数目和价格的统计,所以就没有再重复绘制了) 图10:查找模块的界面 图11:查找函数的流程图 3.8修改模块 由于用户在录入元器件信息时可能会输入错误,或者由于元器件信息的更改,市场行情的改变需要更改单价,封装等信息等原因增加了设置了修改模块,该模块通过输入元器件的编号查询并显示原来元器件的信息,再由用户判断是否是所需更改的信息,并询问是否更改,若不更改则询问是否修改另一条,如果修改则重复输入查找元器件编号的步骤,如果不修改则返回主菜单,若更改则显示修改子系统菜单,修改的方式可以单独修改该元器件信息的编号,类型,型号,数目,封装,厂家,单价,生产日期,购买日期,状态,或者选择修改该元器件的全部信息。修改完之后,显示更改后的元器件信息。这样的设计便于用户高效率,高正确率的管理和修改元器件信息。提高用户的体验。修改模块的界面如图12所示。修改模块的流程图如图13所示。 图12:修改函数的界面 图13:修改函数的流程图3.9 排序模块 排序模块的设计是为了便于用户查看电子元器件管理系统中的信息,可以以元器件的任何一条信息排序,且为了更好的使用排序,我们还在程序中设计了升序和降序两种排序方式,这样更佳利于用户查看相应的信息,如需查看最近购买的产品,只需通过以购买日期降序的排列方式便可快速获得,增加了系统排序的灵活性。排序模块的界面如图14所示,排序模块的流程图如图15所示。 图14:排序模块的界面 图15:排序模块的流程图3.10显示模块 用于显示元器件管理系统所有元器件的信息,便于直观的了解元器件的信息。 在显示之前的排序是通过调用sort1()函数来实现的,以编号升序的方式排列。显示模块的界面如图16。排序模块的流程图如图17所示。 图16:显示模块的界面 图17:显示模块的流程图3.11加载模块 用于从文件中读取元器件的信息,可以快速的读取大量的元器件信息,而不是通过键盘逐一的输入元器件信息,这样便可高效的管理和利用元器件信息,也可实现与相同的电子元器件管理系统之间的信息交流。在信息的加载中增加了读取判断,正确则继续,错误则终止读取,返回主菜单。加载模块的界面如图18。加载模块的流程图如图19。 图18:加载模块的界面 图19;加载模块的的流程图3.12 保存模块 该模块的功能是将元器件管理系统中的信息保存到文件中,增加了信息的抑制性,可重复利用性,该功能与加载功能两者的使用是相同的道理,两者的配合使用便可实现,同一种系统,不同用户之间的信息交流。让该系统有更广泛的使用空间。保存模块的界面如图20所示。保存模块的流程图如图21所示。 图 20.保存函数的界面 图21:保存函数的流程图3.13 退出模块 通过询问是否退出避免了误退的情况。 退出模块的界面如图22,退出模块的流程图如图23。 图22:.退出模块的界面 图23:退出模块的流程图3.14 统计模块 统计模块的前半部分的思想与查找模块的相似,最核心的功能是不相同的。该模块和查找模块一样可根据元器件的任意相关信息统计。如果统计的是数量(4)则显示出该元器件管理系统中的所有种类的数量,如果统计的是价格(7)则显示该元器件管理系统中所有种类的元器件的总价值。在选择相应的统计方式时调用复制函数copy()重新创建一个与原来一模一样的链表,再调用去重函数jianshao()删除所查询方式中重复的信息,之后利用显示函数print_bf()显示去重后的种类。最后利用tongji()函数,实现所统计函数的信息的显示,并统计显示元器件的总数量和总价格。这样的统计方式,便于用户统计所需元器件的总剩余量和总价值,有利用用户对自己的元器件和财产的了解。统计模块的界面如图24所示,统计模块的流程图如图25所示。 选项4 统计系统中所有元器件的总数目 选项7统计系统中所有元器件的总价格 图24:统计模块的界面 图26:统计模块的流程图4 软件调试分析4.1 在编程当中遇到的一些问题: 1.出现的一些警告或者错误是英文看不懂,解决方法:下一个有道词典随用随翻译。 2.添加函数中,录入元器件数目时一步小心录入了字符就会在显示是出现无关的数字,解决方法:在录入时增加一个do while循环语句,但录入的信息不能正确读取是要求用户重新输入。这种容错的想法在之后的每一处可能出现错误的地方都应用了。使得程序的容错能力全面提升。 3.在元器件信息的读取是总是出现多读一条无用信息的显现,我们在这个问题上纠结了很久。尝试了个中方法均不行,解决方法:通过咨询老师,老师在其中添加了一判断是否正确读去的判断,就解决了该问题。同时也学的了scanf ,当它正确读取几个数据时就返回几。 4. 经常会出现的一个错误是“结果不能被预测”这样的错误,通常是有与缺少了一个花括号引起的,解决方法:认真的查看程序,将程序排成锯齿状,养成良好的书写习惯。4.2程序待完善之处: 1.该系统是一个开放的系统,任何人都可以使用,而现实生活中往往不是这样的,所以我们可在系统开始之前,加入用户的登陆,和用户注册删除等基本功能,这样更有利于对元器件信息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三明历届中考试卷及答案
- 购销合同模板(3篇)
- 小区培训班安全课件
- 2025年银行岗位练习题完整答案详解
- 2025年学前心理中专试题及答案
- 广西高考真题及答案
- 耐火炉窑装窑工节假日后复工安全考核试卷含答案
- 周期性缺钾血症预防与治疗
- 尸体护理的操作
- 2025煤矿供销合同
- GB/T 31155-2014太阳能资源等级总辐射
- 工程施工停工令模板
- 2023年蒸汽管路设计
- 耳部解剖及急慢性中耳炎课件
- 工程项目投资与融资讲义 课件
- 食品质量安全抽检数据分析模型优质资料
- 承插型盘扣式钢管进场验收记录表
- 军事训练教学法模板课件
- 物流设施与设备ppt课件(完整版)
- 交通运输安全管理整套教学课件
- 安检员X射线机培训-共86页课件
评论
0/150
提交评论