搜索
您的当前位置:首页正文

c语言设备管理系统

来源:好走旅游网
东华理工大学长江学院

课程设计说明书

学 院、系: 专 业: 学 生 姓 名: 设 计 题 目:

起 迄 日 期: 指 导 教 师:

学 号: 设备管理系统

日期: 2017年5月12日

页脚内容

东华理工大学长江学院

1 设计目的

提高程序设计能力,检验课堂教学内容,掌握程序设计的基本方法和调试技能。通过课程实

训,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构;进一步掌握C语言中的重要数据结构;掌握并熟练运用指针,链表,结构体和文件等结构;提高程序开发哪里,能运用合理的控制流编写清晰高效的程序;培养C语言只是运用与自学能力,加强程序分析能力。

2 任务概述

功能:设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若

干台相同设备可作为1条记录),包括设备号、设备名称、领用人、所属部门、数量、购买时间、价格等。能够显示和统计各种设备的信息。 分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2、完成最低要求:建立一个文件,包含一个部门10台设备的信息,能对文件进行 补充、修订、删除,能统计所有设备的总价值。

3、进一步要求:完成设备按种类、按所属部门进行统计。

3 模块划分

系统可设计为:

实验设备信息写入模块 实验设备信息输出模块 . 实验设备信息查询模块 实验设备信息添加模块 实验设备信息删除模块 实验设备信息查询模块 实验设备信息统计模块

结构体成员包括设备号, 设备名称, 设备领用人, 设备所属部门 ,设备数量 ,设备购买时间, 设备价格 。

页脚内容

东华理工大学长江学院

4 主要函数说明及其N-S图

进入菜单 功能选择 实验设备信息写入模块 实验设备信息输出模块 设备管理系统 实验设备信息查询模块 实验设备信息添加模块 实验设备信息删除模块 实验设备信息查询模块 实验设备信息统计模块

4.1 主函数流程图

输入数字number T number==1 F chec() T number==2

F add() T number==3 F del() T number==4 F alt() T number==5 F count() T number==0 F 系统 退出

4.3查询记录

开始 4.2 N-S图

按要求查看记录 页脚内容 东华理工大学长江学院

图4.3 结束

4.4读入/写入文件

4.5添加数据

开始 定义文件指针 判断文件是否F 4.4

可存在? T 创建一个文件 写入数据 关闭文件 结束 开始 按要求输入信息 图4.5 完成一条记录的添加 F 是否继续输入? T 结束 页脚内容

图 东华理工大学长江学院

4.6删除数据

开始 输入设备ID号 图4.6

4.7修改数据

4.8统计数据

进行删除操作 结束 开始 图 4.7 输入要修改的 ID号 按要求修改数据 结束 开始 图 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 #include #include #include

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.查看设备信息\\n

2.添加设备信息\\n 3.删除设备信息\\n

4.修改设备信息\\n 5.统计设备信息\\n 0.退出系统\");

