湖北汽车工业学院电气与信息工程学院c语言实训报告.docx

上传人:b****7 文档编号:25820370 上传时间:2023-06-15 格式:DOCX 页数:29 大小:462.80KB
下载 相关 举报
湖北汽车工业学院电气与信息工程学院c语言实训报告.docx_第1页
第1页 / 共29页
湖北汽车工业学院电气与信息工程学院c语言实训报告.docx_第2页
第2页 / 共29页
湖北汽车工业学院电气与信息工程学院c语言实训报告.docx_第3页
第3页 / 共29页
湖北汽车工业学院电气与信息工程学院c语言实训报告.docx_第4页
第4页 / 共29页
湖北汽车工业学院电气与信息工程学院c语言实训报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

湖北汽车工业学院电气与信息工程学院c语言实训报告.docx

《湖北汽车工业学院电气与信息工程学院c语言实训报告.docx》由会员分享,可在线阅读,更多相关《湖北汽车工业学院电气与信息工程学院c语言实训报告.docx(29页珍藏版)》请在冰豆网上搜索。

湖北汽车工业学院电气与信息工程学院c语言实训报告.docx

湖北汽车工业学院电气与信息工程学院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-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1