课程设计说明书学院、系:专业:学生姓名:学号:设计题目:设备管理系统起迄日期 :指导教师 :日期: 2017 年5 月12 日1 设计目的提高程序设计能力,检验课堂教学内容,掌握程序设计的基本方法和调试技能。
通过课程实训,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构;进一步掌握 C 语言中的重要数据结构;掌握并熟练运用指针,链表,结构体和文件等结构;提高程序开发哪里,能运用合理的控制流编写清晰高效的程序;培养 C 语言只是运用与自学能力,加强程序分析能力。
2 任务概述功能:设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为 1 条记录),包括设备号、设备名称、领用人、所属部门、数量、购买时间、价格等。
能够显示和统计各种设备的信息。
分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2、完成最低要求:建立一个文件,包含一个部门10 台设备的信息,能对文件进行补充、修订、删除,能统计所有设备的总价值。
3、进一步要求:完成设备按种类、按所属部门进行统计。
3 模块划分系统可设计为:实验设备信息写入模块实验设备信息输出模块.实验设备信息查询模块实验设备信息添加模块实验设备信息删除模块实验设备信息查询模块实验设备信息统计模块结构体成员包括设备号,设备名称,设备领用人,设备所属部门,设备数量,设备购买时间,设备价格。
4 主要函数说明及其N-S 图设备管理系统实验进入实验实验实验实验实验实验菜单设备设备设备设备设备设备设备信息信息信息信息信息信息信息写入查询输出添加查询删除统计功能选择模块模块模块模块模块模块模块4.1 主函数流程图输入数字numberT number==1Fchec() T number==2Fadd() T number==3Fdel() T number==4 Falt() T number==5 Fcount() T number==0 F退出系统4.2 N-S 图4.3 查询记录开始按要求查看记录图4.3结束4.4 读入/ 写入文件开始定义文件指针F判断文件是否可存在?图4.4创建一个文件T写入数据关闭文件结束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语言的有了进一步的认识,深深认识到自己学习的还不够,平时敲的代码也太少,作为一名软件工程的学生,感到深深的愧疚,对不起老师,对不起父母,更对不起自己,同时为自己将来毕业后的命运感到一份担忧。
在大一下学期C语言实训中,不仅有网上已有成果的借鉴与分析,以及向同学的请教,还有相关资料的查阅,既加深了自身能力的认知与对自己不足的体会,也优化了和同学的关系,真可谓一举两得。
同时还得出一个结论:亲身下河知深浅,亲口尝梨知酸甜!作为一名软件工程的学生,平时在电脑跟前敲代码的过程是必需的,谁也躲不了,一份努力,一份收获,同时,学习C语言需要细密又严谨的思维,良好的操作习惯,这样才有可能在编程的道路上百尺竿头更进一步!也希望各位老师、身边的同学监督,更需要自己的积极自省。
期待三年后一个成熟优秀的自己!附录:#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>void menu(); // 功能选择void add(); // 添加信息void del(); // 删除信息void alt(); // 修改信息void chec(); // 查看信息void count(); // 统计信息void read(); // 读取文件void write(); // 写入文件struct array{char ano[20],aname[20],aowner[20],aapartment[20],aamount[20],atime[20],aprice[20];int del; // 判断是否删除,值为0 为未删除, 1 为已删除} a[20];int No,sum;int main(){system("mode con cols=145 lines=35");puts("\n\n\n\n\n\n\n\n\n\n\n\n\n <<<<<< 欢迎使用设备管理系统!>>>>>>");getchar();read(); // 实现文件读进内存menu(); // 实现功能选择write(); // 实现信息写入文件return 0;}void menu(){system("cls");int a;puts("\n\n\n\n\n\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 请选择需要的功能:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");puts(" 1. 查看设备信息\n2. 添加设备信息\n3. 删除设备信息\n4. 修改设备信息\n5. 统计设备信息\n0. 退出系统");printf("\t\t 请选择你的功能(选择0~5)[ ]\b\b");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){f p=fopen("D:\\infor.txt","w+"); // 若没有则创建一个txtf close(fp);}int i;for(i=0;!feof(fp);i++){fread(&a[i],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;i<No;i++)if (!a[i].del)fwrite(&a[i],sizeof(struct array),1,fp);fclose(fp);}void chec(){int i;printf(" 设备号设备名称领用人所属部门数量购买时间价格\n");for(i=0;i<No;i++){i f(a[i].del==0)printf("%8s%20s%20s%20s%20s%20s%20s\n",a[i].ano,a[i].aname,a[i].aowner,a[i].aapartment,a[i].aamount,a[i].atime,a[i].aprice);}getchar();getchar();menu();}void add(){char s;printf(" 请输入要添加的设备号:\n");scanf("%s",a[No].ano);printf(" 请输入要添加的设备名称:\n");scanf("%s",a[No].aname);printf(" 请输入要添加的设备领用人:\n");scanf("%s",a[No].aowner);printf(" 请输入要添加的设备的所属部门:\n");scanf("%s",a[No].aapartment);printf(" 请输入要添加的设备数量:\n");scanf("%s",a[No].aamount);printf(" 请输入要添加的设备购买时间:\n");scanf("%s",a[No].atime);printf(" 请输入要添加的设备价格:\n");scanf("%s",a[No].aprice);a[No].del=0;No+=1;printf(" 请问是否继续添加?(Y/N)(不区分大小写)\n");while (1){getchar();gets(&s);i f (s=='Y'||s=='N'||s=='y'||s=='n')break;else{puts(" 信息有误!请检查后重新输入\n");puts(" 按任意键重新输入!");getchar();getchar();getchar();}}if(s=='Y'||s=='y')add();else if(s=='N'||s=='n')system("cls");menu();}void del(){char ch[20],s;int i;printf(" 请输入要删除的设备编号:(0 键返回菜单栏)\n");printf(" 设备号设备名称领用人所属部门数量购买时间价格\n");for(i=0;i<No;i++){i f(a[i].del==0)printf("%4d%20s%20s%20s%20s%20s%20s%20s\n",i+1,a[i].ano,a[i].aname,a[i].aowner,a[i].a apartment,a[i].aamount,a[i].atime,a[i].aprice);}while (1){scanf("%s",ch);i =atoi(ch);i f (i>=1 && i<=No)break;else if(i==0)return;else puts(" 信息有误!请检查后重新输入\n");}a[i-1].del=1;printf(" 是否继续删除?(Y/N)(不区分大小写)\n");while (1){getchar();gets(&s);i f (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,ch[20];int i,j;printf(" 请输入修改的设备的编号:\n");printf(" 设备号设备名称领用人所属部门数量购买时间价格\n");for(i=0;i<No;i++){printf("%4d%20s%20s%20s%20s%20s%20s%20s\n",i+1,a[i].ano,a[i].aname,a[i].aowner,a[i].aapartment,a[i].aamount,a[i].atime,a[i].aprice);}while (1){scanf("%s",ch);i =atoi(ch);i f (i>=1 && i<=No)break;else if(i==0)return;else puts(" 信息有误!请检查后重新输入\n");}if(a[i-1].del==1){printf(" 该设备已被删除!\n");r eturn;}printf(" 请输入您要修改的内容的编号:\n1. 设备号\n2. 设备名称\n3. 领用人\n4. 所属部门\n5. 数量\n6. 购买时间\n7. 价格\n0. 返回菜单栏\n");while (1){scanf("%s",ch);j =atoi(ch);i f (j>=1 && j<=7)break;else if(i==0){return;}else puts(" 信息有误!请检查后重新输入\n");}printf(" 请输入要修改的信息:\n");switch (j){c ase 1:{scanf("%s",a[i-1].ano);break;}case 2:{scanf("%s",a[i-1].aname);break;}case 3:{scanf("%s",a[i-1].aowner);break;}case 4:{scanf("%s",a[i-1].aapartment);break;}case 5:{scanf("%s",a[i-1].aamount);break;}c ase 6:{scanf("%s",a[i-1].atime);break;}c ase 7:{scanf("%s",a[i-1].aprice);break;}}printf(" 是否继续修改?(Y/N)(不区分大小写)\n"); while (1){getchar(); // 获取回车gets(&s); // 获取si f (s=='Y'||s=='N'||s=='y'||s=='n')break;else puts(" 信息有误!请检查后重新输入\n");}if(s=='Y'||s=='y')alt();else if(s=='N'||s=='n')system("cls");menu();}void count(){char ch[20],temp[20],s;int i,j,n;sum=0;printf(" 请选择统计方式:\n1. 所有设备的总价值。