c语言知识实验设备管理计划系统.doc
/ 课程设计说明书学 院、系:专 业:学 生 姓 名: 学 号:设 计 题 目:实验设备管理系统 起 迄 日 期: 指 导 教 师:日期: 2017年5月12日1. 设计目的 练习与巩固C语言程序设计理论知识,通过实践检验和提高实际能力,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写调试应用程序和进行其它相关设计的技能。2.任务概述要求实验设备管理系统实现对实验设备基本信息(设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期等)的管理。系统应给用户提供一个操作简便的人机界面,使用户可以通过菜单的方式来方便的调用提供的功能。主要功能(1) 完成对设备信息的录入函数(2) 完成修改某个设备信息的函数(3) 根据给定信息对设备进行分类统计(4) 设备的破损耗费和遗损处理(5) 设备的查询3 模块划分功能1:添加新的设备信息功能2: 统计设备数量功能3:查找符合条件的设备及其数量功能4:对设备信息按条件进行分类排序功能5:修改设备信息功能6:删除某条设备记录 实验设备管理系统退出系统统计设备信息显示设备信息删除设备信息查询设备信息修改设备信息添加设备信息 图3.1功能图图3.2 菜单图4 主要函数说明及其N-S 开始 char flag20 printf(“请输入你的设备信息”); printf(“设备编号”); printf(“设备名字”); printf(“设备价格”); printf(“设备购买日期”); printf(“设备状态”); printf(“设备报废日期”); strcmp(flag,"y")=0|strcmp(flag,"Y")=0录入设备信息的N-S图,如下图所示 (1)查找search()int I; char a20,ch10;printf(“nenter you want look name:”); for(i=0;i<count;i+) if(strcmp(devi.devname,a)=0) y n printf(“ ”); 图4.4 查找操作N-S图(2)分类sort()int i,chi,sum=0,wei=0,da=0,sao=0;printf(“输入你想要统计的设备信息”);scanf("%d",&chi); if(chi=1)y nfor(i=0;i<count;i+) if(chi=2) if(devi.devstate y n=0) Y n for(i=0;i<count;i+) printf(“你n”); if(devi.devsort printf(“报 =1)废的机器 y n 数目为%d wei+ if(devi.devsort=2)n”,sum); y n if(devi.devsort=3) y n printf(“ ”); printf(“ ”);按某种条目进行分类也是需要通过查找相同,但不同的是条目的具体内容是不确定的,只是把条目内容相同的部分进行排序使其归类在一起,使用了冒泡排序法。由于是使用字符串,所以排序的依据是根据ASCII码顺序。 图4.5 分类N-S图 图4.5 分类N-S图(3)删除delect()读取文件内容,但读写时跳过需要删除的行不读,然后把读取出的内容重新写入文件int i,j; char c20;printf("nenter you want delete name :n");for(i=0;i<count;i+) if(strcmp(c,devi.devname)=0)Y Nfor(j=i;j<count-1;j+) devj=devj+1; printf("tttyou had delete %sn",c); count-;output(); 图4.6 删除N-S图5 程序运行数据及其结果(1) 录入input() 图5.1 显示内容界面图(2) 修改change()图5.2 修改界面图修改后显示图5.3 修改结果(3)删除delect()图5.4 删除界面删除后图5.5 删除结果(4) 添加 图5.6 添加前 图5.7 添加后(5)查找check()图5.8 界面图5.9 查找结果(6)分类sort()图5.10 分类界面图5.11 分类结果 6 课程设计心得 这次课程设计遇到了很多问题,有的是文档格式的设置不符合要求,有的是编译的代码运行不出来,于是又翻出了上学期的C语言书籍温习有关知识。划分功能模块时,对于实验设备方面的知识欠缺,于是在网上查找了相关知识,结合网上热心网友提供的资源。完成了这一步。一个功能对应一个函数,有些函数比较复杂,请教了其他同学并结合网上的例子完成了编写。第一次修改说明书之前,对于N-S图的画法不是太熟悉,于是用了流程图,后来班长多次强调才改成了N-S图,看了看班长在群里发的例子,又结合书上的说明,完成了N-S图。文档格式的设置主要通过网上的教程来完成。对于一名新手来说,网上做图并不是一件容易的事,刚开始不是错位就是字体太大,有时候修改了文本图又飞到了下一页。一次次的修改后总算积攒了一些经验,后来画多了总算能够比较快而准确的画出来。 C语言是一门实践性较强的课程,只学会书本上的知识是远远不够的,还需要实训来巩固知识并让我们学会运用。C语言也是软件工程后期学习的基础语言,因此必须学好C语言。一名优秀的程序员,不仅要掌握编程方面的知识,还应该学会怎样使用办公软件。附录:#include "stdio.h"#include "stdlib.h"#include "cstring"#define COUNT 30void start(); /函数声明void input();void change();void sort();void dele();void output();void search();struct deviceInforchar devno30; int devsort; /1 代表微机 2代表打印机 3代表扫描机char devname30;int devprice;char devbuydate30;int devstate;char devdonedate30;devCOUNT;int count=0; main() /主函数 while(1)start(); void start() /启动菜单 int chi; printf(" 实验设备管理系统n"); printf(" |-|n"); printf(" | * |n"); printf(" | 1.设备信息的录入: |n"); printf(" | 2.设备信息的修改: |n"); printf(" | 3.设备信息的分类统计: |n"); printf(" | 4.删除某个设备: |n"); printf(" | 5.查找某个设备: |n"); printf(" | 6.退出系统: |n"); printf(" | * |n"); printf(" |-|n"); printf(" 输入你的选择: "); scanf("%d",&chi); /printf("n"); if(chi=1) input(); else if(chi=2) change(); else if(chi=3) sort(); else if(chi=4) dele(); else if(chi=5) search(); else if(chi=6) printf("你已经退出设备管理系统!n"); exit(0); else printf(" You Enter The Choice Is Not valid ! n"); void input() /数据录入 char flag20; do printf("请输入你的设备信息:n"); printf("设备编号:"); scanf("%s",devcount.devno); printf("设备种类(1 代表微机 2代表打印机 3代表扫描机):"); scanf("%d",&devcount.devsort); printf("设备名字:"); scanf("%s",devcount.devname); printf("设备价格:"); scanf("%d",&devcount.devprice); printf("设备购买日期:"); scanf("%s",devcount.devbuydate); printf("设备状态(1未报废 0报废):"); scanf("%d",&devcount.devstate); printf("设备报废日期:"); scanf("%s",devcount.devdonedate); count+; printf("是否继续输入数据 y是 n否 : "); scanf("%s",flag); while(strcmp(flag,"y")=0|strcmp(flag,"Y")=0); output();void change() /数据修改 char ch20,a20; int i; printf("nyou sure want change devInfor y/n): "); scanf("%s",ch); if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) printf("nenter you want change devName:"); scanf("%s",a); for(i=0;i<count;i+) if(strcmp(devi.devname,a)=0) printf("nyou sure want change dev name(y/n): "); scanf("%s",ch); if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) printf("nname:"); scanf("%s",devi.devname); printf("nyou sure want change dev no(y/n): "); scanf("%s",ch); if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) printf("nno"); scanf("%s",devi.devno); printf("nyou sure want change dev sort(y/n): "); scanf("%s",ch); if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) printf("nsort"); scanf("%d",&devi.devsort); printf("nyou sure want dev price(y/n): "); scanf("%s",ch);if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) printf("nprice"); scanf("%d",&devi.devprice); printf("nyou sure want dev done date(y/n): "); scanf("%s",ch);if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0) printf("ndone date"); scanf("%s",devi.devdonedate); output();void sort() /数据分类显示 int i,chi,sum=0,wei=0,da=0,sao=0; printf("输入你想要统计的信息: 1(报废的机器总数) 2(机器的总类数目)"); scanf("%d",&chi); if(chi=1) for(i=0;i<count;i+) if(devi.devstate=0) sum+; printf("报废的机器数目为 %d n",sum); else if(chi=2) for(i=0;i<count;i+) if(devi.devsort=1) wei+;else if(devi.devsort=2) da+;else if(devi.devsort=3) sao+; printf("微机数目为 %d 打印机数目为 %d 扫描机数目为 %d",wei,da,sao); else printf("你输入的选项不符合要求!n");void dele() /数据删除int i,j;char c20; printf("nenter you want delete name :n"); printf("name:"); scanf("%s",c); for(i=0;i<count;i+) if(strcmp(c,devi.devname)=0) break; for(j=i;j<count-1;j+) devj=devj+1; printf("tttyou had delete %sn",c); count-; output();void output() /数据输出 int i;for(i=0;i<count;i+) printf("%s %d %s %d %s %d %sn",devi.devno,devi.devsort,devi.devname,devi.devprice,devi.devbuydate,devi.devstate,devi.devdonedate);void search() /数据查找int i;char a20,ch10; printf("nenter you want look name:"); scanf("%s",a); for(i=0;i<count;i+) if(strcmp(devi.devname,a)=0) printf("%s %d %s %d %s %d %sn",devi.devno,devi.devsort,devi.devname,devi.devprice,devi.devbuydate,devi.devstate,devi.devdonedate);