湖北汽车工业学院电气与信息工程学院c语言实训报告.docx
- 文档编号:25820370
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:29
- 大小:462.80KB
湖北汽车工业学院电气与信息工程学院c语言实训报告.docx
《湖北汽车工业学院电气与信息工程学院c语言实训报告.docx》由会员分享,可在线阅读,更多相关《湖北汽车工业学院电气与信息工程学院c语言实训报告.docx(29页珍藏版)》请在冰豆网上搜索。
湖北汽车工业学院电气与信息工程学院c语言实训报告
湖北汽车工业学院电气与信息工程学院
《C语言程序设计》
实训报告
实训题目:
销售管理
专业:
计算机科学与技术
班级:
姓名:
成绩:
1.问题
根据分析该系统应该包含的信息有:
销售员的基本信息:
编号,姓名,性别。
销售产品的基本信息:
产品代号,产品名称,销售价格。
销售统计表的基本信息:
销售员编号,产品编号,销售日期,销售数量。
根据需求该系统应有以下功能:
各种基本数据的录入。
比如:
销售员的基本信息。
各种基本数据的修改。
即:
能对已录入的数据进行编辑,修改。
能删除各种基本数据。
基于各种数据的查询。
例如输入销售员的编号,查询销售历史情况。
数据导出:
将查询的内容导入到指定的文件。
2.系统
采用C语言实现,开发环境为VC。
3.
运行要求
能录入四个销售员及销售信息。
界面友好,操作方便。
容错性强,导出数据时如果数据不存在则可以提示用户。
一.总体设计
1.根据系统要求设计如下流程图
退出
2.系统模块设计:
根据系统功能设计以下模块
销售管理系统
功能选择
销售员信息录入
产品信息录入
销售信息录入
销售统计表录入
销售信息的修改
修改信息
删除报表信息
销售报表的查询
保存退出系统
主界面显示模块:
完成系统菜单的提示。
功能选择模块:
根据用户的选择,完成其相应的功能。
销售员的信息录入:
完成用户从操作界面录入销售员信息,保存入系统的功能。
产品信息的录入:
录入产品信息,保存入系统。
销售日期的录入:
录入产品的销售日期,保存入系统。
录入信息的修改:
完成用户从界面输入通信录,在系统中查询定位,并将录入的数据保存入系统。
信息的导出:
完成用户从界面输入需要导出的销售员编号,读取该内容,并在界面上显示导入的内容。
录入信息的删除:
完成用户从界面输入需要的销售员,产品,销售日期,并将其从系统中删除。
三.详细设计
销售信息结构体
数据项目名称
数据项目系统表示
数据类型
数据长度
备注
销售员编号
Aid
字符串
19
产品编号
Pid
字符串
11
销售日期
date
结构体
14
销售数量
num
整型
4
产品名称
Ne
字符型
19
销售员名称
Na
字符型
19
采用链表结构保存录入信息,信息为:
销售员编号,产品编号,销售日期,销售数量。
没输入一比销售信息插入一个链表。
每输入一比信息,则将该链表中插入一条记录。
、
销售报表1
销售报表2
销售报表3
使用C语言创建结构体如下
structsellinfo
{charna[20];
charne[20];
charaid[19];
charpid[19];
intnum;
chardate[10];
structsellinfo*next;
}sellinfo1;
2。
界面设计:
主界面:
根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将
在每个菜单前显示该菜单项对应的数字
用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相
应的操作,完成后,回到主界面。
:
3.模块实现
主界面实现:
调用printf()函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用system(“cls”)函数,将前面的界面清空。
功能性选择模块实现:
接受从键盘输入菜单选择,判断并调用相应的功能函数,完成其对应的功能。
实现功能选择。
对应的实现函数menu_select();
销售信息录入模块实现:
模块说明:
从键盘输入销售信息,在动态存储区中创建销售信息的节点,遍历链表,将其插入链表的最后位置。
对应函数createsellinfoRec()
按销售员的编号查询该销售员的销售记录
模块说明:
从键盘输入销售员的编号,遍历链表,找出与输入编号相同的销售员编号,然后输出模块流程:
对应函数:
searchsellinfoRec()
删除指定的报表
模块说明:
从键盘输入报表的销售员编号,便利链表,查找其中与输入相同编号的报表并删除。
模块流程:
对应函数:
deletesellinfoRec()
修改指定报表:
从键盘输入报表的销售员编号,便利链表,查找其中与输入相同编号的报表并修改。
模块流程:
对应函数:
modifysellinfoRec()
插入报表:
输入要插入的位置,找到插入点,插入。
模块流程:
对应函数:
insertsellinfoRec()
显示信息的实现:
便利链表至最后,逐个输出链表所有信息。
模块流程:
对应函数:
listsellinfoRec()
保存记录的实现:
通过指针打开E盘文件文件,然后进行保存。
模块流程:
对应函数:
writeInfo()。
四、测试结果
1、新建销售记录测试
输入eee2333333211111111
1112www222211111111
运行结果:
正常,信息已建立。
查询销售记录测试:
输入编号1
测试结果:
正常显示,可以实现查询功能。
修改销售信息测试:
输入标号1
测试结果:
修改成功,可以实现修改功能。
插入销售记录测试:
输入数据aaa2qqq22222222
测试结果:
运行正常,可以正常插入。
删除功能测试:
输入编号2
运行结果:
正常,可以删除指定数据。
显示界面测试:
测试结果:
正常,可以显示界面。
保存功能测试:
测试结果:
界面显示正常,可以在指定路径找到指定文件。
五:
实训总结:
通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。
不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没用,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。
自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。
通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。
其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。
自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。
感谢学校安排这次实训和老师的耐心讲解,让我学到了很多知识,在实训过程中,同学之间的互相探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同,也增加了同学老师之间的感情。
希望以后还会有更多类似的实训课程,在有限的大学时间内学到更多的实用技能,为以后的工作打下一个良好的基础。
六:
源程序
#include
#include
#include
#include
#include
#defineLENsizeof(structsellinfo)
structsellinfo
{charna[20];
charne[20];
charaid[19];
charpid[19];
charnum[10];
chardate[10];
structsellinfo*next;
}sellinfo1;
structsellinfo*head,*p1,*p2,*p3;
/*函数声明*/
voidcreatesellinfoRec();/*新建销售统计表记录*/
voidsearchsellinfoRec();/*查询销售统计表记录*/
voidmodifysellinfoRec();/*修改销售统计表记录*/
voidinsertsellinfoRec();/*插入销售统计表记录*/
voiddeletesellinfoRec();/*删除销售统计表记录*/
voidlistsellinfoRec();/*显示所有销售统计表信息*/
voidwriteInfo();/*保存销售信息记录*/
voidexit0();/*退出*/
intmenu_select();/*主菜单*/
/*主函数*/
intmain()
{
for(;;)
{switch(menu_select())
{
case1:
system("cls");createsellinfoRec();break;
case2:
system("cls");searchsellinfoRec();break;
case3:
system("cls");modifysellinfoRec();break;
case4:
system("cls");insertsellinfoRec();break;
case5:
system("cls");deletesellinfoRec();break;
case6:
system("cls");listsellinfoRec();break;
case7:
system("cls");writeInfo();break;
case0:
system("cls");exit0();return0;
default:
{getchar();
printf("\n选择错误,请正确输入你的选择(0-7),:
\n");
printf("\n按任意键返回......\n");
getchar();
getchar();
system("cls");/*清屏*/
}
}
}
return0;
}
/*主菜单*/
intmenu_select()
{intc;
printf("\t\t==============菜单==============\n");
printf("\t\t\t1.新建销售统计记录\n\n");
printf("\t\t\t2.查询销售统计记录\n\n");
printf("\t\t\t3.修改销售统计记录\n\n");
printf("\t\t\t4.插入销售统计记录\n\n");
printf("\t\t\t5.删除销售统计记录\n\n");
printf("\t\t\t6.显示所有销售统计信息\n\n");
printf("\t\t\t7.保存销售信息记录\n\n");
printf("\t\t\t0.退出\n\n\n");
printf("\t===================================================\n");
printf("\n\t\t\t请输入你的选择(0-7):
\t");
scanf("%d",&c);
returnc;
}
/*新建销售统计表记录*/
voidcreatesellinfoRec()
{intn,flag,i;
if(head!
=0){
p3=head;
while(p3->next!
=NULL)
p3=p3->next;
getchar();
printf("\n销售统计表数据已存在,新建销售记录将接续在信息的后面,按任意键继续......:
\n");
getchar();
system("cls");/*清屏*/
p3->next=p1=(structsellinfo*)malloc(LEN);/*开辟一个新单元*/
}
elsehead=p1=(structsellinfo*)malloc(LEN);/*开辟一个新单元*/
p1->next=NULL;
printf("\n\n请输入要建立的销售统计信息数目n(1-10):
\t");
do{scanf("%d",&n);
if(n<1||n>10)
printf("\n\n输入有误,请重新输入:
\t");
}while(n<1||n>10);
/*开始建立n条销售统计表信息记录*/
printf("\n\n\n请按销售员姓名编号产品名称编号销售数量销售日期的形式输入%d条销售统计记录\n",n);
for(i=0;i { scanf("%s%s%s%s%s%s",p1->na,p1->aid,p1->ne,p1->pid,p1->num,p1->date); p2=(structsellinfo*)malloc(LEN);/*开辟一个新单元*/ p1->next=p2; p3=p1; p1=p2; p1->next=NULL; } free(p2); p3->next=NULL; printf("按任意键返回\n"); getchar(); system("cls");/*清屏*/ flag=1;/*清除保存记录标志*/ } /*修改销售统计表记录*/ voidmodifysellinfoRec() {charaid[19];intflag; if(head==NULL) {getchar(); printf("\n销售统计表数据库为空,请按任意键返回: \n"); getchar(); system("cls");/*清屏*/ return; } p1=head; printf("\n\n请输入要修改记录的销售员编号: \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("\n\n请输入该职工的姓名: \n"); scanf("%s",p1->na); printf("\n\n请输入该职工所买产品的编号: \n"); scanf("%s",p1->pid); printf("\n\n请输入该职工的销售日期: \n"); scanf("%s",p1->date); printf("\n\n请输入该职工的销售数量: \n"); scanf("%s",p1->num); printf("\n1项信息修改完毕"); } else printf("\n\n找不到该职工号信息! "); getchar(); printf("按任意键将返回: \n"); getchar(); system("cls");/*清屏*/ flag=1;/*清除保存记录标志*/ return; } /*插入销售统计表记录*/ voidinsertsellinfoRec() {intn=0,m,i,flag; p1=head; if(head==NULL){/*空数据库插入在第一个位置*/ getchar(); printf("\n职工信息数据库为空,只能插入第一个位置,按任意键将继续。 : \n"); getchar(); printf("\n\n\n请按销售员姓名编号(都小于20位)产品名称编号(都小于20位)销售数量销售日期(格式例: 20110402)的形式输入%d条销售统计表记录\n",n); printf("\n\n注: 不同信息间以空格键隔开\n"); p1=head=(structsellinfo*)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; } /*数据库不为空时,分插入第一个位置,中间位置,最后一个位置三种情况*/ do{n++; p1=p1->next; }while(p1! =0); printf("职工信息数据库中共有%d条记录,请输入插入的位置n: \n",n); do{scanf("%d",&m); if(m<1||m>n+1)printf("\n\n输入范围有误,请重新输入希望插入的正确位置(1-%d): \n",n+1); }while(m<1||m>n+1); if(m==1){/*插入在数据库的第一个位置*/ p1=head; getchar(); printf("\n\n\n请按销售员姓名编号(都小于20位)产品名称编号(都小于20位)销售数量销售日期(格式例: 20110402)的形式输入%d条销售统计表记录\n",n); printf("\n\n注: 不同信息间以空格键隔开\n"); head=(structsellinfo*)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("\n\n\n请按销售员姓名编号(都小于20位)产品名称编号(都小于20位)销售数量销售日期(格式例: 20110402)的形式输入%d条销售统计表记录\n",n); printf("\n\n注: 不同信息间以空格键隔开\n"); p2=(structsellinfo*)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;i {p2=p1; p1=p1->next; } printf("\n\n\n请按销售员姓名编号(都小于20位)产品名称编号(都小于20位)销售数量销售日期(格式例: 20110402)的形式输入%d条销售统计表记录\n",n); printf("\n\n注: 不同信息间以空格键隔开\n"); p3=(structsellinfo*)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; } /*删除指定销售员编号的销售信息记录*/ voiddeletesellinfoRec() { charaid[19];intflag; if(head==NULL) {getchar(); printf("\n销售信息数据库为空,按任意键将返回: \n"); getchar(); system("cls");/*清屏*/ return; } p1=head; printf("\n\n请输入要删除销售记录的销售员编号: \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; } elseif(head==p1) {head=p1->next; free(p1); } else{p2-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖北 汽车工业 学院 电气 信息工程学院 语言 报告