1、 课程设计说明书学 院、系:专 业:学 生 姓 名:学 号:设 计 题 目:设备管理系统 起 迄 日 期:指 导 教 师:日期: 5月12日1 设计目标 提升程序设计能力,检验课堂教学内容,掌握程序设计基础方法和调试技能。经过课程实训,加深对结构化程序设计思想了解,能对系统功效进行分析,并设计合理模块化结构;深入掌握C语言中关键数据结构;掌握并熟练利用指针,链表,结构体和文件等结构;提升程序开发哪里,能利用合理控制流编写清楚高效程序;培养C语言只是利用和自学能力,加强程序分析能力。2 任务概述功效:设备管理系统应包含多种设备全部信息,每台设备为一条统计(同一时间同一部门购置若干台相同设备可作为
2、1条统计),包含设备号、设备名称、领用人、所属部门、数量、购置时间、价格等。能够显示和统计多种设备信息。分步实施:1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;2、完成最低要求:建立一个文件,包含一个部门10台设备信息,能对文件进行补充、修订、删除,能统计全部设备总价值。3、深入要求:完成设备按种类、按所属部门进行统计。3 模块划分 系统可设计为:试验设备信息写入模块试验设备信息输出模块.试验设备信息查询模块试验设备信息添加模块试验设备信息删除模块试验设备信息查询模块试验设备信息统计模块结构体组员包含设备号,设备名称,设备领用人,设备所属部门 ,设备数量 ,设备购置时间, 设
3、备价格。4 关键函数说明及其N-S图设备管理系统试验设备信息统计模块试验设备信息添加模块试验设备信息查询模块试验设备信息删除模块进入菜单功效选择试验设备信息查询模块试验设备信息输出模块试验设备信息写入模块 4.1 主函数步骤图 输入数字numberT number=1 Fchec() T number=2 F add() T number=3 Fdel() T number=4 Falt() T number=5 Fcount() T number=0 F 退出系统 4.2 N-S图 开始4.3查询统计按要求查看统计 图4.3 结束 开始4.4读入/写入文件定义文件指针F判定文件是否可存在?创
4、建一个文件 T 图4.4 写入数据 关闭文件 结束4.5添加数据 开始按要求输入信息 完成一条统计添加 图4.5 F是否继续输入? T 结束 开始4.6删除数据 输入设备ID号 进行删除操作 图4.6 结束4.7修改数据 开始 输入要修改ID号 图4.7 按要求修改数据 结束 开始4.8统计数据 选择统计方法 图4.8 显示统计结果 结束5 程序运行数据及其结果 图5.1 进入界面 图5.2菜单&功效选择图5.3 添加数据 图5.4 查看数据 图5.5 删除数据 图5.6 修改数据 图5.7 统计数据6 课程设计心得经历了大一上半学期C语言课程,C语言笔试,C语言机试“洗礼”,让我对C语言有了
5、深入认识,深深认识到自己学习还不够,平时敲代码也太少,作为一名软件工程学生,感到深深愧疚,对不起老师,对不起父母,更对不起自己,同时为自己未来毕业后命运感到一份担忧。在大一下学期C语言实训中,不仅有网上已经有结果借鉴和分析,和向同学请教,还有相关资料查阅,既加深了本身能力认知和对自己不足体会,也优化了和同学关系,真可谓一举两得。同时还得出一个结论:亲身下河知深浅,亲口尝梨知酸甜!作为一名软件工程学生,平时在电脑跟前敲代码过程是必需,谁也躲不了,一份努力,一份收获,同时,学习语言需要细密又严谨思维,良好操作习惯,这么才有可能在编程道路上百尺竿头更深入!也期望各位老师、身边同学监督,更需要自己主动
6、自省。期待三年后一个成熟优异自己!附录:#include #include #include #include void menu(); /功效选择void add(); /添加信息void del(); /删除信息void alt(); /修改信息void chec(); /查看信息void count(); /统计信息void read(); /读取文件void write(); /写入文件struct array char ano20,aname20,aowner20,aapartment20,aamount20,atime20,aprice20; int del; /判定是否删除,值为
7、0为未删除,1为已删除 a20;int No,sum;int main() system(mode con cols=145 lines=35); puts(nnnnnnnnnnnnn ); getchar(); read(); /实现文件读进内存 menu(); /实现功效选择 write(); /实现信息写入文件 return 0;void menu()system(cls);int a; puts(nnnnnn); puts( 1.查看设备信息n 2.添加设备信息n 3.删除设备信息n 4.修改设备信息n 5.统计设备信息n 0.退出系统); printf(tt请选择你功效(选择05)
8、bb);scanf(%d,&a); switch (a) case 0:return; case 1:chec();break; case 2:add();break;case 3:del();break; case 4:alt();break;case 5:count();break;default:printf(信息有误!请检验后重新输入n); void read() No=0; FILE *fp=fopen(D:infor.txt,r+); /读写功效 if(fp=NULL)fp=fopen(D:infor.txt,w+); /若没有则创建一个txt fclose(fp); int i;
9、 for(i=0;!feof(fp);i+) fread(&ai,sizeof(struct array),1,fp); /一次读取一个 No+;No=No-1; fclose(fp);void write() int i; FILE *fp=fopen(D:infor.txt,w+); for (i=0;iNo;i+) if (!ai.del) fwrite(&ai,sizeof(struct array),1,fp); fclose(fp);void chec()int i;printf( 设备号 设备名称 领用人 所属部门 数量 购置时间 价格n);for(i=0;iNo;i+)if(a
10、i.del=0)printf(%8s%20s%20s%20s%20s%20s%20sn,ai.ano,ai.aname,ai.aowner,ai.aapartment,ai.aamount,ai.atime,ai.aprice);getchar();getchar();menu();void add()char s;printf(请输入要添加设备号:n);scanf(%s,aNo.ano);printf(请输入要添加设备名称:n);scanf(%s,aNo.aname);printf(请输入要添加设备领用人:n); scanf(%s,aNo.aowner);printf(请输入要添加设备所属部
11、门:n); scanf(%s,aNo.aapartment);printf(请输入要添加设备数量:n); scanf(%s,aNo.aamount);printf(请输入要添加设备购置时间:n);scanf(%s,aNo.atime);printf(请输入要添加设备价格:n);scanf(%s,aNo.aprice);aNo.del=0;No+=1;printf(请问是否继续添加?(Y/N)(不区分大小写)n);while (1)getchar();gets(&s);if (s=Y|s=N|s=y|s=n)break;elseputs(信息有误!请检验后重新输入n);puts(按任意键重新输入
12、!);getchar();getchar();getchar(); if(s=Y|s=y)add();else if(s=N|s=n)system(cls);menu();void del()char ch20,s;int i;printf(请输入要删除设备编号:(0键返回菜单栏)n);printf( 设备号 设备名称 领用人 所属部门 数量 购置时间 价格n);for(i=0;i=1 & i=No)break;else if(i=0)return;else puts(信息有误!请检验后重新输入n);ai-1.del=1;printf(是否继续删除?(Y/N)(不区分大小写)n);while
13、(1)getchar();gets(&s);if (s=Y|s=N|s=y|s=n)break;else puts(信息有误!请检验后重新输入n);if(s=Y|s=y)del();else if(s=N|s=n)system(cls);menu(); void alt()char s,ch20;int i,j;printf(请输入修改设备编号:n);printf( 设备号 设备名称 领用人 所属部门 数量 购置时间 价格n);for(i=0;i=1 & i=1 & j=1 & j=3)break;else if(j=0)return;else puts(信息有误!请检验后重新输入n);swi
14、tch (j) case 1:for(i=0;iNo;i+)if(ai.del=0)sum=atoi(ai.aprice)*atoi(ai.aamount)+sum;printf(目前设备总价值为%d。n,sum);break; case 2:printf(设备所属部门统计结果为:n 所属部门 数量 总价值n);for(i=0;iNo;i+)sum=0;n=0;strcpy(temp,ai.aapartment); /将可变数组ai 复制到temp数组中 for(j=0;jj)break;else if(strcmp(temp,aj.aapartment)=0&ij)continue;if(a
15、i.del=0)sum=sum+atoi(ai.aamount)*atoi(ai.aprice);n=n+atoi(ai.aamount);if(sum=0)continue;printf(%20s%20d%20dn,ai.aapartment,n,sum);break; case 3:printf(设备种类统计结果为:n 设备名 数量 总价值n);for(i=0;iNo;i+)sum=0;n=0;strcpy(temp,ai.aname);for(j=0;jj)break;else if(strcmp(temp,aj.aname)=0&ij)continue;if(ai.del=0)sum=sum+atoi(ai.aamount)*atoi(ai.aprice);n=n+atoi(ai.aamount);if(sum=0)continue;printf(%20s%20d%20dn,ai.aname,n,sum);break;printf(请问是否继续统计?(Y/N)(不区分大小写)n);while (1)getchar();gets(&s);if (s=Y|s=N|s=y|s=n) break;else puts(信息有误!检验后重新输入n);if(s=Y|s=y)count();else if(s=N|s=n)system(cls);