C语言的课设Word格式.docx
- 文档编号:7981121
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:25
- 大小:116.37KB
C语言的课设Word格式.docx
《C语言的课设Word格式.docx》由会员分享,可在线阅读,更多相关《C语言的课设Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
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);
\n\t\t\t姓名-Name:
"
);
scanf("
%s"
friends[j].name);
\t\t\t性别-Sex(m/w):
scanf("
%c"
&
friends[j].sex);
printf("
\t\t\t联系电话-telephone:
friends[j].telephone);
\t值班日期-birthday"
\n\t\t\t年份-year:
friends[j].birthday.year);
\t\t\t月份-month:
friends[j].birthday.month);
\t\t\t日-day:
friends[j].birthday.day);
\t\t\t邮编-Postnumber:
friends[j].address.postnumber);
\t\t\t通信地址-Address:
friends[j].address.a);
getchar();
④记录的维护(插入与删除),我想在正常的使用过程中,一定会遇到插入或删除保安资料的情况,解决这个问题就要看下面这条程序了。
voidCYDel()
intk;
\n\tDelete编号-Number:
k);
if(k<
=i)
{
for(intj=k;
j<
i+1;
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
输入的编号太大!
}
⑤CYDel()删除纪录
CYDel();
if(i<
1)
\n没有记录-Norecords\n"
\n请按回车键继续!
\n\t\t\t\t\t\t\t此次操作结束"
\n\t------------------------------------------------------------\t\t\n"
⑥查询功能
\n\t请输入要查询记录的相关姓名:
//增添查询按列号的
searchname);
for(j=1;
=i;
j++)
if(strcmp(searchname,friends[j].name)==0)//比较字符串
{
CYXSH(j);
break;
1)
\n没有您所查询的记录-Norecords"
\n请按回车键继续!
⑦存盘功能和退出功能
CYSav();
case'
H'
:
charx;
是否保存?
yes/no\n"
x);
//getchar();
//getchar();
if(x=='
y'
)
CYSav();
exit(0);
2.3功能模块图:
2.4原程序部分:
#include<
stdlib.h>
string.h>
conio.h>
stdio.h>
dos.h>
FILE*fp;
inti;
//i是全局变量可代替length
{charpostnum[10];
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);
//从文件中读取一条记录
w"
i=1;
voidShow(intj)
//friends[j].num=i;
\n\n\t编号-Nnumber:
%3d"
friends[j].num);
\n\t姓名-Name:
%-20s"
\n\t性别-Sex:
friends[j].sex);
\n\t联系电话-Telephone:
%-13s"
\n\t值班日期-Birthday:
%4d-%2d-%3d"
friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day);
\n\t邮编-Postnum:
%-10s"
friends[j].address.postnum);
\n\t通信地址-address:
%-40s"
voidAppend(intj)
//区内清除文件缓冲区,文件以写方式打开时将缓冲容写入文件
//stdin是一个标准FILE*(文件型指针)指向通常是用键盘的输入的输入流
\n\t\t\t序号-Number:
voidDelete()
\n\tDelete序号-Number:
strcpy(friends[j].address.postnum,friends[j+1].address.postnum);
输入的序号太大!
voidModify(intj)
Append(j);
voidSave()
fwrite(&
friends[j],sizeof(structffriend),1,fp);
fclose(fp);
voidmain()
chargrade;
charsearchname[10];
Load();
do
\t\t★★★★★★★保安信息管理★★★★★★★★\n"
/*菜单选择*/
\t\t★A.读取(Read)★\n"
\t\t★B.增添(Append)★\n"
\t\t★C.插入(Insert)★\n"
\t\t★D.删除(Delete)★\n"
\t\t★E.查询(Search)★\n"
\t\t★F.修改(Modify)★\n"
\t\t★G.保存(Save)★\n"
\t\t★H.退出(Quit)★\n"
printf("
\t\t★★★★★★★★★★★★★★★★★★★★★\n"
请选择(Choice)\n注:
输入A~H的大写字母\n"
grade);
switch(grade)
//加个大写和小写都可以啊
A'
j=1;
//显示功能
while(getchar()!
=0x1b&
&
=i)//增添按Esc键退出
Show(j++);
if(j-1<
\n\t空文档,无任何记录-EmptyNote\n"
B'
//增加功能
while(i<
=50)//增加按ESC键退出的功能
i++;
Append(i);
\t是否继续增加?
y/n"
//修改加上elseif其他就跳出或强制打印出出错
chara=getchar();
if(a=='
n'
||a=='
N'
if(i==51)
\n\t文档已满,无法增加记录-notefull"
C'
\n\t输入要插入的位置:
j=i+1;
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);
D'
//删除功能//增添随意删除多条记录的功能
Delete();
E'
//查询功能
Show(j);
F'
//修改功能//增添按序列号查询
\n\t请输入要修改记录的相关姓名:
gets(searchname);
Modify(j);
//加个输出确定修改吗
1)//修改功能
{printf("
\n没有您所要修改的记录-Norecords"
G'
Save();
//存盘功能
//退出功能
exit(0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言