防灾科技学院
实习报告书
防灾科技学院灾害信息工程系
20##年制
六、实习内容及步骤:(3000字左右)
1 ***管理系统
1.1. 系统开发思路(需求分析)(300字左右)
1.2. 数据结构设计(500字左右)
将使用的每个对象的结构体类型给出
1.3. 系统设计与实现
1.3.1主要函数设计
1.3.2系统主要流程图
1.3.3系统功能设计与实现
......
1.4. 系统测试
给出测试数据和测试结果
1.5. 结论(300字左右)
1.5.1本次实习取得的成绩
1.5.2系统存在的问题
1.5.3总结
2 ***游戏
2.1. 系统开发思路(需求分析) (300字左右)
2.2. 数据结构设计(500字左右)
将使用的每个对象的结构体类型给出
2.3. 系统设计与实现
2.3.1主要函数设计
2.3.2系统主要流程图
2.3.3系统功能设计与实现
......
2.4. 系统测试
给出测试数据和测试结果
2.5. 结论(300字左右)
2.5.1本次实习取得的成绩
2.5.2系统存在的问题
2.5.3总结
要求:
1.文档为宋体小四号字体,1.5倍行距。
2.文档中所用图表编号方式与毕业设计格式相同。
3.每个章节要分页
第二篇:20xx暑假c语言实习报告3
手机通讯录管理系统设计
一、 实习的目的
加深对《C语言》课程所学知识的理解,进一步巩固C语言编程方法。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。
二、 课程设计的题目与要求
1、 题目:手机通讯录管理系统设计
注:要求整个系统设计为数据查看模块、数据添加模块、数据修改模块、数据删除模块。
[基本要求] 要能提供以下几种功能:
(1)查看功能:选择此功能时,列出下列三类选择:
A:办公类 B:个人类 C:商务类
(2)查询功能:当选中某类时,显示出此类所有数据中的姓名和电话号码
(3)添加数据功能:能录入新数据,每个结点包括:姓名,电话号码,分类(可能选项有:w为办公类 p为个人类 b为商务类),电子邮件。
例如: 杨春 135xxxxxxxx 商务类 chuny@126.com 当录入重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过50条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。
(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。
(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调。
【提示】
(1)需求分析
手机通讯录采用文件储存,因而要提供文件的输入/输出操作;要实现查看功能,需要提供显示操作;在增加新数据的过程中要检查是否有重复、储存空间是否已满,且录入的新数据能按递增的顺序自动进行条目编码,因而要提供查找、统计和排序操作;要提供修改、删除和自动调整编号功能;另外,还要提供键盘是选择菜单以实现功能选择。
(2)总体与结构
整个系统可以设计为数据查看模块、数据添加模块、数据修改模块、数据删除模块。建立结构体,结构体成员包括姓名、电话号码、分类、电子邮件。
三、程序的总体设计与分析
这个程序的综合性很强,需要用到函数的声明与调用,结构体的构建、文件的储存以及构建模块。首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。然后利用模块来分别实现程序的各个功能。各个模块用函数来实现。在通过主函数来判断输入字母,从而调动函数,实现所需功能。最后将输入的文件保存在文件里,以便重复使用。
根据题目的要求,需要构建的模块有:添加,查看,删除,修改,保存五个模块。在模块中通过调用各个函数来实现功能。
1、程序主框架如下:
四、分解程序---程序的组成
(1)、构建结构体,写入文件
FILE *fp;
int i;
struct address
{ char a[40]; ////email地址
};
struct ffriend
{ int num;
char name[20];
char kind[20];
long telephone;
struct address address;
}
friends[50];
(2)、构造显示模块
void Show(int j)
{
system("cls"); //实现分屏操作的函数
printf("\n\n\t编号-Nnumber: %3d",friends[j].num); printf("\n\t姓名-Name:%-20s",friends[j].name);
printf("\n\t性别-kind:%s",friends[j].kind);
printf("\n\t联系电话-Telephone:%-13ld",friends[j].telephone); printf("\n\temail-address:%-40s",friends[j].address.a); }
(3)、构造增加模块
void Append(int j)
{
system("cls"); //实现分屏操作的函数
friends[j].num=j;
printf("\n\t\t\t序号-Number : %d",j);
printf("\n\t\t\t姓名-Name : ");
scanf("%s",friends[j].name);
printf("\t\t\t类别-kind : ");
scanf("%s",&friends[j].kind);
printf("\t\t\t联系电话-telephone : ");
scanf("%ld",&friends[j].telephone);
while(friends[j].telephone<0||friends[j].telephone>16000000000) {
printf("电话号码不合法!请重新输入:");
scanf("%ld",&friends[j].telephone);
}
printf("\t\t\temail-Address : ");
scanf("%s",friends[j].address.a);
getchar();
}
(4)、构造删除模块
void Delete()
{
int k;int j;
system("cls");
printf("\n\tDelete 序号-Number : ");
scanf("%d",&k);
if(k<=i)
{
for(j=k;j<i+1;j++) /*插入位置后的元素顺序后移*/ {
strcpy(friends[j].name,friends[j+1].name); //*交换元素内容* strcpy(friends[j].kind,friends[j+1].kind);
friends[j].telephone=friends[j+1].telephone;
strcpy(friends[j].address.a,friends[j+1].address.a); }
i--;
}
else
{
printf("输入的序号太大!");
}
}
(5)构造修改模块
void Modify(int j)
{
system("cls"); //实现分屏操作的函数
Append(j);
}
(6)构造储存函数
void Save()
{
int i,j;
system("cls");
printf("\n\n\t\t请耐心等待,信息正在保存!\n");
printf("\n\n\n\n\t\t\tSaving");
for(i=0;i<20;i++)
{
Sleep(300);
printf(".");
}
printf("\n\n信息已经保存成功!\n");
fp=fopen("friend.txt","w"); //打开文件friend.txt for(j=1;j<=i;j++) {
fwrite(&friends[j],sizeof(struct ffriend),1,fp);
}
fclose(fp);
}
(7)、主程序---用switch语句判断输入者要使用的功能,然后调用函数,模块实现功能。
void main()
{
int j;char a;char x;
char grade;
char searchkind[20];
char searchname[20];
i--;
system("cls");
do
{
printf("\n\n\t\t\t=========================================\n"); printf("\t\t\t\t手机通讯录\n");
printf("\t\t\t\t功能选择\n");
printf("\t\t\t=========================================\n"); printf("\t\t\t A.查看*\n");
printf("\t\t\t B.增添*\n");
printf("\t\t\t C.删除*\n");
printf("\t\t\t D.查询*\n");
printf("\t\t\t E.修改*\n");
printf("\t\t\t F.保存*\n");
printf("\t\t\t=========================================\n");
printf("\t\t\n请选择(Choice)\n\n\t\t注:~h或A~H的字母:"); scanf("%c",&grade);
switch(grade)
{
case 'a':
case 'A': j=0;
while(getchar()!=0x1b&&j<=i)
{
Show(j++);
printf("\n\n请按回车键继续!");
}
while(getchar()==0x1b||j>i)
{
printf("\n\t空文档,无任何记录-Empty Note\n");
printf("\n\n请按回车键继续!");
getchar();
break;
}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'b':
case 'B':
while(i<=50)
{
i++;
Append(i);
printf("\t是否继续增加?(y/n)");
a=getchar();
if(a=='n')
break;
}
if(i==51)
printf("\n\t文档已满,无法增加记录-note full");
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'c':
case 'C':
Delete();
if(i<1)
printf("\n没有记录-No records\n");
printf("\n\n请按回车键继续!");
getchar();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'd':
case 'D':
system("cls");
printf("\n\t请输入要查询记录的相关类别: p.个人类 b.商务类 w.办公类"); //增添查询按列号的
scanf("%s",searchkind);
getchar();
for(j=0;j<=i;j++)
{
if(strcmp(searchkind,friends[j].kind)==0)
{
Show(j);
} getchar();}
break;
case 'e':
case 'E':
printf("\n\t请输入要修改记录的相关姓名:");
gets(searchname);
scanf("%s",searchname);
for(j=0;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0)
{
Modify(j);
} }
if(i<1)
{ printf("\n 没有您所要修改的记录-No records");
printf("\n 请按回车键继续!");
getchar();
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'f':
case 'F':
system("cls");
Save();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
default:
printf("\n\t输入有误,请输入正确的序列号!");
printf("\n请按回车键继续!");
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
}
}while(1);
}
整个程序的组成如上:写入文件的结构体、各函数模块和实现函数的主程序。由这三部分实现功能!
五、运行结果
(1)、主界面
(2)增加通讯录数据
(3)、按顺序查看通讯录
(4)、根据相关类别查询通讯录
(5)根据序列号删除通讯录名单
(6
)根据姓名修改通讯录资料
重新输入数据:
(7)保存文件信息