资源描述
C语言课程设计报告
姓 名:都鹏
班 号: 031102
学 号: 20101003091
院 系:材化学院
专 业:应用化学
指导教师:吴杰
成 绩:
2012 年 7 月
目录
一. 题目要求
二. 需求分析
三. 详细设计
1.主函数
2。各功能模块设计
四. 运行结果
五. 实习感想
六. 附录(源代码)
代理商信息管理系统
一、题目要求
基本功能:代理商信息的采集,浏览 ,查询;代理商品信息的输入,浏览,修改,查询,统计等。
二、 需求分析
(1) 实现代理商信息采集和代理商品信息输入功能,要提供结构体的输入操作;
(2) 实现统计功能,要提供相应的统计操作;
(3) 实现查询功能,要提供查找操作;
(4) 实现修改功能,要提供修改操作;
(5) 另外,还要提供键盘式选择菜单以实现功能选择。
三、总体设计
整个系统应设计为代理商信息采集,浏览,查询;代理商品信息的输入,浏览,修改,查询,统计等模块。数据结构采用结构体数组。
代理商信息管理系统
代理商信息采集
代理商信息浏览
代理商信息查询
代理商品信息输入
代理商品信息浏览
代理商品信息修改
代理商品信息查询
代理商品信息统计
四、 详细设计
1. 主函数
【流程图】
根据n的值调用各功能模块函数
输入n,判断n是否是1-?
显示一系列功能选项
NYY
【程序】
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;
case 6:n = add(n,agent); menu();break;
case 7:n=cancel(n,agent);menu();break;
default:printf("error\n”) ;menu();
}
}
return 0 ;
}
2。各功能模块设计
(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 ;
};
(2) 代理商数目添加模块
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 ;
}
(3) 删除代理商编号模块
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 ;
}
(4) 代理商信息统计模块
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—i;j++)
if(agent[j]。number<agent[j+1]。number)
{
t = agent[j];
agent[j] = agent[j+1] ;
agent[j+1] = t ;
}
}
void stat(int n,struct acmer agent[])
{
int k,i,x ;
printf("1:销售量超过k的代理商\n") ;
printf("2:排名前k的代理商\n");
printf("请选择要实现的统计功能,按4结束统计:\n”);
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”) ;
}
}
}
(5) 代理商信息修改模块
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");
}
(6) 代理商信息查询模块
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].agentnum) == 0)
{
flag = 0;
output(i,agent);
break;
}
if(flag == 1)
printf(”没有此人的信息\n");
}
}
五、 上机操作
下面是各个模块的界面图
1. 主菜单函数
2输入模块
3. 输出模块
4. 统计模块
5. 查找模块
6. 代理商品信息修改
7. 排名
8. 添加
9. 删除
六、 源程序
见附录
七、 总结
“实践是检验真理的唯一标准”,历史告诉们要注重实践.只有通过实践我们才能够了解到我们对知识到底掌握多少,我们还欠缺那些.通过时间我们又可以加深和巩固知识。C语言的实习正是这样一个过程。我的C语言课程学习的不够好,实习的时候很吃力。编写用的是结构化设计法,而我调试的时候发现了好多问题.有时候由于一个很小的错误导致程序的无法运行,让我明白了编程细心的重要性。通过该实例的学习,使我进一步理解和运用结构化程序设计的思想和方法,学会了用流程图表示算法.在老师和同学们的帮助下,我才可以清楚的知道我还有那些不足的地方。短短一周的时间里我学习到了许多以前课堂上没有学习到或者没有记住的东西,有初步了解了C语言的简单的应用,获益匪浅.再此我要郑重感谢老师和同学们,有你们热心的鼓励,耐心无私的帮助,我的这次实习才能得以顺利完成。
展开阅读全文