超市储物柜系统C语言.docx
《超市储物柜系统C语言.docx》由会员分享,可在线阅读,更多相关《超市储物柜系统C语言.docx(10页珍藏版)》请在冰豆网上搜索。
超市储物柜系统C语言
沈阳航空航天大学
课程设计
学号:
2012041104004
班级:
24110401
姓名:
陈龙源
指导教师:
王晓岩
2013年8月30日
沈阳航空航天大学
课程设计任务书
学院:
材料科学与工程学号:
2012041104004
专业:
材料成型及控制工程(焊接技术方向)
班级:
24110404班题目:
自由存取箱
一、课程设计时间
2013~14第2学期第1周,即8月26日~8月31日,共计1周,20学时
二、课程设计内容
顾客在进入超市购物之前,可以用超市的“自由存取箱”存放自己随身带的物品。
这种存取箱有一个功能面板,面板上主要有“我要存包”按钮、密码纸条输出口、密码纸条扫描口三项用户接口。
当顾客按下“我要存包”按钮时,片刻从输出口输出一个小纸条,上面有随机生成的密码(扫描码),同时存取箱会自动开启一个正在闲置的小箱,顾客放入物品关上箱门即可;当顾客取包时,只要将含有密码扫描码的纸条在存取箱的输入口轻轻一晃,存取箱就自动开启顾客存物品的小箱。
请设计程序模拟超市“自由存取箱”的使用过程。
(要求:
小箱的数量为100,密码为4位)
三、课程设计要求
程序质量:
✧贯彻结构化的程序设计思想。
✧至少有“我要存包”、“我要取包”、“退出程序”三个菜单。
✧用户界面友好,功能明确,操作方便。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
一、需求分析
根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型实用型系统,系统应该具有操作简单、稳定性的特点。
1.操作简单性
自由储物柜要求操作简单,管理方便,无需携带任何凭证。
2.稳定性分析
指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3.主要功能分析
(1)获取储物箱:
对于获取储物箱,用户需要存包时,可以用来获取储物箱,同时获取取包时的密码,以便取包时使用。
(2)打开储物箱:
当用户需要取包时,输入相应的箱子号码,并输入密码,密码正确则箱子打开。
二、设计分析
主要有2个功能模块,每个模块对应一个C语言自定义函数。
这些函数原型及其功能简述如下:
1、程序总体结构图(传统流程图或N-S框图)
Topic
getchar()
While
(1)
Menu()getchar()
Case'1'
是
否
我要存包
Case'2'
是
否
我要存包
Case'0'
是否
退出程序
输入有误
重新输入
图1程序总体结构图
2、主要功能模块框图(传统流程图或N-S框图)
(1)获取储物箱函数mima()
否
是
图2获取储物箱函数
(2)获取储物箱函数tuibao()
三、主要界面截图
图3程序主界面
图4数据修改界面
……等等……
四、技术要点
(对本程序贡献较大的C语言知识点;重要算法的设计与实现)
1、结构体的应用
定义了结构体用来描述学生的姓名、学号、班级以及三门课程成绩。
具体的定义如下:
……略……
所定义的结构体主要用于定义数组。
2、文件操作
包括了文件的写入和读取两个方面。
文件的写入操作,用于保存录入的学生数据,也用于保存所修改的数据。
例如如下程序段用于保存录入的学生信息:
……略……
3、关于删除算法
实现从系统中删除某位同学的相关信息的算法稍微复杂一些,其实质是对数组某个或某些元素的删除操作。
对数组元素的删除操作完成后,再将数组写入到文件中,就完整地实现了“删除”。
在进行删除操作时,先对数组进行查询操作,以确定待删除的数组元素,然后,
……略……
五、个人总结
(写出在课程设计过程中的收获和体会,说明程序的优点和缺憾。
)
六、参考文献
(参考的书籍或互联网资源)
[1]谭浩强.C程序设计.北京:
清华大学出版社,2005
[2]……略……
七、源程序
#include
#include
#include
#include
voidmima();
voidmenu();
voidtuibao();
staticintk;
staticinta[100];
staticintb[100];
main()
{
inti,n;
while
(1)
{
system("cls");
system("color71");
menu();
printf("欢迎您的光临\n请按照提示输入:
\n");
scanf("%d",&n);
getchar();
switch(n)
{
case1:
mima();getchar();break;
case2:
tuibao();getchar();break;
case0:
exit(0);getchar();break;
default:
printf("您的输入有误,请重新输入!
!
!
\n");break;
}
}
}
voidmenu()//界面菜单
{
printf("\t\t\t\t超市密码存储箱系统\n");
printf("\t\t\t\t1-----获取存储箱\n");
printf("\t\t\t\t2-----打开存储箱\n");
printf("\t\t\t\t0-----退出系统\n");
}
voidmima()//密码
{
inti,j,n;
srand((unsigned)time(NULL));//随机种子
if(k<100)
{
b[k]=1;
for(i=0;i<=100;i++)
{
if(b[k]==b[i]&&i!
=k)
b[k]++;
else
break;
}
do
{
a[k]=rand()%900+1000;
for(i=0;i<=k;i++)
{
if(a[k]==a[i])
{j=1;
break;}
else
j=0;
}
}while(j==0&&i==k);
printf("你的存储箱号码为:
%d\n",b[k]);
printf("你的开箱密码为:
%d\n",a[k]);
k++;
}
else
printf("\t\t\t没有空余的存储箱了,请稍后!
\n");
}
voidtuibao()
{
inti,j,n,m,h=0;
printf("请输入你的存储箱的号码:
\n");
scanf("%d",&n);
getchar();
for(i=1;i<=100;i++)
if(i==n&&a[i-1]!
=NULL)
{
system("color74");
printf("\t\t\t*******\n");
printf("\t\t\t**\n");
printf("\t\t\t*满*\n");
printf("\t\t\t**\n");
printf("\t\t\t*******\n");
h=1;
printf("请输入存储箱的密码:
\n");
scanf("%d",&m);
getchar();
if(m==a[i-1])
{
for(j=i-1;j<=k;j++)
{
b[i-1]=b[i];
a[i-1]=a[i];
}
printf("请取出您的物品,欢迎下次光临!
\n");
k--;
}
else
printf("您输入的密码错误,请核对后输入!
\n");
}
if(h==0&&n>0&&n<=100)
{
system("color71");
printf("\t\t\t*******\n");
printf("\t\t\t**\n");
printf("\t\t\t*空*\n");
printf("\t\t\t**\n");
printf("\t\t\t*******\n");
}
if(n<=0&&n>100)
printf("您的输入有误!
");
}