c语言课程设计之实验设备管理系统.doc
《c语言课程设计之实验设备管理系统.doc》由会员分享,可在线阅读,更多相关《c语言课程设计之实验设备管理系统.doc(63页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec语言课程设计之实验设备管理系统c语言课程设计之实验设备管理系统目录目录.-1 -一设计目的.-2 -二课程设计的内容.-2 -三课程设计的要求与数据.-2 -四课程设计应完成的工作.-2 -五总体设计(包含几大功能模块流程图).-2 -六详细设计(各功能模块的具体实现算法流程图).-3 -七调试分析(包含各模块的测试用例,及测试结果).-8-八总结.-17 -九成员
2、设计内容.-17-十参考资料.-17 -一:设计目的练习与巩固C语言程序设计)理论知识,通过实践检验和提高实际能力,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。二:课程设计内容实验室设备管理系统三:课程设计要求实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:1 完成对设备信息的录入函数2 完成修改某个设备信息的函数3 根据给定信息对设备进行分类统计4 设备的破损耗费和遗损处理(删除某个指定设备)5 设备的查询四:课程设计应完成的工作(1)编写算
3、法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写课程设计报告。内容包括: 1) 封面扉页 2) 设计任务书 3) 目录 4) 总体设计方案(包括流程图) 5) 使用说明及运行实例(包括界面) 6) 成员设计内容简介 7) 项目源程序代码(注意注释的使用) 8) 指导教师评语 五 总体设计(包含几大功能模块)1、 功能1:打开一个设备信息文件,并读取2、功能2:添加新的设备内容并保存3、功能3: 统计设备数量4、功能4:查找符合条件的设备及其数量并将其显示出来5、功能5:对设备信息按条件进行分类排序6、功能6:修改设备信息7、功能7:删除某条设备记录8、功能8:显示内容六:详细设计开
4、始菜单添加修改查看删除显示分类查找结束读取文件关闭文件图1 系统框图图2 菜单图思路:使用文件的方式读取和写入设备信息,文件保存在一个固定路径,并以固定的名称进行读取和修改,因此对文件名和路径进行宏定义。设备内容根据需求定义了结构体如下:struct instrumentchar id10,kind10,name10,price10,in_date10,reject10,out_date10;结构体内元素分别为编号、种类、名称、价格、购入日期、是否报废、报废期限等,为了方便操作均以字符串的形式进行保存。以下为程序重要功能图:(1) 对文件的操作FILE *fp; fp=fopen(filena
5、me,a); a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾 ,这种用法是为了 主要是用于添加新的信息在文件末端,用在添加设备函数内。fp=fopen(filename,r);以只读方式打开,用在需要读取设备信息的函数的内。 fp=fopen(filename,w);以只写形式打开,用于需要改动信息并保存的函数文件读取修改写入关闭图3 文件操作流程图以上是对文件的读取,读取完成后便可以进行内容的操作。(2) 添加函数additem() fp=fopen(filename,a); /a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文
6、件存在,写入的数据会被加到文件尾. 文件读取添加在文件尾部写入关闭继续YN图4 添加操作流程图。(3) 统计文件内信息量load()该函数用于统计文件内设备数量以便于读取,当文件内设备读取到空行(检测到EOF)返回行数。流程图:读取检测输出EOF?nY+1图5 文件尾检测流程图 (4)查找check()在读取出文件内容后比对条件进行查找,如果符合条件输出,由于内容均以字符串的方式保存,因此便于查找。文件读取输入关闭相同YNEOF?YN图6 查找操作流程图(5)分类sort()按某种条目进行分类也是需要通过查找相同,但不同的是条目的具体内容是不确定的,只是把条目内容相同的部分进行排序使其归类在一
7、起,使用了冒泡排序法。由于是使用字符串,所以排序的依据是根据ASCII码顺序。文件读取显示与第i+1个交换,并令i=i+1第m个与第i个相同NY输入分类类型m+i=j;写入从第j个开始m=emdj=emd关闭NJ=i+1i=j=0;Y(6)修改modify()原理:在读取文件保存在内存后,按行选择修改某一行即修改结构体数组的某一元素,在将其写入到文件中。文件读取显示关闭继续NY输入行号条目修改写入图7 修改操作流程图(7)删除delect()读取文件内容,但读写时跳过需要删除的行不读,然后把读取出的内容重新写入文件文件读取显示关闭输入行号写入并跳过该行图8 删除操作流程图(8)显示数据函数sh
8、ow()文件读取显示关闭图9 显示操作流程图七:调试分析7.1源程序及注释以下为程序重要功能函数:(1)对文件的操作(使用文件流操作相关函数)FILE *fp; fp=fopen(filename,a); a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾 ,这种用法是为了 主要是用于添加新的信息在文件末端,用在添加设备函数内。fp=fopen(filename,r);以只读方式打开,用在需要读取设备信息的函数的内。 fp=fopen(filename,w);以只写形式打开,用于需要改动信息并保存的函数内。读取文件(部分程序)(对行数据部分使用可以
9、连续分割字符串strtok函数,还有字符串复制函数memccpy)读取文件用于显示和修改char mystring2100,*t=; i=load(filename);/读取文件数量if(i=-1|i=0)/如果文件打开失败或文件内没有内容 printf(cant open file or file has no data);return;for(n=0;n i;n+) fgets (mystring2,100,fp);/按行的方式一行行显示文件该程序段出现过的问题:由于统计上面统计文件行数的函数的问题导致漏读。以上程序段只是按行读取文件,并没有对没一行文件内容,如编号、种类等区分出来,上面适
10、用于单纯的显示设备信息(show()函数)。在要对文件信息进行改动的函数内,还需要把行内容按结构体内容进行读取,加上以下函数段,采用了字符函数对行内容进行分割和复制 即可。if(n!=0) memccpy(a,strtok(mystring2,t),;,10); memccpy(eupn.id,strtok(NULL,t),NULL,10); /将行内容以;分割,并把分割返回的值以10个字节形式返回 else memccpy(eupn.id,strtok(mystring2,t),;,10); memccpy(eupn.kind,strtok (NULL,t),NULL,10); memccp
11、y(eupn.name,strtok (NULL,t),NULL,10); memccpy(eupn.price,strtok (NULL,t),NULL,10); memccpy(eupn.in_date,strtok (NULL,t),NULL,10); memccpy(eupn.reject,strtok (NULL,t),NULL,10); memccpy(eupn.out_date,strtok (NULL,t),NULL,10); fclose(fp);以上是对文件的读取,读取完成后便可以进行内容的操作。问题:起初因为要求里没要求用文件方式保存所以没有用文件写了一个程序,但后来写了
12、1/3想了想应该不会那么简单就改用文件,结果浪费了很多时间。但用了文件的方式后发现有些函数写起来更加简单。例如在删除函数,如果不用文件而将数据保存在内存中时要删除就得对链表进行修改,而改用文件后只需要把跳过删除的数据把数据重新写入文件。此外,用了文件的方式后不用处理链表这样困难的结构。(2)添加函数additem()FILE *fp; /打开文件 fp=fopen(filename,a); /a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾 printf(请输入编号:); scanf(%s,into.id); printf(n); printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 实验 设备管理 系统
限制150内