printf(\"\\请选择你的功能(选择0~5)[ ]\\b\\b\");

scanf(\"%d\

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\ //读写功能 if(fp==NULL) {

fp=fopen(\"D:\\\\infor.txt\ //若没有则创建一个txt fclose(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\ for (i=0;ifwrite(&a[i],sizeof(struct array),1,fp); fclose(fp); }

void chec() { int i;

printf(\" 设备号 设备名称 领用人 数量 购买时间 价格\\n\");

页脚内容

所属部门 东华理工大学长江学院

for(i=0;iif(a[i].del==0)

printf(\"%8s%20s%20s%20s%20s%20s%20s\\n\ount,a[i].atime,a[i].aprice);

}

} getchar(); getchar(); menu();

void add() {

char s;

printf(\"请输入要添加的设备号:\\n\"); scanf(\"%s\

printf(\"请输入要添加的设备名称:\\n\"); scanf(\"%s\

printf(\"请输入要添加的设备领用人:\\n\");

scanf(\"%s\

printf(\"请输入要添加的设备的所属部门:\\n\");

scanf(\"%s\

printf(\"请输入要添加的设备数量:\\n\");

scanf(\"%s\

printf(\"请输入要添加的设备购买时间:\\n\"); scanf(\"%s\

printf(\"请输入要添加的设备价格:\\n\"); scanf(\"%s\ a[No].del=0;

页脚内容

东华理工大学长江学院

No+=1;

printf(\"请问是否继续添加?(Y/N)(不区分大小写)\\n\"); while (1) { getchar(); gets(&s);

if (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;iif(a[i].del==0)

printf(\"%4d%20s%20s%20s%20s%20s%20s%20s\\n\,a[i].aamount,a[i].atime,a[i].aprice);

} while (1) {

scanf(\"%s\ i=atoi(ch); if (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);

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,ch[20]; int i,j;

printf(\"请输入修改的设备的编号:\\n\");

printf(\" 设备号 设备名称 领用人 所属部门 数量 购买时间 价格\\n\");

for(i=0;iprintf(\"%4d%20s%20s%20s%20s%20s%20s%20s\\n\,a[i].aamount,a[i].atime,a[i].aprice);

} while (1) {

scanf(\"%s\ i=atoi(ch);

if (i>=1 && i<=No)break; else if(i==0)return;

else puts(\"信息有误!请检查后重新输入\\n\"); }

if(a[i-1].del==1) {

printf(\"该设备已被删除!\\n\"); return;

页脚内容

东华理工大学长江学院

}

printf(\"请输入您要修改的内容的编号:\\n1.设备号\\n2.设备名称\\n3.领用人\\n4.所属部门\\n5.数量\\n6.购买时间\\n7.价格\\n0.返回菜单栏\\n\");

while (1) {

scanf(\"%s\ j=atoi(ch); if (j>=1 && j<=7)

break;

else if(i==0) { }

else puts(\"信息有误!请检查后重新输入\\n\"); }

printf(\"请输入要修改的信息:\\n\"); switch (j)

return;

{

case 1:

{scanf(\"%s\ break;}

case 2:

{scanf(\"%s\ break;}

case 3:

{scanf(\"%s\ break;}

case 4:

{scanf(\"%s\

页脚内容

东华理工大学长江学院

break;}

case 5:

{scanf(\"%s\ break;}

case 6:

{scanf(\"%s\ break;}

case 7:

{scanf(\"%s\ break;}

} }

void count() {

char ch[20],temp[20],s;

printf(\"是否继续修改?(Y/N)(不区分大小写)\\n\"); while (1) {

getchar(); //获取回车 gets(&s); //获取s if (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();

页脚内容

东华理工大学长江学院

int i,j,n; sum=0;

printf(\"请选择统计方式:\\n1.所有设备的总价值。\\n2.设备所属部门。\\n3.设备种类。\\n0.返回菜单栏\\n\");

while (1) {

scanf(\"%s\ j=atoi(ch); if (j>=1 && j<=3)

break;

else if(j==0) { }

else puts(\"信息有误!请检查后重新输入\\n\"); } switch (j)

return;

{

case 1:

{ }

for(i=0;iprintf(\"当前设备的总价值为%d。\\n\ break;

if(a[i].del==0)

sum=atoi(a[i].aprice)*atoi(a[i].aamount)+sum;

case 2:

页脚内容

东华理工大学长江学院

{

printf(\"设备所属部门统计结果为:\\n 所属部门 数量

总价值\\n\");

for(i=0;isum=0; n=0;

strcpy(temp,a[i].aapartment); //将可变的数组a[i] 复制到temp数组中 for(j=0;jif(strcmp(temp,a[j].aapartment)==0&&i>j)

continue;

if(strcmp(temp,a[j].aapartment)==0&&i>j)

break;

else if(strcmp(temp,a[j].aapartment)==0&&i{

sum=sum+atoi(a[j].aamount)*atoi(a[j].aprice); n=n+atoi(a[j].aamount); }

if(a[i].del==0) { }

if(sum==0)

continue;

sum=sum+atoi(a[i].aamount)*atoi(a[i].aprice); n=n+atoi(a[i].aamount);

printf(\"%20s%20d%20d\\n\

页脚内容

东华理工大学长江学院

}

case 3:

{

printf(\"设备种类统计结果为:\\n 设备名 数量

总价值\\n\");

for(i=0;isum=0; n=0;

strcpy(temp,a[i].aname); for(j=0;jif(strcmp(temp,a[j].aname)==0&&i>j)

continue;

if(strcmp(temp,a[j].aname)==0&&i>j)

break;

else if(strcmp(temp,a[j].aname)==0&&isum=sum+atoi(a[j].aamount)*atoi(a[j].aprice); n=n+atoi(a[j].aamount);

if(a[i].del==0) { }

if(sum==0)

continue;

sum=sum+atoi(a[i].aamount)*atoi(a[i].aprice); n=n+atoi(a[i].aamount);

printf(\"%20s%20d%20d\\n\

页脚内容

东华理工大学长江学院

}

}

} 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\");

}

页脚内容

因篇幅问题不能全部显示,请点此查看更多更全内容

Top