《代理商信息管理系统 c语言.docx》由会员分享,可在线阅读,更多相关《代理商信息管理系统 c语言.docx(15页珍藏版)》请在三一办公上搜索。
1、代理商信息管理系统 c语言C语言课程设计报告 班学号: 学号: 姓名: 指导教师: 年 月 C语言课程设计报告 题目要求 基本功能:代理商信息采集、浏览、查询;代理商信息的输入、浏览、修改、查询、统计等。 需求分析 实现代理商信息采集和代理商品信息输入功能,要提供结构体的输入操作;实现统计功能,要提供相应的统计操作;实现查询功能,要提供查找操作;实现修改弄能,要提供修改操作;另外,还要提供键盘式选择菜单以实现功能选择。 总体分析 整个系统应设计为代理商信息采集、浏览、查询;代理商信息输入、浏览、修改、查询、统计等模块。 数据结构 数据结构财通结构体数组。 算法设计 主菜单选择功能,通过判断输入
2、的选择进入相应的处理模块,包括数据输入、数据统计、数据查询、数据删除等。程序流程如下图所示: 数据结构设计 程序定义了一个运营商加入日期的结构体: struct data ; 定义了运营商信息的结构体: struct acmer ; int number; /运营商的编号; char name20; /运营商姓名; char agentnum20; /销售量; char phonum20; /电话号码; char goods20; /商品; struct data time; /加入日期; int year; /运营商加入的年份; int month; /运营商加入的月份; int day;
3、/运营商加入的日期; 模块设计 1.主函数 Main函数通过调用menu函数输入一个数字来选择用什么函数以实现相应功能,同时这个功能通过switch选择结构来调用: int main struct acmer agent100; 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;
4、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(errorn);menu;break; return
5、 0; 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 结束程序); 3.代理商信息添加模块 首先调用add函数以确定输入代理商的数目,然后用input函数来输入代理商信息: int add(int n,struct acmer agent) void input(int i,struct acmer
6、agent) printf(姓名:); scanf(%s,agenti.name); printf(代理商编号:); int k,i; printf(请输入添加代理商数目:); scanf(%d,&k); for(i=n+1;i=n+k;i+) return n+k; input(i,agent); scanf(%s,agenti.agentnum); printf(联系方式:); scanf(%s,agenti.phonum); printf(销售量:); scanf(%d,&agenti.number); printf(代理商品信息:); scanf(%s,agenti.goods); p
7、rintf(年:); scanf(%d,&agenti.time.year); printf(月:); scanf(%d,&agenti.time.month); printf(日:); scanf(%d,&agenti.time.day); 4.代理商信息浏览 代理商信息浏览使用了output函数,可以同时输出代理商以及商品的所有信息: void output(int i,struct acmer agent) printf(姓名:%s,agenti.name); printf(代理商编号:%s,agenti.agentnum); printf(联系方式:%s,agenti.phonum);
8、 printf(销售量:%d,agenti.number); printf(代理商品信息:%s,agenti.goods); 加盟时 printf(间:%d %d %dn,agenti.time.year,agenti.time.month,agenti.time.day); 5.数据删除 数据删除也是先读取数据文件中所有现存代理商信息。如果没有读到代理商则表示本身无记录,删除功能无法继续。 删除功能的实现主要在重新写文件时。通过比对需要删除的那条记录与已读取出的存放于结构体数组中的记录,如果相同,则跳过该条记录的重新写入,即重新写文件时,就会少了该条记录,于是完成删除功能。 int canc
9、el(int n,struct acmer agent) char x20; int i,j,flag,t; t=n; printf(请输入要删除代理商的编号:); while(scanf(%s,x)!=EOF) flag=0; if(strcmp(x,000)=0) break; for(i=1;i=n;i+) if(strcmp(x,agenti.agentnum)=0) if(flag=0) printf(没有找到代理商信息n); for(j=i+1;j=n;j+) agenti=agenti+1; flag=1; t-; break; return t; 6.统计功能 统计功能主要统计
10、销售量超过一定数量的运营商,使用了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;ik) output(i,agent);break; case 2:sort(n,agent); for
11、(i=1;i=k;i+) output(i,agent);break; default:printf(errorn); 7.修改模块 修改模块使用amend函数,当输入号码与已有号码一致时,输入新的商品信息,覆盖原有信息,若未发现输入号码,则输出“没有找到此人信息”。 void amend(int n,struct acmer agent) int i,k,flag=0; char x20; printf(请输入要修改的代理商编号:); scanf(%s,x); for(i=1;i=n;i+) if(flag=0) printf(没有找到此人信息n); if(strcmp(x,agenti.a
12、gentnum)=0) break; flag=1; printf(代理商品信息:); scanf(%s,agenti.goods); else printf(修改成功n); 8.查找模块 查找模块提供了两种查找方式,即按姓名查找和按编号查找。前者使用了if(strcmp(x,agenti.name)=0)语句,后者使用了if(strcmp(x,agenti.name)=0)语句来实现相应功能。 void search(int n,struct acmer agent) int k,i,flag=1; char x20; printf(1 按姓名查找); printf(2 按编号查找); pr
13、intf(请选择查找方式:); scanf(%d,&k); if(k=1) printf(请输入要查找代理商姓名: scanf(%s,x); for(i=1;i=n;i+) if(strcmp(x,agenti.name)=0) flag=0; output(i,agent); break; ); if(flag=1) printf(没有此人信息n); if(k=2) printf(请输入要查找代理商编号: scanf(%s,x); if(strcmp(x,agenti.name)=0) flag=0; output(i,agent); break; if(flag=1) printf(没有此
14、人信息n); 程序 #include #include struct data ); ; struct acmer ; void menu printf(1 输出n); printf(2 统计n); printf(3 查找n); printf(4 代理商信息修改n); printf(5 排名n); printf(6 添加n); int number; char name20; char agentnum20; char phonum20; char goods20; struct data time; int year; int month; int day; printf(7 删除n); p
15、rintf(0 结束程序); void input(int i,struct acmer agent) printf(姓名:); scanf(%s,agenti.name); printf(代理商编号:); scanf(%s,agenti.agentnum); printf(联系方式:); scanf(%s,agenti.phonum); printf(销售量:); scanf(%d,&agenti.number); printf(代理商品信息:); scanf(%s,agenti.goods); printf(年:); scanf(%d,&agenti.time.year); printf(
16、月:); scanf(%d,&agenti.time.month); printf(日:); scanf(%d,&agenti.time.day); void output(int i,struct acmer agent) printf(姓名:%s,agenti.name); printf(代理商编号:%s,agenti.agentnum); printf(联系方式:%s,agenti.phonum); printf(销售量:%d,agenti.number); printf(代理商品信息:%s,agenti.goods); printf(加盟时间:%d %d %dn,agenti.time
17、.year,agenti.time.month,agenti.time.day); int add(int n,struct acmer agent) int k,i; printf(请输入添加代理商数目:); scanf(%d,&k); for(i=n+1;i=n+k;i+) return n+k; input(i,agent); int cancel(int n,struct acmer agent) char x20; int i,j,flag,t; t=n; printf(请输入要删除代理商的编号: while(scanf(%s,x)!=EOF) flag=0; if(strcmp(x
18、,000)=0) break; for(i=1;i=n;i+) if(strcmp(x,agenti.agentnum)=0) for(j=i+1;j=n;j+) agenti=agenti+1; flag=1; t-; break; if(flag=0) printf(没有找到代理商信息n); ); return t; void sort(int n,struct acmer agent) void stat(int n,struct acmer agent) int k,i,x; printf(1:销售量超过k的代理商n); printf(2:排名前k的代理商n); printf(3:请选
19、择,按4结束统计:); struct acmer t; int i,j; for(i=1;i=n-1;i+) for(j=1;j=n-1;j+) if(agentj.numberagentj+1.number) t=agentj; agentj=agentj+1; agentj+1=t; while(scanf(%d,&x),x!=4) printf(请输入k:); scanf(%d,&k); switch(x) case 1:for(i=1;ik) output(i,agent);break; case 2:sort(n,agent); for(i=1;i=k;i+) output(i,ag
20、ent);break; default:printf(errorn); void amend(int n,struct acmer agent) int i,k,flag=0; char x20; printf(请输入要修改的代理商编号:); scanf(%s,x); for(i=1;i=n;i+) if(flag=0) printf(没有找到此人信息n); if(strcmp(x,agenti.agentnum)=0) break; flag=1; printf(代理商品信息:); scanf(%s,agenti.goods); else printf(修改成功n); void search
21、(int n,struct acmer agent) int k,i,flag=1; char x20; printf(1 按姓名查找); printf(2 按编号查找); printf(请选择查找方式:); scanf(%d,&k); if(k=1) printf(请输入要查找代理商姓名:); scanf(%s,x); for(i=1;i=n;i+) if(strcmp(x,agenti.name)=0) flag=0; output(i,agent); break; if(flag=1) printf(没有此人信息n); if(k=2) printf(请输入要查找代理商编号: scanf(
22、%s,x); if(strcmp(x,agenti.name)=0) flag=0; ); output(i,agent); break; if(flag=1) printf(没有此人信息n); int main struct acmer agent100; 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+) ); outpu
23、t(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(errorn);me
24、nu;break; return 0; 上机操作 1 数据源 2 编译、链接和运行 3 运行结果 下为各界面图: 主函数 输入板块 浏览板块 在主界面输入1后按enter键 统计板块 在主界面输入2后按enter键 查找板块 在主界面输入后按enter键 添加板块 小结 通过本次实习,我对C语言有了更一步的理解与掌握,这一切离不开老师的教育和同学们的帮助,所以我十分感谢我的老师。本次实习过程中,遇到了不少困难,但本着一颗执着的心,加上老师耐心的帮助,我克服了一个个困难,并最终完成了任务,所以这次的实习对我的帮助很大,不仅在学习上取得了更多了收货,也进一步锻炼了我克服困难的勇气和决心,另外我发现自己C语言的兴趣越来越浓厚,希望在以后的学习生活中能更多机会的接触C语言,并能对C语言有更深一步的了解和掌握。也许会遇到困难,但只要做好每一个步骤,保证每个步骤的准确性,就一定会取得成功。再次谢谢老师的教育和同学们的帮助。