资源描述
C语言课程设计汇报
姓 名: 全部 鹏
班 号: 031102
学 号: 1003091
院 系: 材化学院
专 业: 应用化学
指导老师: 吴 杰
成 绩:
年 7 月
目 录
一. 题目要求
二. 需求分析
三. 具体设计
1.主函数
2.各功效模块设计
四. 运行结果
五. 实习感想
六. 附录(源代码)
代理商信息管理系统
一、题目要求
基础功效:代理商信息采集,浏览 ,查询;代理商品信息输入,浏览,修改,查询,统计等。
二、 需求分析
(1) 实现代理商信息采集和代理商品信息输入功效,要提供结构体输入操作;
(2) 实现统计功效,要提供对应统计操作;
(3) 实现查询功效,要提供查找操作;
(4) 实现修改功效,要提供修改操作;
(5) 另外,还要提供键盘式选择菜单以实现功效选择。
三、总体设计
整个系统应设计为代理商信息采集,浏览,查询;代理商品信息输入,浏览,修改,查询,统计等模块。数据结构采取结构体数组。
代理商信息管理系统
代理商信息采集
代理商信息浏览
代理商信息查询
代理商品信息输入
代理商品信息浏览
代理商品信息修改
代理商品信息查询
代理商品信息统计
四、 具体设计
1. 主函数
【步骤图】
依据n值调用各功效模块函数
输入n,判定n是否是1-?
显示一系列功效选项
N Y Y
【程序】
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语言简单应用,获益匪浅.再此我要郑重感谢老师和同学们,有你们热心激励,耐心无私帮助,我这次实习才能得以顺利完成.
展开阅读全文