




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北汽车工业学院电气与信息工程学院C 语言程序设计实训报告实训题目: 销售管理专业: 计算机科学与技术班级: 姓名: 成绩:1问题根据分析该系统应该包含的信息有:销售员的基本信息:编号,姓名,性别。销售产品的基本信息:产品代号,产品名称,销售价格。销售统计表的基本信息:销售员编号,产品编号,销售日期,销售数量。根据需求该系统应有以下功能:各种基本数据的录入。比如:销售员的基本信息。各种基本数据的修改。即:能对已录入的数据进行编辑,修改。能删除各种基本数据。基于各种数据的查询。例如输入销售员的编号,查询销售历史情况。数据导出:将查询的内容导入到指定的文件。2系统采用C语言实现,开发环境为VC。3.运行要求能录入四个销售员及销售信息。界面友好,操作方便。容错性强,导出数据时如果数据不存在则可以提示用户。一 总体设计1根据系统要求设计如下流程图退出菜单显示用户输入操作判断用户选择的操作执行相应的操作退出2.系统模块设计:根据系统功能设计以下模块销售管理系统功能选择销售员信息录入产品信息录入销售信息录入销售统计表录入销售信息的修改修改信息删除报表信息销售报表的查询保存退出系统主界面显示模块:完成系统菜单的提示。功能选择模块:根据用户的选择,完成其相应的功能。销售员的信息录入:完成用户从操作界面录入销售员信息,保存入系统的功能。产品信息的录入:录入产品信息,保存入系统。销售日期的录入:录入产品的销售日期,保存入系统。录入信息的修改:完成用户从界面输入通信录,在系统中查询定位,并将录入的数据保存入系统。信息的导出:完成用户从界面输入需要导出的销售员编号,读取该内容,并在界面上显示导入的内容。录入信息的删除:完成用户从界面输入需要的销售员,产品,销售日期,并将其从系统中删除。三.详细设计销售信息结构体数据项目名称数据项目系统表示数据类型数据长度备注销售员编号Aid字符串19产品编号Pid字符串11销售日期date结构体14销售数量num整型4产品名称Ne字符型19销售员名称Na字符型19采用链表结构保存录入信息,信息为:销售员编号,产品编号,销售日期,销售数量。没输入一比销售信息插入一个链表。每输入一比信息,则将该链表中插入一条记录。、销售报表1销售报表2销售报表3使用C语言创建结构体如下struct sellinfochar na20;char ne20;char aid19;char pid19;int num;char date10;struct sellinfo *next;sellinfo1;2。界面设计:主界面:根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。:3.模块实现主界面实现 :调用printf()函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用system(“cls”)函数,将前面的界面清空。功能性选择模块实现:接受从键盘输入菜单选择,判断并调用相应的功能函数,完成其对应的功能。实现功能选择。对应的实现函数 menu_select();销售信息录入模块实现:模块说明:从键盘输入销售信息,在动态存储区中创建销售信息的节点,遍历链表,将其插入链表的最后位置。对应函数 createsellinfoRec()按销售员的编号查询该销售员的销售记录模块说明:从键盘输入销售员的编号,遍历链表,找出与输入编号相同的销售员编号,然后输出模块流程:清屏输入要查找的销售员的编号遍历链表查找与输入的销售员的编号相同的记录输出查找到的信息对应函数:searchsellinfoRec()删除指定的报表模块说明:从键盘输入报表的销售员编号,便利链表,查找其中与输入相同编号的报表并删除。模块流程:清屏输入要查找的销售员的编号遍历链表查找与输入的销售员的编号相同的记录删除对应的报表对应函数:deletesellinfoRec()修改指定报表:从键盘输入报表的销售员编号,便利链表,查找其中与输入相同编号的报表并修改。模块流程:清屏输入要查找的销售员的编号遍历链表查找与输入的销售员的编号相同的记录修改对应的报表对应函数:modifysellinfoRec()插入报表:输入要插入的位置,找到插入点,插入。模块流程:清屏输入要插入的位置找到插入点插入对应函数:insertsellinfoRec()显示信息的实现:便利链表至最后,逐个输出链表所有信息。模块流程:清屏便利链表输出链表对应函数:listsellinfoRec()保存记录的实现:通过指针打开E盘文件文件,然后进行保存。模块流程:清屏通过指针打开E盘文件进行写入保存成功对应函数:writeInfo()。四、测试结果1、新建销售记录测试 输入 eee 2 333 333 2 111 2 www 222 2 运行结果:正常,信息已建立。查询销售记录测试:输入编号 1测试结果:正常显示,可以实现查询功能。修改销售信息测试:输入标号 1测试结果:修改成功,可以实现修改功能。插入销售记录测试:输入数据 aaa 2qqq 2 2 测试结果:运行正常,可以正常插入。删除功能测试:输入编号2运行结果:正常,可以删除指定数据。显示界面测试:测试结果:正常,可以显示界面。保存功能测试:测试结果:界面显示正常,可以在指定路径找到指定文件。五:实训总结:通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。 这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没用,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。 C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是 一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。 自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。感谢学校安排这次实训和老师的耐心讲解,让我学到了很多知识,在实训过程中,同学之间的互相探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同,也增加了同学老师之间的感情。希望以后还会有更多类似的实训课程,在有限的大学时间内学到更多的实用技能,为以后的工作打下一个良好的基础。六:源程序#include#include#include#include #include#define LEN sizeof(struct sellinfo)struct sellinfochar na20;char ne20;char aid19;char pid19;char num10;char date10;struct sellinfo *next;sellinfo1;struct sellinfo *head,*p1,*p2,*p3;/*函数声明*/void createsellinfoRec();/*新建销售统计表记录*/void searchsellinfoRec();/*查询销售统计表记录*/void modifysellinfoRec();/*修改销售统计表记录*/void insertsellinfoRec();/*插入销售统计表记录*/void deletesellinfoRec();/*删除销售统计表记录*/void listsellinfoRec();/*显示所有销售统计表信息*/void writeInfo();/*保存销售信息记录*/void exit0();/*退出*/int menu_select();/*主菜单*/*主函数*/int main() for(;)switch(menu_select()case 1: system(cls); createsellinfoRec();break;case 2: system(cls); searchsellinfoRec();break;case 3: system(cls); modifysellinfoRec();break; case 4: system(cls); insertsellinfoRec();break;case 5: system(cls); deletesellinfoRec();break;case 6: system(cls); listsellinfoRec();break;case 7: system(cls); writeInfo();break;case 0: system(cls); exit0();return 0;default :getchar();printf(n 选择错误,请正确输入你的选择(0-7),:n);printf(n 按任意键返回.n);getchar();getchar();system(cls);/*清屏*/ return 0;/*主菜单*/int menu_select()int c;printf(tt=菜单=n);printf(ttt1.新建销售统计记录nn);printf(ttt2.查询销售统计记录nn);printf(ttt3.修改销售统计记录nn);printf(ttt4.插入销售统计记录nn);printf(ttt5.删除销售统计记录nn);printf(ttt6.显示所有销售统计信息nn);printf(ttt7.保存销售信息记录nn);printf(ttt0.退出nnn);printf(t=n);printf(n ttt请输入你的选择(0-7):t);scanf(%d,&c);return c;/*新建销售统计表记录*/void createsellinfoRec()int n,flag,i;if(head!=0) p3=head;while( p3-next!=NULL)p3=p3-next;getchar();printf(n 销售统计表数据已存在,新建销售记录将接续在信息的后面,按任意键继续.:n);getchar();system(cls);/*清屏*/p3-next=p1=(struct sellinfo *)malloc(LEN);/*开辟一个新单元*/ else head=p1=(struct sellinfo *)malloc(LEN);/*开辟一个新单元*/p1-next =NULL;printf(nn 请输入要建立的销售统计信息数目n(1-10):t);doscanf(%d,&n);if(n10) printf(nn输入有误,请重新输入:t);while(n10);/*开始建立n条销售统计表信息记录*/printf(nnn 请按销售员姓名 编号 产品名称 编号 销售数量 销售日期 的形式输入%d条销售统计记录n,n);for(i=0;ina,p1-aid,p1-ne,p1-pid,p1-num,p1-date);p2=(struct sellinfo *)malloc(LEN);/*开辟一个新单元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(按任意键返回n);getchar();system(cls);/*清屏*/flag=1;/*清除保存记录标志*/*修改销售统计表记录*/void modifysellinfoRec()char aid19;int flag;if(head=NULL) getchar();printf(n 销售统计表数据库为空,请按任意键返回:n);getchar();system(cls);/*清屏*/return;p1=head;printf(nn请输入要修改记录的销售员编号:t);scanf(%s,aid);while(strcmp(aid,p1-aid )!=NULL&p1-next!=NULL)p1=p1-next ;if(strcmp(aid,p1-aid )=NULL)strcpy(p1-aid,aid);printf(nn 请输入该职工的姓名:n);scanf(%s,p1-na);printf(nn 请输入该职工所买产品的编号:n);scanf(%s,p1-pid);printf(nn 请输入该职工的销售日期:n);scanf(%s,p1-date);printf(nn 请输入该职工的销售数量:n);scanf(%s,p1-num);printf(n1项信息修改完毕);else printf(nn找不到该职工号信息!);getchar();printf(按任意键将返回:n);getchar();system(cls);/*清屏*/flag=1;/*清除保存记录标志*/return;/*插入销售统计表记录*/void insertsellinfoRec()int n=0,m,i,flag;p1=head;if(head=NULL) /*空数据库插入在第一个位置*/getchar();printf(n 职工信息数据库为空,只能插入第一个位置,按任意键将继续。:n);getchar();printf(nnn 请按销售员姓名 编号(都小于20位) 产品名称 编号(都小于20位) 销售数量 销售日期(格式例:)的形式输入%d条销售统计表记录n,n);printf(nn注:不同信息间以空格键隔开n);p1=head=(struct sellinfo *)malloc(LEN);/*开辟一个新单元*/head-next=NULL;scanf(%s%s%s%s%s%s, p1-na,p1-aid,p1-ne,p1-pid,p1-num,p1-date);printf(n1项信息输入完毕,按任意键返回.n);getchar();system(cls);/*清屏*/flag=1;/*清除保存记录标志*/return;/*数据库不为空时,分插入第一个位置,中间位置,最后一个位置三种情况*/don+;p1=p1-next; while(p1!=0);printf(职工信息数据库中共有%d条记录,请输入插入的位置n:n,n);doscanf(%d,&m);if(mn+1) printf(nn 输入范围有误,请重新输入希望插入的正确位置(1-%d):n,n+1);while(mn+1);if(m=1) /*插入在数据库的第一个位置*/p1=head;getchar();printf(nnn 请按销售员姓名 编号(都小于20位) 产品名称 编号(都小于20位) 销售数量 销售日期(格式例:)的形式输入%d条销售统计表记录n,n);printf(nn注:不同信息间以空格键隔开n);head=(struct sellinfo *)malloc(LEN);/*开辟一个新单元*/scanf(%s%s%s%s%s%s, head-na,head-aid,head-ne,head-pid,head-num,head-date);head-next =p1;printf(n1项信息输入完毕,按任意键返回.n);getchar();system(cls);/*清屏*/flag=1;/*清除保存记录标志*/return;if(m=n+1) /*插入在数据库的最后一个位置*/p1=head;while( p1-next!=NULL)p1=p1-next;printf(nnn 请按销售员姓名 编号(都小于20位) 产品名称 编号(都小于20位) 销售数量 销售日期(格式例:)的形式输入%d条销售统计表记录n,n);printf(nn注:不同信息间以空格键隔开n);p2=(struct sellinfo *)malloc(LEN);/*开辟一个新单元*/scanf(%s%s%s%s%s%s, p2-na,p2-aid,p2-ne,p2-pid,p2-num,p2-date);p2-next=NULL;p1-next =p2;printf(n1项信息输入完毕,按任意键返回.n);getchar();system(cls);/*清屏*/flag=1;/*清除保存记录标志*/return;/*插入在数据库的中间第n个位置*/p1=head;for(i=1;inext;printf(nnn 请按销售员姓名 编号(都小于20位) 产品名称 编号(都小于20位) 销售数量 销售日期(格式例:)的形式输入%d条销售统计表记录n,n);printf(nn注:不同信息间以空格键隔开n);p3=(struct sellinfo *)malloc(LEN);/*开辟一个新单元*/scanf(%s%s%s%s%s%s,p3-na,p3-aid,p3-ne,p3-pid,p3-num,p3-date);p3-next=p1;p2-next =p3;printf(n1项信息输入完毕,按任意键返回.n);getchar();system(cls);/*清屏*/flag=1;/*清除保存记录标志*/return;/*删除指定销售员编号的销售信息记录*/void deletesellinfoRec()char aid19;int flag;if(head=NULL) getchar();printf(n 销售信息数据库为空,按任意键将返回:n);getchar();system(cls);/*清屏*/return;p1=head;printf(nn请输入要删除销售记录的销售员编号:n);scanf(%s,aid);while(strcmp(aid,p1-aid )!=0&p1-next!=NULL)p2=p1;p1=p1-next ;if(strcmp(aid,p1-aid )=0)if(head-next=NULL)free(head);head=NULL;else if(head=p1)head=p1-next;free(p1);elsep2-next=p1-next;free(p1);printf(n删除完毕;);else printf(nn找不到该销售员编号!);getchar();printf(按任意键返回:n);getchar();system(cls);/*清屏*/flag=1;/*清除保存记录标志*/return;/*查询销售统计表记录*/void searchsellinfoRec()char aid19;p1=head;if(p1=NULL) printf(nn销售统计表数据库为空! n); printf(n 按任意键返回.n);getchar();getchar();system(cls);/*清屏*/return ;printf(nn 请输入销售员编号查询:n);scanf(%s,aid);while(p1!=NULL)if(strcmp(p1-aid,aid )=0)printf(t该销售员信息销售信息如下:n);printf(t 销售员姓名:);printf(%sn,p1-na );printf(t 销售员编号:);printf(%sn,p1-aid );printf(t 产品名称:);printf(%sn,p1-ne );printf(t 产品编号:);printf(%sn,p1-pid );printf(t销售日期:);printf(%sn,p1-date);printf(t销售数量:);printf(%sn,p1-num );break;else p1=p1-next ;if(p1=NULL) printf(nn找不到该职工信息!n); printf(n 按任意键返回.n);getchar();getchar();system(cls);/*清屏*/*显示所有销售统计表信息*/void listsellinfoRec()if(head=NULL) printf(n数据库中没有销售统计记录信息,按任意键返回。n);getchar();getchar();system(cls);return;printf(n全部职工信息如下:n);printf(n销售员姓名编号产品名称编号销售数量销售日期nn);p1=head;while(p1!=NULL)printf(%stt%st%stt%st%stt%sn,p1-na,p1-aid,p1-ne,p1-pid,p1-num,p1-date );p1=p1-next;printf(n按任意键返回!.n);getchar();getchar();system(cls);/*清屏*/*保存职工记录*/void writeInfo()int flag;FILE *fp;/*定义文件指针*/if(head=NULL) printf(n数据库中没有职工信息,按任意键返回。n);getchar(); getchar();system(cls);return;if(flag=0) printf(n数据库中职工信息已保存过,按任意键返回。n);getchar(); getchar();system(cls);return;if(fp=fopen(E:zc.txt,w)=NULL)/*打开文件*/printf(n数据库中职工信息无法保存,按任意键返回。n);getchar(); getchar();system(cls);return;p1=head;while(p1!=NULL)fprintf(fp,t%st%st%st%st%st%sn,p1-na,p1-aid,p1-ne,p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业单位工考课件
- 工艺产品技术合作开发协议书6篇
- 结肠癌根治术基础护理
- 2025年江西省成人高等学校招生考试地理+历史复习题及答案
- 《琵琶行》课件教学课件
- 质检员年终总结格式
- 2025房屋租赁合同协议范例
- 公司收购风控法务课件
- 装修项目年终总结
- 环境设计考察汇报
- 桥式起重机主要结构与原理讲解
- 【化学校本课程】《让化学走进生活》校本课程
- 新浪微博研究报告
- 高等数学(上册)
- 平面镜成像-说课
- 通信工程安全员考试题库案例题汇总
- 频谱监测及瞬态信号捕获技术课件
- 宣城万里纸业有限公司年产15万吨高强度瓦楞包装用纸及5万吨纱管纸技改项目环境影响报告书
- 贵州某二级公路施工组织设计KK
- 推广普通话课件
- GB/T 16714-2007连续式粮食干燥机
评论
0/150
提交评论