姓名:…学号:…
专业:… 班学号:…
院(系):… 指导教师:…
2014 年06 月
1
代理商信息管理系统
第一章
§1.1题目要求
基本功能:代理商信息采集、浏览、查询;代理商信息的输入、浏览、修改、查询、统计等。
§1.2需求分析
(1)实现代理商信息采集和代理商品信息输入功能,要提供结构体的输入操作;
(2)实现统计功能,要提供相应的统计操作;
(3)实现查询功能,要提供查找操作;
(4)实现修改功能,要提供修改操作;
(5)另外,还要提供键盘式选择菜单以实现功能选择。
(6)整个系统应设计为代理商信息采集、浏览、查询;代理商信息输入、浏览、修改、查询、统计等模块。
§1.3数据结构
数据结构设计:数据结构采用结构体数组。
程序定义了一个运营商加入日期的结构体:
struct data
{
int year; //运营商加入的年份;
int month; //运营商加入的月份;
int day; //运营商加入的日期;
};
定义了运营商信息的结构体:
struct acmer
{
int number; //运营商的编号;
2
char name[20]; //运营商姓名;
char agentnum[20]; //销售量;
char phonum[20]; //电话号码;
char goods[20]; //商品;
struct data time; //加入日期;
};
§1.4算法设计
主菜单选择功能,通过判断输入的选择进入相应的处理模块,包括数据输入、数据统计、数据查询、数据删除等。
总体设计:整个系统应设计为代理商信息采集,浏览,查询;代理商品信息的输入,浏览,修改,查询,统计等模块。数据结构采用结构体数组。
第二章模块设计
§2.1主函数
3 Main函数通过调用menu函数输入一个数字来选择用什么函数以实现相应功能,同时这个功能通过switch选择结构来调用:[流程图]
int main()
{
struct acmer agent[100] ;
int n, i, k ;
printf("请输入要统计的代理商数目:") ;
scanf("%d", &n) ;
printf("请输入代理商信息:\n") ;
for(i = 1 ; i <= n ; i++)
input(i, agent) ;
menu();
while(scanf("%d", &k),k!=0)
{
switch(k)
{
case 1:for(i = 1;i <= n ; i++)
{output(i, agent);}menu();break;
case 2:stat(n,agent);menu();break;
case 3:search(n,agent);menu();break;
case 4:amend(n,agent);menu();break;
case 5:sort(n,agent);
for(i = 1;i <= n ; i++)
{
printf("[%d]",i);
output(i, agent);
} menu();break;
4
case 6:n = add(n,agent); menu();break;
case 7:n=cancel(n,agent);menu();break;
default:printf("error\n") ;menu();
}
}
return 0 ;
}
§2.2 menu函数
Menu函数是用来辅助main函数提供键盘是菜单以实现选择功能的:
void menu()
{
printf("1 输出\n");
printf("2 统计\n");
printf("3 查找\n");
printf("4 代理商信息修改\n");
printf("5 排名\n");
printf("6 添加\n");
printf("7 删除\n");
printf("0 结束程序");
}
§2.3 代理商信息输入添加模块
§2.3.1输入模块:但看各数据信息,数字、年、月、日可以用整型,而姓名、代理商编号、联系方式、销售量可以用字符型数组。数据信息存放在文件中,一条记录对应一个代理商,既符合习惯也方便信息管理.
把年月日作为结构体成员,存放在data结构体中,把姓名、代理商编号、联系方式、销售量、代理商品信息作为另一个结构体成员,存放在acmer结构体中。
struct data
{
int year ;
int month ;
int day ;
} ;
struct acmer
{
int number ;
char name[20] ;
char agentnum[20] ;
char phonum[20] ;
char goods[20];
struct data time ;
5 };
§2.3.2添加模块:首先调用add函数以确定输入代理商的数目,然后用input函数来输入代理商信息:
int add(int n,struct acmer agent[])
{
int k,i;
printf("请输入添加代理商数目:");
scanf("%d",&k);
for(i=n+1;i<=n+k;i++)
{
input(i,agent);
}
return n+k;
void input(int i,struct acmer agent[])
{
printf("姓名:");
scanf("%s",agent[i].name);
printf("代理商编号:");
scanf("%s",agent[i].agentnum);
printf("联系方式:");
scanf("%s",agent[i].phonum);
printf("销售量:");
scanf("%d",&agent[i].number);
printf("代理商品信息:");
scanf("%s",agent[i].goods);
printf("年:");
scanf("%d",&agent[i].time.year);
printf("月:");
scanf("%d",&agent[i].time.month);
printf("日:");
scanf("%d",&agent[i].time.day);
}
§2.4 代理商信息浏览
代理商信息浏览使用了output函数,可以同时输出代理商以及商品的所有信息:
void output(int i,struct acmer agent[])
{
printf("姓名:%s",agent[i].name);
6
printf("代理商编号:%s",agent[i].agentnum);
printf("联系方式:%s",agent[i].phonum);
printf("销售量:%d",agent[i].number);
printf("代理商品信息:%s",agent[i].goods);
printf("加盟时间:%d %d %d\n",agent[i].time.year,agent[i].time.month,agent[i].time.day);
}
§2.5 数据删除
数据删除也是先读取数据文件中所有现存代理商信息。如果没有读到代理商则表示本身无记录,删除功能无法继续。
删除功能的实现主要在重新写文件时。通过比对需要删除的那条记录与已读取出的存放于结构体数组中的记录,如果相同,则跳过该条记录的重新写入,即重新写文件时,就会少了该条记录,于是完成删除功能。
int cancel(int n,struct acmer agent[])
{
char x[20];
int i,j,flag,t;
t=n;
printf("请输入要删除代理商的编号(按000结束删除):");
while(scanf("%s",x)!=EOF)
{
flag=0;
if(strcmp(x,"000")==0)
break;
for(i=1;i<=n;i++)
if(strcmp(x,agent[i].agentnum)==0)
{
for(j=i+1;j<=n;j++)
agent[i]=agent[i+1];
flag=1;
t--;
break;
}
else
flag=1;
if(flag==1)
printf("没有找到代理商信息\n");
else
printf("删除成功(按000结束删除)\n");
}
return t;
}
7
§2.6 统计功能
统计功能主要统计销售量超过一定数量的运营商,使用了stat函数。若运营商超过给定数值k 则输出该运营商信息,若未超过则不输出。
void stat(int n,struct acmer agent[])
{
int k,i,x;
printf("1:销售量超过k的代理商\n");
printf("2:排名前k的代理商\n");
printf("3:请选择,按4结束统计:");
while(scanf("%d",&x),x!=4)
{
printf("请输入k:");
scanf("%d",&k);
switch(x)
{
case 1:for(i=1;i<=n;i++)
if(agent[i].number>k)
output(i,agent);break;
case 2:sort(n,agent);
for(i=1;i<=k;i++)
output(i,agent);break;
default:printf("error\n");
}
}
}
§2.7 修改模块
修改模块使用amend函数,当输入号码与已有号码一致时,输入新的商品信息,覆盖原有信息,若未发现输入号码,则输出“没有找到此人信息”。
void amend(int n,struct acmer agent[])
{
int i,k,flag=0;
char x[20];
printf("请输入要修改的代理商编号:");
scanf("%s",x);
for(i=1;i<=n;i++)
{
if(strcmp(x,agent[i].agentnum)==0)
8
{
flag=0;
printf("代理商品信息:");
scanf("%s",agent[i].goods);
break;
}
else
flag=1;
}
if(flag==1)
printf("没有找到此人信息\n");
else
printf("修改成功\n");
}
§2.8 查找模块
查找模块提供了两种查找方式,即按姓名查找和按编号查找。前者使用了if(strcmp(x,agent[i].name)==0)语句,后者使用了if(strcmp(x,agent[i].name)==0)语句来实
现相应功能。[流程图]
9 void search(int n,struct acmer agent[])
{
int k,i,flag=1;
char x[20];
printf("1 按姓名查找");
printf("2 按编号查找");
printf("请选择查找方式:");
scanf("%d",&k);
if(k==1)
{
printf("请输入要查找代理商姓名:");
scanf("%s",x);
for(i=1;i<=n;i++)
if(strcmp(x,agent[i].name)==0)
{
flag=0;
output(i,agent);
break;
}
if(flag==1)
printf("没有此人信息\n");
}
if(k==2)
{
printf("请输入要查找代理商编号:");
scanf("%s",x);
if(strcmp(x,agent[i].name)==0)
{
flag=0;
output(i,agent);
break;
}
if(flag==1)
printf("没有此人信息\n");
}
}
第三章程序
§3.1 上机操作
10
1.数据源
2.编译、链接和运行3.运行结果
下为各界面图:
1、主函数菜单
2、输入模块
3、输出浏览模块
11
4、统计模块
5、查找模块
6、信息修改模块
12
7、排名(排序)模块
8、添加模块
9、删除模块
§3.2 完整程序
#include
#include
struct data
{
int year;
int month;
int day;
};
struct acmer
{
int number;
char name[20];
char agentnum[20];
char phonum[20];
char goods[20];
struct data time;
13
};
void menu()
{
printf("1 输出\n");
printf("2 统计\n");
printf("3 查找\n");
printf("4 代理商信息修改\n");
printf("5 排名\n");
printf("6 添加\n");
printf("7 删除\n");
printf("0 结束程序");
}
void input(int i,struct acmer agent[])
{
printf("姓名:");
scanf("%s",agent[i].name);
printf("代理商编号:");
scanf("%s",agent[i].agentnum);
printf("联系方式:");
scanf("%s",agent[i].phonum);
printf("销售量:");
scanf("%d",&agent[i].number);
printf("代理商品信息:");
scanf("%s",agent[i].goods);
printf("年:");
scanf("%d",&agent[i].time.year);
printf("月:");
scanf("%d",&agent[i].time.month);
printf("日:");
scanf("%d",&agent[i].time.day);
}
void output(int i,struct acmer agent[])
{
printf("姓名:%s",agent[i].name);
printf("代理商编号:%s",agent[i].agentnum);
printf("联系方式:%s",agent[i].phonum);
printf("销售量:%d",agent[i].number);
printf("代理商品信息:%s",agent[i].goods);
printf("加盟时间:%d %d %d\n",agent[i].time.year,agent[i].time.month,agent[i].time.day);
}
int add(int n,struct acmer agent[])
{
int k,i;
printf("请输入添加代理商数目:");
14
scanf("%d",&k);
for(i=n+1;i<=n+k;i++)
{
input(i,agent);
}
return n+k;
}
int cancel(int n,struct acmer agent[])
{
char x[20];
int i,j,flag,t;
t=n;
printf("请输入要删除代理商的编号(按000结束删除):");
while(scanf("%s,x")!=EOF)
{
flag=0;
if(strcmp(x,"000")==0)
break;
for(i=1;i<=n;i++)
if(strcmp(x,agent[i].agentnum)==0)
{
for(j=i+1;j<=n;j++)
agent[i]=agent[i+1];
flag=1;
t--;
break;
}
if(flag==0)
printf("没有找到代理商信息\n");
}
return t;
}
void sort(int n,struct acmer agent[])
{
struct acmer t;
int i,j;
for(i=1;i<=n-1;i++)
for(j=1;j<=n-1;j++)
if(agent[j].number { t=agent[j]; agent[j]=agent[j+1]; agent[j+1]=t; } 15 } void stat(int n,struct acmer agent[]) { int k,i,x; printf("1:销售量超过k的代理商\n"); printf("2:排名前k的代理商\n"); printf("3:请选择,按4结束统计:"); while(scanf("%d",&x),x!=4) { printf("请输入k:"); scanf("%d",&k); switch(x) { case 1:for(i=1;i<=n;i++) if(agent[i].number>k) output(i,agent);break; case 2:sort(n,agent); for(i=1;i<=k;i++) output(i,agent);break; default:printf("error\n"); } } } void amend(int n,struct acmer agent[]) { int i,k,flag=0; char x[20]; printf("请输入要修改的代理商编号:"); scanf("%s",x); for(i=1;i<=n;i++) { if(strcmp(x,agent[i].agentnum)==0) { flag=1; printf("代理商品信息:"); scanf("%s",agent[i].goods); } break; } if(flag==0) printf("没有找到此人信息\n"); else printf("修改成功\n"); } 16 void search(int n,struct acmer agent[]) { int k,i,flag=1; char x[20]; printf("1 按姓名查找"); printf("2 按编号查找"); printf("请选择查找方式:"); scanf("%d",&k); if(k==1) { printf("请输入要查找代理商姓名:"); scanf("%s",x); for(i=1;i<=n;i++) if(strcmp(x,agent[i].name)==0) { flag=0; output(i,agent); break; } if(flag==1) printf("没有此人信息\n"); } if(k==2) { printf("请输入要查找代理商编号:"); scanf("%s",x); for(i=1;i<=n;i++) if(strcmp(x,agent[i].name)==0) { flag=0; output(i,agent); break; } if(flag==1) printf("没有此人信息\n"); } } int main() { struct acmer agent[100]; int n,i,k; printf("请输入要统计的代理商数目:"); scanf("%d",&n); printf("请输入代理商信息:\n"); 17 for(i=1;i<=n;i++) input(i,agent); menu(); while(scanf("%d",&k),k!=0) { switch(k) { case 1:for(i=1;i<=n;i++) {output(i,agent);}menu();break; case 2:stat(n,agent);menu();break; case 3:search(n,agent);menu();break; case 4:amend(n,agent);menu();break; case 5:sort(n,agent); for(i=1;i<=n;i++) { printf("[%d]",i); output(i,agent); } menu();break; case 6:n=add(n,agent);menu();break; case 7:cancel(n,agent);menu();break; default:printf("error\n");menu();break; } } return 0; } §3.3 小结 通过本次实习,我对C语言有了更一步的理解与掌握,这一切离不开老师的教育和同学们的帮助,所以我十分感谢我的老师。本次实习过程中,遇到了不少困难,但本着一颗执着的心,加上老师耐心的帮助,我克服了一个个困难,并最终完成了任务,所以这次的实习对我的帮助很大,不仅在学习上取得了更多了收获,也进一步锻炼了我克服困难的勇气和决心,另外我发现自己C语言的兴趣越来越浓厚,希望在以后的学习生活中能更多机会的接触C语言,并能对C语言有更深一步的了解和掌握。也许会遇到困难,但只要做好每一个步骤,保证每个步骤的准确性,就一定会取得成功。再次谢谢老师的教育和同学们的帮助。 遥感图像处理课程实习报告 学生姓名:王蜀越 班学号: 学号: 指导教师:王红平、许凯 中国地质大学信息工程学院 2017年7月1日 目录 目录 ............................................................................................................................................... - 1 - 实习一:影像融合........................................................................................................................ - 2 - 1.1【实习目的】 (2) 1.2【实习步骤】 (2) 1.3【实习过程】 (2) 实习二:几何校正........................................................................................................................ - 6 - 2.1【实习内容】 (6) 2.2【实习步骤】 (6) 2.3【实习过程】 (6) 实习三:影像分类(一).......................................................................................................... - 10 - 3.1【实习内容】 (10) 3.2【实习步骤】 (10) 3.3【实习过程】 (10) 实习四:影像分类(二).......................................................................................................... - 14 - 4.1【实习内容】 (14) 4.2【实习步骤】 (14) 4.3【实习过程】 (14) 心得与感想 ................................................................................................................................. - 18 - C程序课程设计报告 --手机通讯录管理系统 姓名:谢骏 学院:珠宝学院 学号:649 班级:141082 一课程设计目的和内容概述 1.目的:加深对《C语言》课程所学知识的理解,进一步巩固C语言编程方法。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。 2.内容:设计一个简易的手机通讯录管理系统。该题目要求在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等。 其中结构体,函数的调用,算法的设计是尤为重要的。 二题目 手机通讯录管理系统。 [问题描述] 该系统模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 [基本要求] 要能提供以下几种功能: (1)查看功能:选择此功能时,列出下列三类选择: A:办公类B:个人类C:商务类 (2)当选中某类时,显示出此类所有数据中的姓名和电话号码 (3)添加数据功能:能录入新数据,每个结点包括:姓名,电话号码,分类(可能选项有:w为办公类p为个人类b为商务类),电子邮件。例如:杨春商务类 当录入重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 三程序设计 1.总体设计 首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。然后利用模块来分别实现程序的各个功能。各个模块用函数来实现。在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。最后将输入的文件保存在文件里,以便重复使用。 2.详细设计 设计报告 一,实验目的: 通过上机实习,熟练掌握循环语句、选择语句、指针以及结构体的运用技巧。在实习中通过实际操作,编写程序,发现问题,最后解决问题,提升对c语言实用性的理解,在实践中巩固各知识点。 C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点,上机实习可以帮助我们更好地理解这种结构式的中级语言以及其各式各样的数据类型和高效率的运算程序,为我们进一步学习C++打下坚实基础。 同时,在实习过程中,通过互相发现问题,共同解决问题,不仅锻炼了我们的合作能力,而且也让我们发现了一些自己的个人误区以及其他人容易犯的错误,从而在今后的学习中更加谨慎,达到事半功倍的效果;通过询问老师,也让我们养成了不耻下问的好习惯,这将很有利于以后的学习。 闲乐-一个人闲。不如大家一块儿乐二,总体设计: 1,学生成绩排名 1,流程图: 假 <通过冒泡法对数组进行排序> <测试时由于循环语句循环次数的错误导致部分数据没有排序,修改FOR语言中的条件即可调试成功> 2,程序: #include<> int main() { i nt a[11],i,j,t,b,c,temp1,temp2,temp3;中国地质大学遥感图像处理上机实习报告
C语言课程设计报告—手机通讯录管理系统
C语言实习报告