课程设计 | 教学设备管理系统
创始人
2024-04-11 05:28:45

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、功能介绍

1.1 查看设备信息

1.2 显示记录

1.3 修改设备信息

1.4 查找设备信息

1.5 删除设备信息

1.6 恢复设备信息

1.7 添加设备信息

1.8 统计设备信息

1.9 保存数据文件

1.10 打开数据文件

二、设计思路

2.1 数据的存储

2.2 数据的写入

2.3 数据的读取

2.4 程序流程图

三、主要功能

3.1 查看设备信息

3.2 显示记录

3.3 修改设备信息

3.4 查找设备信息

3.5 删除设备信息

3.6 恢复设备信息

3.7 添加设备信息

3.8 统计设备信息

3.9 保存数据文件

3.10 打开数据文件

四、总结


本篇文章主要针对想学习 C 语言或者想提升 C 语言实践能力的同学,当然,如果你需要一份这样的课程设计那这正合适,下面就来详细讲解 C 语言教学设备管理系统。

一、功能介绍

教学设备管理系统的主界面如下所示。

图1 主界面

 教学设备管理系统有 10 个主要功能,如下所示:

1.1 查看设备信息

显示所有存储设备的详细信息,包括:设备号、设备名称、产地、购置日期、台数、单价、金额等。

1.2 显示记录

显示记录可以选择根据具体记录进行显示或者根据设备号进行显示。

1.3 修改设备信息

根据设备号查询具体设备,可以修改对应设备的设备号、设备名称、产地、购置日期、台数、单价、金额等。

1.4 查找设备信息

可以根据设备编号、设备名称、产地、购置日期、台数、单价、金额等进行查询设备。

1.5 删除设备信息

根据设备编号进行设备的删除。

1.6 恢复设备信息

根据设备编号进行设备的恢复。

1.7 添加设备信息

输入设备的设备号、设备名称、产地、购置日期、台数、单价、金额等进行添加。

1.8 统计设备信息

可以根据所有设备的总价值、设备总台数及总金额或按字符表打印教学设备进行统计。

1.9 保存数据文件

将数据保存到文件中。

1.10 打开数据文件

从数据文件中读取数据。

二、设计思路

2.1 数据的存储

数据通过如下结构进行存储。

struct Array
{   //设备编号    设备名称   产地         购置日期         台数        单价           金额        备注char ano[20], aname[20], origin_place[20], buy_time[20], aamount[20], unit_price[20], aprice[20], remark[20];int del;       //判断是否删除,值为0为未删除,1为已删除。恢复是把1改为0
} a[SIZE];

其中,通过字符串数组 ano、aname、origin_place、buy_time、aamount、uint_price、aprice、remark 分别存储设备编号、设备名称、产地、购置日期、台数、单价、金额以及备注。

del 表示设备是否被删除。

2.2 数据的写入

数据写入文件通过自定义的 write 函数来实现,如下所示。

void write()
{Print_Start();Print_Space(60, "保存数据文件\n\n\n");FILE *fp=fopen("infor.txt","w+");if(fp == NULL){printf("open infor.txt error\n");getchar();getchar();return;}int i;for (i = 0; i < No; i++)fwrite(&a[i],sizeof(struct Array),1,fp);fclose(fp);Print_Space(60, "成功保存数据\n\n\n");getchar();getchar();
}

通过系统函数 fopen 获得文件句柄 fp,将数组 a 中的数据存储到文件 infor.txt 中。 

2.3 数据的读取

读取数据通过自定义的函数 read 来实现,如下所示。

//读取内容
void read()
{Print_Start();Print_Space(60, "读入数据\n\n\n");No = 0;FILE *fp = fopen("infor.txt","r+");            //读写功能if(fp == NULL){fp = fopen("infor.txt","w+");              //若没有则创建一个txtfclose(fp);}int i;for(i = 0; !feof(fp); i++){fread(&a[i],sizeof(struct Array),1,fp);      //一次读取一个No++;}No = No-1;Print_Space(58, "成功读入数据!\n\n\n");Print_Space(5, "输入任意键返回主菜单: ");getchar();getchar();fclose(fp);
}

和写入数据一样,通过系统函数 fopen 获取文件句柄 fp,将文件 infor.txt 中的数据读取到结构 a 中。

2.4 程序流程图

程序的主要流程图如下所示。

图1 流程图

三、主要功能

下面对教学设备管理系统主要功能进行介绍。

3.1 查看设备信息

显示所有存储设备的详细信息,包括:设备号、设备名称、产地、购置日期、台数、单价、金额等。

