保安信息系统.docx
- 文档编号:14620267
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:25
- 大小:116.02KB
保安信息系统.docx
《保安信息系统.docx》由会员分享,可在线阅读,更多相关《保安信息系统.docx(25页珍藏版)》请在冰点文库上搜索。
保安信息系统
保安信息管理
1.课程设计目的:
1.可以任意读取以输入信息
2.可以任意增加保安人员信息(包括:
姓名,性别,联系电话,值班具体日期,邮编,通信住址等。
)
3.可以在任意位置插入信息
4.可以任意删除信息
5.可以以姓名查询任意一保安的具体信息
6.可以修改任意保安信息
7.可在任意时候保存信息,并在退出时提示保
2.设计方案论证
2.1设计思路
利用简单的C语言程序设计一个保安信息管理。
可以任意增加保安人员信息(包括:
姓名,性别,联系电话,值班具体日期,邮编,通信住址等)。
可以进行任意位置插入信息,任意删除信息,以姓名查询任意一保安的具体信息,修改信息,并进行保存信息。
2.2有关计算
Read函数:
读取保安人员信息;
Append函数:
增添保安人员信息;
Insert函数:
插入保安人员信息
Delete函数:
删除保安人员信息
Search函数:
查询保安人员信息
Modify函数:
修改保安人员信息
Save函数:
保存保安人员信息
①用顺序表设计保安资料的结构
为了表示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定义所需要的各项信息。
保安资料都包括姓名,性别,值班日期,通讯地址和联系电话这几项,而在这几项中,值班日期又包括年份,月份和日期三项,通讯地址包括邮编和地址二项,我们把这些联系较为紧密的内容又用单独的结构表示,这样就产生了保安资料的基本结
构:
structaddress
{charpostnumber[10];
chara[40];//家庭地址
};
structbirthday
{intyear;
intmonth;
intday;
};
structffriend
{intnum;//序号
charname[20];
charsex;
chartelephone[13];
structbirthdaybirthday;
structaddressaddress;
}
②main()主函数
程序采用模块化设计,主函数是程序的入口,各模块独立,可分块调试,均由主函数控制调用。
控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数,同时设置一个断点。
③对于电子通讯录这样一张顺序表来说,内容的录入是必不可少的操作。
由
于采用的是顺序存储结构。
这项工作很简单,只需要在把输入的信息按顺序放
在空的friends数组元素中即可。
voidCYApp(intj)
{
fflush(stdin);
friends[j].num=j;
printf("\n\t\t\t编号-Number:
%d",j);
printf("\n\t\t\t姓名-Name:
");
scanf("%s",friends[j].name);
fflush(stdin);
printf("\t\t\t性别-Sex(m/w):
");
scanf("%c",&friends[j].sex);
printf("\t\t\t联系电话-telephone:
");
scanf("%s",friends[j].telephone);
printf("\t值班日期-birthday");
printf("\n\t\t\t年份-year:
");
scanf("%d",&friends[j].birthday.year);
printf("\t\t\t月份-month:
");
scanf("%d",&friends[j].birthday.month);
printf("\t\t\t日-day:
");
scanf("%d",&friends[j].birthday.day);
printf("\t\t\t邮编-Postnumber:
");
scanf("%s",friends[j].address.postnumber);
printf("\t\t\t通信地址-Address:
");
scanf("%s",friends[j].address.a);
getchar();
}
④记录的维护(插入与删除),我想在正常的使用过程中,一定会遇到插入或删除保安资料的情况,解决这个问题就要看下面这条程序了。
voidCYDel()
{
intk;
printf("\n\tDelete编号-Number:
");
scanf("%d",&k);
if(k<=i)
{
for(intj=k;j
{
strcpy(friends[j].name,friends[j+1].name);/*交换元素内容*/
friends[j].sex=friends[j+1].sex;
strcpy(friends[j].telephone,friends[j+1].telephone);
friends[j].birthday.year=friends[j+1].birthday.year;
friends[j].birthday.month=friends[j+1].birthday.month;
friends[j].birthday.day=friends[j+1].birthday.day;
strcpy(friends[j].address.postnumber,friends[j+1].address.postnumber);
strcpy(friends[j].address.a,friends[j+1].address.a);
}
i--;
}
else
{
printf("输入的编号太大!
");
}
}
⑤CYDel()删除纪录
CYDel();
if(i<1)
printf("\n没有记录-Norecords\n");
printf("\n请按回车键继续!
");
getchar();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
⑥查询功能
printf("\n\t请输入要查询记录的相关姓名:
");//增添查询按列号的
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0)//比较字符串
{
CYXSH(j);
break;
}
}
if(i<1)
{
printf("\n没有您所查询的记录-Norecords");
printf("\n请按回车键继续!
");
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
⑦存盘功能和退出功能
CYSav();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case'H':
charx;
printf("是否保存?
yes/no\n");
scanf("%s",&x);
//getchar();
//getchar();
if(x=='y')
{
CYSav();
exit(0);
}
else
exit(0);
2.3功能模块图
2.3程序设计
#include
#include
#include
#include
#include
FILE*fp;
inti;//i是全局变量可代替length
structaddress
{charpostnum[10];
chara[40];//家庭地址
};
structbirthday
{intyear;
intmonth;
intday;
};
structffriend
{intnum;//序号
charname[20];
charsex;
chartelephone[13];
structbirthdaybirthday;
structaddressaddress;
}
friends[50];
voidLoad()
{
intj;
longk;
fp=fopen("friend.txt","a+");//打开文件friend.txt
if(fp!
=NULL)
{
for(i=1;i<50;i++)
{
j=fgetc(fp);
if(j==EOF)//判断是否到了文件尾
return;
k=i-1;
fseek(fp,k*sizeof(structffriend),SEEK_SET);
fread(&friends[i],sizeof(structffriend),1,fp);//从文件中读取一条记录
}
}
else
{
fp=fopen("friend.txt","w");
i=1;
}
}
voidShow(intj)
{
//friends[j].num=i;
printf("\n\n\t编号-Nnumber:
%3d",friends[j].num);
printf("\n\t姓名-Name:
%-20s",friends[j].name);
printf("\n\t性别-Sex:
%c",friends[j].sex);
printf("\n\t联系电话-Telephone:
%-13s",friends[j].telephone);
printf("\n\t值班日期-Birthday:
%4d-%2d-%3d",friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day);
printf("\n\t邮编-Postnum:
%-10s",friends[j].address.postnum);
printf("\n\t通信地址-address:
%-40s",friends[j].address.a);
}
voidAppend(intj)
{
fflush(stdin);//区内清除文件缓冲区,文件以写方式打开时将缓冲容写入文件
//stdin是一个标准FILE*(文件型指针)指向通常是用键盘的输入的输入流
friends[j].num=j;
printf("\n\t\t\t序号-Number:
%d",j);
printf("\n\t\t\t姓名-Name:
");
scanf("%s",friends[j].name);
fflush(stdin);
printf("\t\t\t性别-Sex(m/w):
");
scanf("%c",&friends[j].sex);
printf("\t\t\t联系电话-telephone:
");
scanf("%s",friends[j].telephone);
printf("\t值班日期-birthday");
printf("\n\t\t\t年份-year:
");
scanf("%d",&friends[j].birthday.year);
printf("\t\t\t月份-month:
");
scanf("%d",&friends[j].birthday.month);
printf("\t\t\t日-day:
");
scanf("%d",&friends[j].birthday.day);
printf("\t\t\t邮编-Postnumber:
");
scanf("%s",friends[j].address.postnum);
printf("\t\t\t通信地址-Address:
");
scanf("%s",friends[j].address.a);
getchar();
}
voidDelete()
{
intk;
printf("\n\tDelete序号-Number:
");
scanf("%d",&k);
if(k<=i)
{
for(intj=k;j
{
strcpy(friends[j].name,friends[j+1].name);/*交换元素内容*/
friends[j].sex=friends[j+1].sex;
strcpy(friends[j].telephone,friends[j+1].telephone);
friends[j].birthday.year=friends[j+1].birthday.year;
friends[j].birthday.month=friends[j+1].birthday.month;
friends[j].birthday.day=friends[j+1].birthday.day;
strcpy(friends[j].address.postnum,friends[j+1].address.postnum);
strcpy(friends[j].address.a,friends[j+1].address.a);
}
i--;
}
else
{
printf("输入的序号太大!
");
}
}
voidModify(intj)
{
Append(j);
}
voidSave()
{
intj;
fp=fopen("friend.txt","w");
for(j=1;j<=i;j++)
{
fwrite(&friends[j],sizeof(structffriend),1,fp);
}
fclose(fp);
}
voidmain()
{
intj;
chargrade;
charsearchname[10];
Load();
i--;
do
{
printf("\t\t★★★★★★★保安信息管理★★★★★★★★\n");/*菜单选择*/
printf("\t\t★A.读取(Read)★\n");
printf("\t\t★B.增添(Append)★\n");
printf("\t\t★C.插入(Insert)★\n");
printf("\t\t★D.删除(Delete)★\n");
printf("\t\t★E.查询(Search)★\n");
printf("\t\t★F.修改(Modify)★\n");
printf("\t\t★G.保存(Save)★\n");
printf("\t\t★H.退出(Quit)★\n");
printf("\t\t★★★★★★★★★★★★★★★★★★★★★\n");
printf("请选择(Choice)\n注:
输入A~H的大写字母\n");
scanf("%c",&grade);
switch(grade)
//加个大写和小写都可以啊
{
case'A':
j=1;//显示功能
while(getchar()!
=0x1b&&j<=i)//增添按Esc键退出
{
Show(j++);
printf("\n请按回车键继续!
");
}
if(j-1<1)
{
printf("\n\t空文档,无任何记录-EmptyNote\n");
printf("\n请按回车键继续!
");
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case'B':
//增加功能
while(i<=50)//增加按ESC键退出的功能
{
i++;
Append(i);
printf("\t是否继续增加?
y/n");
//修改加上elseif其他就跳出或强制打印出出错
chara=getchar();
if(a=='n'||a=='N')
break;
}
if(i==51)
printf("\n\t文档已满,无法增加记录-notefull");
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case'C':
intk;
printf("\n\t输入要插入的位置:
");
scanf("%d",&k);
j=i+1;
friends[j].num=j;
for(j;j>k;j--)//插入功能
{
strcpy(friends[j].name,friends[j-1].name);//数据后移
friends[j].sex=friends[j-1].sex;
strcpy(friends[j].telephone,friends[j-1].telephone);
friends[j].birthday.year=friends[j-1].birthday.year;
friends[j].birthday.month=friends[j-1].birthday.month;
friends[j].birthday.day=friends[j-1].birthday.day;
strcpy(friends[j].address.postnum,friends[j-1].address.postnum);
strcpy(friends[j].address.a,friends[j-1].address.a);
}
Append(k);
i++;
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case'D':
//删除功能//增添随意删除多条记录的功能
Delete();
if(i<1)
printf("\n没有记录-Norecords\n");
printf("\n请按回车键继续!
");
getchar();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case'E':
//查询功能
printf("\n\t请输入要查询记录的相关姓名:
");//增添查询按列号的
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0)//比较字符串
{
Show(j);
break;
}
}
if(i<1)
{
printf("\n没有您所查询的记录-Norecords");
printf("\n请按回车键继续!
");
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case'F':
//修改功能//增添按序列号查询
printf("\n\t请输入要修改记录的相关姓名:
");
gets(searchname);
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0)//比较字符串
{
Modify(j);
//getchar();//加个输出确定修改吗
}
}
if(i<1)//修改功能
{printf("\n没有您所要修改的记录-Norecords");
printf("\n请按回车键继续!
");
getchar();
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case'G':
Save();//存盘功能
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case'H':
//退出功能
charx;
printf("是否保存?
yes/no\n");
scanf("%s",&x);
//getchar();
//getchar();
if(x=='y')
{
Save();
exit(0);
}
else
e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 保安 信息系统