计算机科学与应用系课程设计报告3.docx
《计算机科学与应用系课程设计报告3.docx》由会员分享,可在线阅读,更多相关《计算机科学与应用系课程设计报告3.docx(13页珍藏版)》请在冰豆网上搜索。
![计算机科学与应用系课程设计报告3.docx](https://file1.bdocx.com/fileroot1/2023-2/2/0cde017c-73f3-4594-a015-0df13e5ff686/0cde017c-73f3-4594-a015-0df13e5ff6861.gif)
计算机科学与应用系课程设计报告3
《C语言程序设计》
课程设计报告书
题目:
职工档案及简明信息生成系统
系别:
计算机科学与应用
学号:
101006206
学生姓名:
董小建
指导教师:
薛海燕
完成日期:
2012年5月28日
目录:
职工档案及简明信息生成系统3
1:
程序分析3
2:
概要设计3
3:
详细设计3
3.1:
单链表4
3.2:
输入职工信息4
3.3:
显示信息5
3.4:
删除信息5
4:
调试分析6
5:
测试结果6
6:
总结7
指导教师评语:
9
职工档案及简明信息生成系统
1:
程序分析
输入部分,要求用户能从屏幕上格式化输入所要求的数据项,例如添加信息的时候输入职工的基本信息:
姓名、性别、序号、年龄,本程序为方便调试设定输入职工数为5个职工的信息。
然后通过对链表的操作进行职工信息的添加、显示、删除,最终结果将在屏幕上输出职工的简要信息。
开始
2:
概要设计
选择功能序号
本程序的流程图如下:
添加、删除、显示
保存数据
选择退出功能序号
3:
详细设计
采用C++6.0作为开发工具,用结构体定义单链表,对所要处理的职工信息进行要求操作,分别调用各个功能函数来处理。
3.1:
单链表
信息的存储用链表实现,具体用结构体来定义,其包含的变量有姓名、性别、序号、年龄、下结点指针,具体实现如下:
{
charname[30];
charsex[10];
unsignedintnId;
unsignedintnAge;
};
3.2:
输入职工信息
输入职工信息,具体实现代码如下:
structwk_long
{
charname[30];
charsex[10];
unsignedintnId;
unsignedintnAge;
};
structwk_s
{
charname[30];
unsignedintnAge;
};
intReadin(wk_longworkerS[],intnLength)
{
for(inti=0;i{
printf("请输入第%d位职工信息:
\n",i+1);
printf("请输入职工姓名(在输入姓名后请按Enter继续输入职工性别):
\n");
scanf("%s",workerS[i].name);
printf("请入职工性别(在输入性别后请按Enter继续输入职工序号):
\n");
scanf("%s",workerS[i].sex);
printf("请输入职工序号(在输入序号后请按Enter继续输入职工年龄):
\n");
scanf("%d",&workerS[i].nId);
printf("请输入职工年龄:
\n");
scanf("%d",&workerS[i].nAge);
}
return0;
}
3.3:
显示信息
本程序可提供信息输入后的查询显示功能,具体实现如下:
intDisplay(wk_long*pWorker)
{
printf("职工姓名:
%s\n",pWorker->name);
printf("职工性别:
%s\n",pWorker->sex);
printf("职工序号:
%-5d\n",pWorker->nId);
printf("职工年龄:
%d\n",pWorker->nAge);
return0;
}
intselect(wk_long*pWorkers,wk_s*pWks,intnLen)
{
for(inti=0;i{
strcpy(pWks[i].name,pWorkers[i].name);
pWks[i].nAge=pWorkers[i].nAge;
}
return0;
}
3.4:
删除信息
方便用户根据需要对数据进行数据修改,本程序提供数据的多次修改功能,具体实现如下:
intdelwk(wk_s*pWks,wk_long*pWorkers,intnInd)
{
if(pWks[nInd].name[0]==0)
{
printf("Thepeopleoftheindexisnotinthesimplelist\n");
return0;
}
memset(&pWks[nInd],0,sizeof(wk_s));
memset(&pWorkers[nInd],0,sizeof(wk_long));
printf("TheInformationabouttheindexofthelistisdeleted\n");
return1;
}
4:
调试分析
在调试过程中,主要遇到以下几个问题;
(1)链表悬空,死循环,通过对程序的修改、用户操作提示解决;
(2)界面的美化,同学交流,听取用户意见;
5:
测试结果
对每一个操作功能调试,结果一切正常,用户可以按照程序的提示,只需输入操作的序号,便可轻松实现所需功能,以下是对本程序结果的一些截屏:
添加信息
显示所有职工的信息
删除信息
6:
总结
通过对这次程序设计,在指导老师的悉心教导下,我学到了很多,比如面向过程的设计方法,针对单个问题,单独解决,逐步求精等软件分析设计方法,提高了分析问题、解决问题的能力,同时对循环语句有了更好的理解和运用,对函数间的数值传递方法有了进一步的了解……
通过这次设计,我明白了数据的存储分析及算法设计在程序设计中占据着十分重要的地位,是程序执行效率的内部体现,也让我在不断克服困难逐步成长的过程中对程序设计产生了更加浓厚的兴趣。
借此机会,向敬爱的老师们表达我最诚挚的谢意。
指导教师评语:
程序成绩:
报告成绩:
综合成绩:
指导教师姓名:
批改日期:
年月日
附:
源代码
#include
#include
#include
structwk_long
{
charname[30];
charsex[10];
unsignedintnId;
unsignedintnAge;
};
structwk_s
{
charname[30];
unsignedintnAge;
};
intReadin(wk_longworkerS[],intnLength)
{
for(inti=0;i{
printf("请输入第%d位职工信息:
\n",i+1);
printf("请输入职工姓名(在输入姓名后请按Enter继续输入职工性别):
\n");
scanf("%s",workerS[i].name);
printf("请入职工性别(在输入性别后请按Enter继续输入职工序号):
\n");
scanf("%s",workerS[i].sex);
printf("请输入职工序号(在输入序号后请按Enter继续输入职工年龄):
\n");
return0;
}
intDisplay(wk_long*pWorker)
{
printf("职工姓名:
%s\n",pWorker->name);
printf("职工性别:
%s\n",pWorker->sex);
printf("职工序号:
%-5d\n",pWorker->nId);
printf("职工年龄:
%d\n",pWorker->nAge);
return0;
}
intselect(wk_long*pWorkers,wk_s*pWks,intnLen)
{
for(inti=0;i{
strcpy(pWks[i].name,pWorkers[i].name);
pWks[i].nAge=pWorkers[i].nAge;
}
return0;
}
intdelwk(wk_s*pWks,wk_long*pWorkers,intnInd)
{
if(pWks[nInd].name[0]==0)
{
printf("Thepeopleoftheindexisnotinthesimplelist\n");
return0;
}
memset(&pWks[nInd],0,sizeof(wk_s));
memset(&pWorkers[nInd],0,sizeof(wk_long));
printf("TheInformationabouttheindexofthelistisdeleted\n");
}
intDisplayHelp(void)
{
printf("1.输入数据\n");
printf("2.显示原始数据\n");
printf("3.制作简明数据\n");
printf("4.删除简明数据\n");
printf("5.Goodbye!
\n");
printf("Input1-5:
\n");
return0;
}
intmain()
{
wk_longworkers[5];
memset(workers,0,sizeof(workers));
wk_swkShort[5];
memset(wkShort,0,sizeof(wkShort));
intnInput;
intnInd;
while
(1)
{
DisplayHelp();
scanf("%d",&nInput);
switch(nInput)
{
{case1:
Readin(workers,5);
break;}
{case2:
for(inti=0;i<5;++i)
{
if(workers[i].name[0]!
='\0')
{a
printf("第%d位员工的简明信息:
\n",i+1);
Display(&workers[i]);
}
}
break;}
{case3:
select(workers,wkShort,5);
break;}
{case4:
printf("PleaseInputThedeleteindex:
");
scanf("%d",&nInd);
delwk(wkShort,workers,nInd);
break;}
{case5:
return0;
break;
default:
break;}
}
}
return0;
}