void chec()
{Print_Start();Print_Space(60, "查看设备信息\n\n\n");int i;printf("      设备号              设备名称            产地            购置日期                台数                单价              金额                备注\n\n");printf("\n");for(i=0;i

如上所示,打印所有设备的信息,排除已经删除的设备。 运行界面如下所示。

图2 查看设备信息

3.2 显示记录

显示记录可以选择根据具体记录进行显示或者根据设备号进行显示。

//显示设备信息
void Display()
{Print_Start();Print_Space(50, "显示记录\n\n\n");int space = 39;Print_Space(space, "1.  根据具体记录进行显示\n");Print_Space(space, "2.  根据设备号进行显示\n");Print_Space(10, "请输入:");int choose;scanf("%d", &choose);if(choose == 1){Display_Record();Return_Confirm(Display);}else if(choose == 2){Display_Id();Return_Confirm(Display);}
}

根据用户选择显示设备信息。 运行界面如下所示。

图3 显示记录

3.3 修改设备信息

根据设备号查询具体设备,可以修改对应设备的设备号、设备名称、产地、购置日期、台数、单价、金额等,运行界面如下所示。

图4 修改设备信息

3.4 查找设备信息

可以根据设备编号、设备名称、产地、购置日期、台数、单价、金额等进行查询设备。

//查找记录
void Find()
{Print_Start();Print_Space(60, "查找记录\n\n\n");//char ano[20], aname[20], origin_place[20], buy_time[20], aamount[20], unit_price[20], aprice[20];int space = 39;Print_Space(space, "1.  设备编号\n");Print_Space(space, "2.  设备名称\n");Print_Space(space, "3.  产地\n");Print_Space(space, "4.  购置日期\n");Print_Space(space, "5.  台数\n");Print_Space(space, "6.  单价\n");Print_Space(space, "7.  金额\n");Print_Space(space, "8.  备注\n");Print_Space(10, "请输入编号: ");int choose;scanf("%d", &choose);Print_Space(10, "请输入要查找的内容: ");char s[100];scanf("%s", s);//设备编号    设备名称   产地         购置日期         台数        单价           金额printf("      设备号              设备名称            产地            购置日期                台数                单价              金额                备注\n\n");//printf("      设备号              设备名称            领用人              所属部门            数量                购买时间            价格\n\n");bool flag = false;int i, m = 0;for(i = 0; i < No; i++){if(a[i].del == 0){flag = Judge(s, a[i], choose);if(flag) {m++;printf("%8s%20s%20s%20s%20s%20s%20s%20s\n",a[i].ano,a[i].aname,a[i].origin_place,a[i].buy_time,a[i].aamount,a[i].unit_price,a[i].aprice,a[i].remark);}}}if(m > 0){Print_Space(62, "查找成功!\n\n");}else {Print_Space(58, "查找失败,并不存在此设备!\n\n");}printf("\n\n");Return_Confirm(Find);
}

运行界面如下所示。 

图5 查找设备信息

3.5 删除设备信息

根据设备编号进行设备的删除。

//删除设备信息,是按照设备号来删除设备的
void del()
{Print_Start();Print_Space(50, "删除设备信息\n\n");char ch[20], s;int i;printf("      设备号              设备名称            产地            购置日期                台数                单价              金额                备注\n\n");//printf("序号               设备号            设备名称              领用人            所属部门                数量            购买时间                价格\n");for(i = 0; i < No; i++){if(a[i].del == 0)printf("%8s%20s%20s%20s%20s%20s%20s%20s\n",a[i].ano,a[i].aname,a[i].origin_place,a[i].buy_time,a[i].aamount,a[i].unit_price,a[i].aprice,a[i].remark);}printf("请输入要删除的设备编号:(0键返回菜单栏)  ");while (1){scanf("%s", ch);i = atoi(ch);if (i >= 1 && i <= No)break;else if(i == 0)return;else puts("信息有误!请检查后重新输入\n");}//a[i-1].del = 1;for(i = 0; i < No; i++){if(!strcmp(ch, a[i].ano)){a[i].del = 1;break;}}printf("是否继续删除?(Y/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();
}

运行界面如下所示。

图6 删除设备信息

3.6 恢复设备信息

根据设备编号进行设备的恢复。

//恢复信息
void restore()
{Print_Start();Print_Space(60, "恢复信息\n\n\n");Print_Space(60, "已经删除的设备信息\n\n\n");printf("      设备号              设备名称            产地            购置日期                台数                单价              金额                备注\n\n");//printf("      设备号              设备名称            领用人              所属部门            数量                购买时间            价格\n\n");//显示已经删除的设备信息int i;for(i = 0; i < No; i++){if(a[i].del == 1)printf("%8s%20s%20s%20s%20s%20s%20s%20s\n",a[i].ano,a[i].aname,a[i].origin_place,a[i].buy_time,a[i].aamount,a[i].unit_price,a[i].aprice,a[i].remark);}printf("\n\n");Print_Space(5, "请输入设备号 :  ");char choose[20];scanf("%s", choose);//寻找对应的设备bool flag = false;for(i = 0; i < No; i++){if(!strcmp(a[i].ano, choose)){a[i].del = 0;flag = true;break;}}if(flag){Print_Space(60, "恢复信息成功!\n");}Return_Confirm(restore);
}

 运行界面如下所示。

图 7 恢复设备信息

3.7 添加设备信息

输入设备的设备号、设备名称、产地、购置日期、台数、单价、金额等进行添加。运行界面如下所示。

图8 添加设备信息

3.8 统计设备信息

可以根据所有设备的总价值、设备总台数及总金额或按字符表打印教学设备进行统计。运行界面如下所示。

图9 统计设备信息

3.9 保存数据文件

将数据保存到文件中。

void write()
{Print_Start();Print_Space(60, "保存数据文件\n\n\n");FILE *fp=fopen("infor.txt","w+");if(fp == NULL){printf("open infor.txt error\n");getchar();getchar();return;}int i;for (i = 0; i < No; i++)fwrite(&a[i],sizeof(struct Array),1,fp);fclose(fp);Print_Space(60, "成功保存数据\n\n\n");getchar();getchar();
}

3.10 打开数据文件

从数据文件中读取数据。

//读取内容
void read()
{Print_Start();Print_Space(60, "读入数据\n\n\n");No = 0;FILE *fp = fopen("infor.txt","r+");            //读写功能if(fp == NULL){fp = fopen("infor.txt","w+");              //若没有则创建一个txtfclose(fp);}int i;for(i = 0; !feof(fp); i++){fread(&a[i],sizeof(struct Array),1,fp);      //一次读取一个No++;}No = No-1;Print_Space(58, "成功读入数据!\n\n\n");Print_Space(5, "输入任意键返回主菜单: ");getchar();getchar();fclose(fp);
}

四、总结

在上面的 C 语言教学设备管理系统中,主要有两部分,界面的显示和各个功能的实现,根据用户的选择执行对应的功能即可。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...