电子元器件管理系统C综合设计报告.docx
《电子元器件管理系统C综合设计报告.docx》由会员分享,可在线阅读,更多相关《电子元器件管理系统C综合设计报告.docx(41页珍藏版)》请在冰豆网上搜索。
电子元器件管理系统C综合设计报告
SOUTHCENTRALUNIVERSITYFORNATIONALITIES
C综合设计报告
设计题目:
电子元器件管理系统
学院:
电子信息工程专业:
电气信息类
年级:
2012级班级:
4班
##:
杨赵南学号:
2012214462
##:
裴忠慧学号:
2012214447
指导教师:
田晓梅
2012年6月14日
设计题目·······································································1
1.引言·········································································1
2.设计依据与框图
2.1设计平台································································2
2.2设计目的································································2
2.3设计思想································································2
2.4系统总体结构框图························································3
2.5数据结构设计···························································5
3.各模块功能实现
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统计模块······························································32
4.软件调试分析
4.1在编程当中遇到的一些问题···············································38
4.2程序待完善之处·························································38
5.结语········································································38
6.参考文献····································································38
7.致谢········································································39
电子元器件管理系统
摘 要 :
C语言是一种计算机程序设计语言。
它既有高级语言的特点,又具有汇编语言的特点。
它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不
依赖计算机硬件的应用程序。
因此,它的应用X围广泛。
C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。
具体应用比如硬件方面,单片机以与嵌入式系统都可以用C来开发。
C 语言开展如此迅速, 而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。
用C语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。
本程序是一个完全基于C语言,利用链表,数组结构为用户提供元器件管理的系统。
关键词:
C语言、链表、结构体、元器件管理
1.引言
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小与微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用X围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以与嵌入式系统开发。
C语言优点甚多:
1、简洁紧凑、灵活方便;
2、运算符丰富;
3、数据类型丰富;
4、表达方式灵活实用;
5、允许直接访问物理地址,对硬件进展操作;
6、生成目标代码质量高,程序执行效率高;
7、可移植性好;
8、表达力强.
C语言是一门实践性很强的编程语言,我们通过理论课的学习,已经对其有了一定的理解和掌握,并且能够编写一些简单的小程序,但是还是缺乏系统的应用实践。
而这次课程设计,正好给了我们这样一个机会,即:
1.通过本环节的充分编程实践和实际应用,进一步熟悉和巩固C语言语法知识和程序设计的根本方法;
2.利用适当形式的命题,了解结构化程序设计的方法,培养自顶而下、逐步细化的编程思维方式;
3.通过一定的文档要求,培养良好的程序设计风格,包括程序结构形式,行文格式和程序正文格式等。
2设计依据与框图
2.1设计平台
VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进展软件开发的首选工具。
既可以编辑C++程序,也可以编辑C程序。
所以本设计以MicrosoftvisualC++6.0为开发平台设计基于DOS界面的电子元器件管理系统。
VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境〔integrateddevelopmentenvironment,IDE〕。
VisualC++6.0由许多组件组成,包括编辑器、调试器以与程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
本系统是以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数据结构设计
本系统采用链表储存数据,系统中共定义了两个结构体:
structproduc和structpro;利用product存储元器件的编号,类型,型号,数目,单价,总价,厂家,生产日期,购置日期,状态等信息,利用pro暂时存储查询时输入的元器件相应信息,其中总价是根据单价*数量确定的不需要从键盘输入。
具体结构如下:
typedefstructproduct//宏定义链表
{
charnum[10];//num表示元器件的编号
chartype[10];//type表示元器件的类型
charmodel[10];//model表示元器件的型号
intsum;//sun表示元器件的数目整型
charpack[10];//pack表是元器件的封装
charfactory[10];//fantory表示元器件的厂家
floatprice;//price表示元器件的单价浮点型
floatzprice;//zprice表示元器件的总价浮点型
chardate[10];//date表示元器件的生产日期
chargdate[10];//gdate表示元器件的购置日期
charstate[10];//state表示元器件的状态〔缺货。
。
〕
structproduct*next;
}PRODUCT;
structpro//定义一个数组用于比拟和判断(表示的内容与上面一样)
{
charnum[10];
chartype[10];
charmodel[10];
intsum;
charpack[10];
charfactory[10];
floatprice;
floatzprice;
chardate[10];
chargdate[10];
charstate[10];
};
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();//删除函数
voidfind(PRODUCT*);//查找函数
voidmodify(PRODUCT*);//修改函数
PRODUCT*sort(PRODUCT*);//排序函数
PRODUCT*sort1(PRODUCT*,char,char);
voidprint();//显示函数
voidwrite(PRODUCT*);//保存函数
PRODUCT*read(PRODUCT*);//加载函数
voidstatistic(PRODUCT*);//统计函数
voidprint_bf(PRODUCT*pjs,charchoice_s)//显示统计后的。
。
。
voidtongji(PRODUCT*head,charchoice_s)
PRODUCT*copy(PRODUCT*head)//复制函数形参和返回值都是指针
PRODUCT*jianshao(PRODUCT*head1,charn)//删除“重复的〞用于统计不同的种类
intquit();//退出函数
voidback();//返回函数
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查找模块
为了便于用户查找所需的信息,在查找模块中可以根据元器件的任意一个信息查找到所需的元器件信息,其中在数目,单价,总价,生产日期,购置日期五项中可以通过查询一个X围来获取所需的信息,增加了系统灵活性。
其他的几项是通过准确查找确定的。
查找模块的界面如图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.添加函数中,录入元器件数目时一步小心录入了字符就会在显示是出现无关的数字,解决方法:
在录入时增加一个dowhile循环语句,但录入的信息不能正确读取是要求用户重新输入。
这种容错的想法在之后的每一处可能出现错误的地方都应用了。
使得程序的容错能力全面提升。
3.在元器件信息的读取是总是出现多读一条无用信息的显现,我们在这个问题上纠结了很久。
尝试了个中方法均不行,解决方法:
通过咨询教师,教师在其中添加了一判断是否正确读去的判断,就解决了该问题。
同时也学的了scanf,当它正确读取几个数据时就返回几。
4.经常会出现的一个错误是“结果不能被预测〞这样的错误,通常是有与缺少了一个花括号引起的,解决方法:
认真的查看程序,将程序排成锯齿状,养成良好的书写习惯。
4.2程序待完善之处:
1.该系统是一个开放的系统,任何人都可以使用,而现实生活中往往不是这样的,所以我们可在系统开始之前,参加用户的登陆,和用户注册删除等根本功能,这样更有利于对元器件信息的管理。
2.该界面的显示太过于原始,希望在以后的学习中能学的其他的工具,将界面美化,使得系统更加的美观,提升用户的体验,增加系统的美观性。
3.安全性,元器件信息的保存未做加密处理,使得安全性降低了。
4.在编号的输入上没有进展重复判断,添加了之后可是的程序更加严谨。
但重复判断的使用也是有弊端的,在从键盘输入是可以使用,假设是使用加载来录入信息那么,很难判断是否应该读取信息。
5.结语
该程序的最初设计是由数组结构体制作的,后来感觉数组的大小是固定的,这样的系统不能为用户提供一个可靠的平台管理元器件的信息,更不能表达资源的合理利用这一特点,所以最终改成了链表来制作,使用数组时循环语句多是利用for循环的,而改为链表那么是利用while循环更加便利,该系统完全是实现了程序设计的根本要求,元器件信息的添加,查找,删除,修改,查找,排序,显示,统计,加载,保存,退出。
且在每一个模块中都进展了相应的个性化处理,并不是单一的使用一次,或这说是单一的修改,排序,统计......后直接退出子系统。
通过该这次程序的设计让我们学会了,如何