C程序编程.docx
《C程序编程.docx》由会员分享,可在线阅读,更多相关《C程序编程.docx(19页珍藏版)》请在冰豆网上搜索。
C程序编程
淮北煤炭师范学院
C语言软件系列课程设计
客户信息管理系统
学院计算机科学与技术学院
学生姓名李朋
学号20081202044
指导企业姓名郑颖
2009年12月25日
目录
计算机信息管理的发展状况………………………………………………………4
3.客户信息管理系统的总体设计………………………………………………………5
3.1设计思想…………………………………………………………………………..6
3.2设计流程图………………………………………………………………………6
4.客户信息管理系统的详细设计……………………………………………………….6
4.1函数的简单介绍………………………………………………………………….6
4.2外部变量的声明………………………………………………………………….7
4.3主函数…………………………………………………………………………...7
4.4输入函数input......................................................................................................7
4.5输出函数output………………………………………………………………….8
4.6查找函数search………………………………………………………………….8
4.7删除函数del…………………………………………………………………….8
4.8排序函数line……………………………………………………………………8
4.9特殊类显示函数outputbykind…………………………………………………..8
5.客户信息管理系统的调试与测试…………………………………………………...8
5.1关于调试方法……………………………………………………………………….8
5.2调试过程…………………………………………………………………………….8
5.3设计测试过程中遇到的问题……………………………………………………….10
5.4测试结果总结……………………………………………………………………….11
6.源程序和注释………………………………………………………………………….11
7.总结…………………………………………………………………………………….15
第一章绪论
摘要:
计算机的诞生是人类科学技术发展史上的一个里程碑,它极大的增强了人类认识世界、改造世界的能力,并对社会和生活的各个领域产生了深远的影响,促进了当今社会从工业化向信息化发展的进程。
由于计算机具有速度快、进度高、存储容量大、逻辑判断能力强等特点,所以其应用领域非常的广泛。
按照计算机的领域来分主要有:
科学计算、数据处理、自动控制、人工智能等。
按照行业的角度来分计算机应用在制造业、商业、银行与证券业、交通运输业、办公自动化与电子政务、教育、医学、科学研究以及艺术与娱乐等中的应用。
制造业是计算机的传统应用领域,它起着减少工人数量、缩短生产周期、降低生产成本、提高企业效益的作用。
应用包括计算机辅助设计(CAD)、计算机辅助制造(CAM)以及计算机集成制造系统(CIMS)。
商业是计算机应用最为活跃的传统应用领域之一,特别是电子商务的发展从根本上改变了企业的供销模式和人们消费的模式,具有对计算机网络的依赖性、地域的高度广泛性、商务通信的快捷性、成本的低廉性、电子商务的安全性、系统的集成性的特点。
另外,计算机在其他领域也取得了十分重大的突破,如银行卡、电子政务、信息检索与保存、远程教育等。
计算机的发展与程序设计有着密切的关系。
程序设计语言是程序设计的工具,正确的应用程序设计语言表达算法,准确的运用设计语言,对计算机程序员是必须具备的。
而C语言则是程序语言的基础,因此采用C语言编写程序易于理解,掌握。
关键字:
计算机科学、计算机应用、电子商务、程序语言、CAD
第二章计算机信息管理的发展状况
专业背景与市场预测:
随着全球以信息技术为主导的科技革命进程的加快,人类社会逐步由工业社会进入信息社会。
信息技术是当代最具潜力的新的生产力,信息资源是经济和社会发展的重要战略资源。
信息化成为各国经济和科技竞争的制高点,信息化程度已成为衡量一个国家和地区现代化水平和综合实力的重要标志。
随着我国市场经济的迅速发展和加入WTO,企业信息化程度的要求越来越高,而现阶段计算机信息管理普及率并不高,企业中计算机资源得不到及时充分的利用,信息处理效率跟不上形势的发展,近几年我院多次组织了对LG曙光集团、伊莱克斯中意集团、湘财证券、三门软件公司、中国银行、中国平安保险公司、长沙友谊集团、通程控股等单位的人才需求调查,结果显示,对计算机信息管理专业人才需求越来越大。
被调查单位普遍反映且迫切需要善经营、会管理,同时能熟练把计算机运用到信息采集、处理与维护的高级管理人才。
毕业动向:
本文就计算机专业大客户供需现状和就业形势略作分析。
一、IT人才短缺
(1)世界IT人才短缺,需求理性调整
(2)我国IT人才总量严重不足
(3)IC人才、网络存储人才、电子商务人才、信息安全人才、游戏技术人才严重短缺
(4)在软件人才层次结构上,水平高的系统分析员和有行业背景的项目策划人员偏少,同时软件蓝领也比较缺乏。
二、市场需求旺盛
(1)行业需求稳中有变
社会对计算机人才需求总量稳中有增,毕业生就业岗位分布和岗位层次更加宽泛,需求主体也悄然变化。
机械、化工、冶金、石油、电力、造船、轻工、纺织、汽车、制药、物流等行业信息化步伐加大,对计算机专业大客户的需求持续增长。
我国计划在2010年底,实现中小学网络“校校通”,全部开设现代信息技术课。
2002年,全国约有专职和兼职计算机企业7万名,中小学教育信息化,预计需要新增相应师资20万
(2)企业需求格局形成
我国坚持“以信息化带动工业化”的方针,促进传统行业、骨干企业在结构调整和产品升级中积极应用信息技术。
全国3000家大型企业中,只有3.7%的企业信息化建设进入成熟阶段,国有企业吸纳毕业生潜力巨大。
有资料显示,我国企业信息化,网络工程师的人才需求缺口高达60万。
高新技术企业每年产值增长在20%以上,迅速发展和要求员工素质高的特点,成为吸收计算机专业大客户的主要企业单位。
(3)区域需求差异显著
北京市北方微电子产业基地投资跨度15年,投资金额300亿美元。
上海市将建设“微电子产业基地”,“十五”计划引进投资100亿美元。
深圳市更被誉为“新经济公司在全球最理想的五个根据地”之一。
国家在大连、济南、南京、杭州、广州、珠海、长沙、成都、西安等地兴建软件产业基地,软件产业迅猛发展。
沿海发达地区和区域中心城市大力发展以信息产业为主体的高新技术,为计算机专业大客户提供了广大的就业市场。
中西部地区信息产业发展的相对滞后性在一定程度上制约着当地高校计算机专业大客户的就业。
三、就业竞争激烈
(1)买方市场已经形成
(2)就业格局逐渐明朗
(3)岗位竞争日趋激烈
(4)就业影响愈加广泛
四、就业工作滞后
(1)疏通就业渠道
(2)加强就业指导
(3)提高客户素质
五、人才培养脱节
我国有1023所高校开设计算机专业,截止2003年底,我国大学和软件学院在校计算机专业客户总数为73.8万人。
在学历教育IT人才培养上,各类学校应体现层次性和交叉性,办出特色,为社会经济发展培养适用人才。
(1)研究生计算机人才培养重在工程
(2)本科计算机人才培养重在特色
(3)专科计算机人才培养重在实践
2.信息管理系统功能分析
管理信息系统除了具备信息系统的基本功能外,还具备预测、计划、控制和辅助决策特有功能。
具体是:
(1)数据处理功能。
包括数据收集和输入、数据传输、数据存储、数据加工和输出;
(2)预测功能。
运用现代数学方法、统计方法和模拟方法,根据过去的数据预测外来的情况;(3)计划功能。
根据企业提供的约束条件,合理地安排各职能部门的计划,按照不同的管理层,提供不同的管理层,提供相应的计划报告;(4)控制功能。
根据各职能部门提供的数据,对计划的执行情况进行检测、检测、比较0执行与计划的差异,对差异情况分析其原因;(5)辅助决策功能。
采用各种数学模型和所存储的大量数据,及时推倒出有关问题的最优解或满意解,辅助各级管理人员进行决策,以期合理利用人财物和信息资源,取得较大的经济效益。
第三章客户信息管理系统的总体设计
本系统采用C语言编程,实现以下几个功能:
1.输入记录
2.用指定格式显示全部记录
3.根据客户姓名查找记录
4.根据客户编号删除记录
5.按客户编号从小到大显示记录
6.按客户类型显示客户信息
基本信息:
客户编号、客户名称、客户类型(供应商、购货商)、联系电话、传真电话、E-mail
3.1设计思想
C语言是一个支持模块化程序设计的语言,它允许将一个大型程序分成多个小程序分别进行编译。
因此,本程序系统分成若干子程序,由main()调用各个子程序(函数)。
贯穿自顶向下、逐步细化的算法设计过程。
同时为了方便系统的参数调用,采取声明外部变量,子程序引用的方式传递参数。
而且定义了一个1.txt文档,用以存储临时的客户信息。
可以到C:
根目录下查询。
3.2设计流程图
结构体定义与指针Main()函数声明:
voidinputvoidoutputvoidsearch。
。
。
。
。
。
Input()输入函数output()输出函数search查找函数line()排序outputbykind
类别函数
第四章客户信息管理系统的详细设计
4.1函数的简单介绍
C程序是从主函数开始编译的。
主函数可以调用其他函数,函数不存在哪个大小问题,但是是可以嵌套的。
函数一般有两部分组成:
函数声明和函数定义:
一般函数声明:
[类型][名称][(参数类型,参数类型,。
。
。
。
。
。
。
)];
如intadd(inta,intb);
函数定义:
[类型][名称][(参数类型,参数类型,。
。
。
。
。
。
。
)]
{函数体:
Inta;
Intg;………..
}
4.2外部变量的声明在函数外部,无需标识符,直接声明的变量,统称为外部变量。
外部变量的作用域可是整个程序。
如本系统的外部变量声明:
structconsume*head,u;
变量声明时时可以进行初始化的。
但也可以不需要,当需不影响程序赋值。
4.3主函数主函数main()一般调用其他函数在其中进行编译。
程序一般由main()开始,返回main结束。
有的编译系统要求main()返回return0以告诉系统程序正常结束。
若非正常结束,一般编译系统会自己返回一个非0值以结束编译。
如ToubrC.有些编译系统则需要返回getch();如WIN-TC.
考虑到人机交互,采取人为选择功能模式。
从键盘上接受一个数字符,如’1’,则进入input函数:
switch(ch)
{
case'1':
input();break;/*是1进入输入函数*/
case'2':
output();break;/*是2进入输出函数*/
case'3':
search();break;/*是3进入查找函数*/
case'4':
del();break;/*是4进入删除函数*/
case'5':
line();break;/*是5进入排序函数*/
case'6':
outputbykind();break;/*是6进入特殊类显示函数*/
default:
flag=0;break;/*是其他字符,则退出编译*/
}
}
4.4输入函数input本程序为了可读性及参数传递的简单性考虑,采用设置外部变量的方法进行传递参数。
其他函数同样采取这个方式。
Input分析:
FILE*fp;
fp=fopen(“c:
\\1.txt”,”w”);
fprintf(fp,"%d%s%s%s%s\n",thisn->num,thisn->name,thisn->kind,thisn->tel,thisn->email);
fclose(fp);
以上程序是建立一个1.txt文档,并将客户的信息输入这个文档中。
要得到客户的信息,首先建立一个动态链表structconsume
其成员有num,name,kind,tel,tax,email
首先开辟一个空间,然后输入各个值,得到客户信息。
每完成一次客户信息输入,就会返回到主目录,以进行其他项要求。
4.5输出函数output
此函数功能是将内存中客户的信息全部显示出来。
因此,程序按照客户信息输入先后的顺序显示,将thisn=head,是将当前指针指向头指针,既链表的第一个结点的首地址。
而thisn=thisn->next是将下个结点的地址赋给当前指针,然后指针指向下一个结点,访问下个结点的信息。
如果原表是空的,那么输出:
thisisaemptylist!
然后返回主目录。
4.6查找函数search
本程序以客户的姓名为索引,查找客户信息。
定义一个字符数组变量name,从键盘接受要查询的客户姓名。
然后比较链表里的name值,若相等,则输出相关信息,否则不输出。
进入进一个结点查询。
4.7删除函数del
首先确立函数的流程。
从键盘上接收一个要删除的编号,然后就是与在链表里,能否找到一个相同的编号,若相同则删除该结点,否则不变。
重要的是如何找到这个结点。
有个方案:
1、先测试第一个结点是否是目标,若是,则将头指针指向第二个结点,head=thisn->next,释放thisn空间;
2、不符合1,用newn表示正在测试的结点,各个结点依次测试查找目标结点,找到后,让下一个结点的地址newn-next赋给thisn->next,释放newn空间。
4.8排序函数line
排序是较为高级的设计,采用冒泡排序法,两从循环。
循环次数可以通过比较结点thisn是否为零得到。
由于交换的双方是结点,因此在交换双方的数据后,要交换结点中的next值,这是很重要的,如果不交换,就会丢失结点信息。
另外,由于结点不是连续的,因此要让结点依次变化,就要用到thisn=thisn->next,newn=newn->next.这样可以让比较的双方依次后移,不会产生丢失结点的情况发生。
4.9特殊类显示函数outputbykind
这个设计比较简单,只要客户类型与要求查询的客户类型一致,就让其先显示,其他的后显示。
引用外部变量
应用外部变量
查找函数
输出函数
真
假
Thisn=thisn->next
输入姓名name
进入下一结点
输出thisn
假
真
空集
输出
第五章客户信息管理系统的调试与测试
5.1关于调试方法
在win-tc中,我们可以通过合理的编译部分程序,运行看看能否成功。
若不成功则修改原程序,否则进行一项调试。
5.2调试过程.
A、对功能1、2的测试
B.对功能3的测试:
C.对功能4、5、6的测试:
5.3设计、测试过程中遇到的问题
1.设计之初,对于临时运行的结果如何保存问题,进行了一番讨论,经过查阅资料,我们运用所掌握的知识创建了一个1.txt文档,目的是可以查阅一次运行的input结果,这样有助于文件的管理。
2.对于参数的传递问题,鉴于分工合作,我们通过定义一个外部变量,其他要利用这个变量的函数可以通过extern这个标识符进行变量的传递。
3.接受字符时 getchar()与gets()相差之处是前者只接受一个字符,因此要在其后加一个getchar()消除
4.程序运行时发现存在乱码,经查证是系统不支持中文所致,但不影响程序的运行。
5.本程序中排序最难,采用冒泡排序法,两层循环,同时交换结点数据和指针指向,保证结点的连接。
5.4测试结果总结
测试的结果说明本程序时正确的,基本可以实现目标要求。
第六章源程序与注释
/*HELLO.C--Hello,world*/
#include/*加载预处理命令*/
#include
#include
#include
structconsume/*定义结构体*/
{intnum;
charname[20];
charkind[20];
chartel[20];
chartax[20];
charemail[20];
structconsume*next;
};
structconsume*head,*thisn,*newn;/*声明结构体外部变量*/
voidinput();/*声明子函数*/
voidoutput();
voidsearch();
voiddel();
voidline();
voidoutputbykind();
main()/*主程序*/
{intflag=1;charch;head=NULL;/*给头指针初始化*/
while(flag)/*每当flag==1,循环*/
{printf("pleaseinputthechoosennumber:
\n");/*目录表*/
printf("\t1.inputtherecord:
\n\t2.outputalltherecord:
\n\t3.searchbythename\n\t4.deletebythenumber\n\t5.inalinefromthelittletothebig\n\t6.outputbykind\n");
printf("Ichoosethenumber:
");
ch=getchar();getchar();
switch(ch)
{
case'1':
input();break;
case'2':
output();break;
case'3':
search();break;
case'4':
del();break;
case'5':
line();break;
case'6':
outputbykind();break;
default:
flag=0;break;
}
}
getch();
}
voidinput()/*输入函数*/
{FILE*fp;/*文件指针,用以文件*/
externstructconsume*head,*thisn,*newn;charnumstr[20];
fp=fopen("c:
\\1.txt","w");
newn=(structconsume*)malloc(sizeof(structconsume));/*开辟空间,newn指向新空间首地址*/
if(head==NULL)
{head=newn;}
else
{thisn=head;/*寻找表尾*/
while(thisn->next!
=NULL)
thisn=thisn->next;
thisn->next=newn;/*让表尾指向新空间*/
}
thisn=newn;/*让指针工作在新结点,给新结点赋值*/
printf("pleaseinputthenum,name,kind,telephone,tax,e-mail:
\n");
printf("\nEnternumber:
");gets(numstr);thisn->num=atoi(numstr);/*通过atoi将字符型数据转变为int类*/
printf("\nEntername:
");gets(thisn->name);
printf("\nEnterkind:
");gets(thisn->kind);
printf("\nEntertelephone:
");gets(thisn->tel);
printf("\nEnterthetax:
");gets(thisn->tax);
printf("\nEnterE-mail:
");gets(thisn->email);
fprintf(fp,"%d%s%s%s%s%s\n",thisn->num,thisn->name,thisn->kind,thisn->tel,thisn->tax,thisn->email);
thisn->next=NULL;fclose(fp);/*将文件保存到c:
\\1.txt*/
}
voidoutput()/*输出函数*/
{externstructconsume*head,*thisn;
if(head==NULL)
{printf("Thisisaemptylist!
");return;}
printf("编号姓名客户类型电话传真电子邮件\n");
thisn=head;
do
{printf("%d%s%s%s%s%s\n",thisn->num,th