C语言课程设计报告.docx

上传人:b****2 文档编号:3489896 上传时间:2023-05-05 格式:DOCX 页数:52 大小:692.01KB
下载 相关 举报
C语言课程设计报告.docx_第1页
第1页 / 共52页
C语言课程设计报告.docx_第2页
第2页 / 共52页
C语言课程设计报告.docx_第3页
第3页 / 共52页
C语言课程设计报告.docx_第4页
第4页 / 共52页
C语言课程设计报告.docx_第5页
第5页 / 共52页
C语言课程设计报告.docx_第6页
第6页 / 共52页
C语言课程设计报告.docx_第7页
第7页 / 共52页
C语言课程设计报告.docx_第8页
第8页 / 共52页
C语言课程设计报告.docx_第9页
第9页 / 共52页
C语言课程设计报告.docx_第10页
第10页 / 共52页
C语言课程设计报告.docx_第11页
第11页 / 共52页
C语言课程设计报告.docx_第12页
第12页 / 共52页
C语言课程设计报告.docx_第13页
第13页 / 共52页
C语言课程设计报告.docx_第14页
第14页 / 共52页
C语言课程设计报告.docx_第15页
第15页 / 共52页
C语言课程设计报告.docx_第16页
第16页 / 共52页
C语言课程设计报告.docx_第17页
第17页 / 共52页
C语言课程设计报告.docx_第18页
第18页 / 共52页
C语言课程设计报告.docx_第19页
第19页 / 共52页
C语言课程设计报告.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计报告.docx

《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(52页珍藏版)》请在冰点文库上搜索。

C语言课程设计报告.docx

C语言课程设计报告

HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY

 

C语言程序设计

课程设计报告

 

课设题目:

职工管理程序

专业:

电子信息工程(汽车电子)

班级:

电信152

姓名:

魏明煌

成绩:

完成日期:

2016.7.3

指导教师:

向振涛

一.课程设计目的与要求

1.1目的

1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

2)通过课程设计,进一步掌握C语言中重要的数据结构。

掌握并熟练运用指针、链表、结构体、文件等数据结构。

3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。

4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。

5)通过课程设计,加强了自己的程序分析能力。

1.2要求

1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。

2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。

3)学会利用数组,结构体、链表进行相关信息表示。

4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述

5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。

6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。

7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。

8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。

9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。

10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。

11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求。

1.3任务描述

已知职工信息包括:

职工号、职工姓名、工作部门、职称、入厂时间、工资。

设计一程序,完成以下功能:

(1)能从键盘输入职工的信息。

(2)给定职工号,显示职工的信息。

●(3)给定工作部门,显示该部门的职工信息。

●(4)给定职工号,修改职工的信息。

●(5)给定职工号,删除职工信息。

提示:

(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。

(2)职工信息应该包含职工号、姓名、工作部门、职称、入厂时间、工资。

(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

(4)应用程序运行后在屏幕上显示一个菜单。

用户可以根据需求,选定相应的操作项目。

进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。

程序根据用户输入的信息完成相应的处理,实现要求的功能。

(5)能对输入的数据进行简单的校验,例如,入厂时间必须是合法的日期格式,职工号是唯一的(一个职工号对应一个职工的职工信息)。

(6)在程序完成处理后,要清楚地给出程序的处理结果。

例如,在给定职工号删除职工信息时,如果该职工不存在,要提示没能删除,如果删除成功要提示删除成功。

(7)使用结构体表示职工信息,一个结点保存一条职工信息。

 

1.4运行环境

1)WindowsXP/7系统

2)VC++6.0编译环境

1.5开发工具

C语言

二.系统设计

2.1系统流程设计

本系统的功能模块如图1所示,主要有以下模块:

 

2.2系统模块设计

1)系统欢迎界面:

显示欢迎界面,并提示是否导入职工信息。

2)主菜单界面:

构造函数voidmenu(),实现系统主菜单的显示。

3)创建职工信息链表:

构造函数voidcreat(),实现新建职工的信息。

4)根据职工号显示信息:

构造函数voidnumber(),实现查询指定职工号的职工信息

5)根据工作部门显示信息:

构造函数voidpart(),实现查询指定部门的职工的信息。

6)根据职工号修改信息:

构造函数voidmodify(),实现对指定职工号信息的修改。

7)根据职工号删除信息:

构造函数voiddel(),实现对指定职工号信息的删除。

8)显示全部职工的信息:

构造函数voiddisplay(),实现显示全部职工信息。

9)显示职工的平均工资:

构造函数voidAveWage(),实现显示职工的平均工资。

10)插入职工的信息:

构造函数voidinsert(),在指定位置插入职工的信息

11)从文件中读入职工信息:

构造函数read(),在指定文件中读入职工信息

12)保存职工的信息:

构造函数voidsave(),保存职工信息

13)退出系统:

构造函数voidexit0()用于退出程序。

2.3.详细设计

(1)数据结构设计

根据系统要求,系统中需要保存的数据信息,其结构如下:

数据项名称

数据项系统表示

数据类型

数据长度

备注

职工号

number

字符串

20

姓名

name

字符串

10

工作部门

part

字符串

40

职称

job

字符串

20

入厂日期

time

字符串

15

工资

wage

整形

为了能实现不受限制的增加职工信息,采用链表的结构保存职工信息,在增加职工的基本信息时,创建一个职工信息的节点,将其插入到链表中,示意图如下。

职工信息1职工信息2职工信息3职工信息4

为此,声明一个类型为structstaff的结构体,其成员为职工各项基本信息。

然后通过对指针、链表、文件等数据结构的操作,实现对职工信息的录入,存盘,查询,浏览,删除,修改等一系列操作。

其中,结构体定义如下:

typedefstructstaff

{

charnum[20];

charname[10];

charpart[40];

charjob[20];

chartime[15];

intwage;

structstaff*next;

}STA;

(2)模块接口设计

1)所有函数模块声明如下:

2)intgetindex(char*num);

3)voidmenu();

4)voidcreat();

5)voidnumber();

6)voidpart();

7)voidmodify();

8)voiddel();

9)voidfreelist();

10)voidAveWage();

11)intcode();

12)voidfirst();

13)voiddisplay();

14)voidread();

15)voidinsert();

16)voidsave();

2)主要模块的实现

系统以主函数voidmain()为入口,首先显示欢迎界面。

然后调用voidmenu()函数,进入主菜单界面。

系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。

(3)主要模块的流程图:

1)主菜单函数:

图1主函数流程序

2)新建职工信息

 

图2信息建立流程图

 

2)

信息查询函数:

4)修改职工信息流程图

5)信息删除函数:

图5信息删除流程图

6)文件导入信息流程图

三.程序测试与运行结果

3.1程序测试

(1)各模块分别调试过程及结果

建立职工信息:

运行程序选择0进入新建职工信息界面,按提示输入一条职工基本信息,再回到主菜单,选择5显示所有职工信息,看到有刚建立的职工信息说明该模块功能可以实现。

查询职工信息:

运行程序进入主菜单,选择1,输入一职工号,显示出该职工信息。

部门查询职工信息:

运行程序进入主菜单,选择2,输入部门信息,结果显示该部门所有职工信息,结果与实际一致。

修改职工信息:

运行程序进入主菜单,选择3,输入需要修改职工号,重新按提示输入职工信息,再回到主菜单,选择5显示所有职工信息,看到有刚修改的职工信息。

删除职工信息:

运行程序进入主菜单,选择4,输入需要删除的职工号,再选择5,显示结果无刚才所删除的职工信息。

显示职工的平均工资:

运行程序进入主菜单,选择6,显示结果为平均工资。

插入职工信息:

运行程序进入主菜单,选择8,输入需要插入的职工号,再选择5,显示结果有刚才插入的职工信息。

从文件导入信息:

首先在外部磁盘上建立以文本文件建立几条职工记录,运行主菜单,选择7,显示信息成功导入,返回主菜单,再选择5后,有职工信息显示出来说明导入成功。

保存职工记录:

运行程序进入主菜单,选择0新建职工记录后,选择9保存,再查看指定路径文件,结果显示该职工的记录。

退出系统:

运行程序进入主菜单,选择10,按任意键后成功退出。

(2)集成调试过程及结果。

运行程序进入主菜单,依次选择各功能,结果能正常运行。

(3)功能调试过程及结果

3.2欢迎界面:

3.3主菜单界面

输入选择,进入相应的功能。

3.4职工信息录入界面:

3.5职工号查询职工信息:

从键盘中输入要查询的职工号,显示该职工的信息。

3.6职工部门查询界面:

从键盘中输入要查询的职工部门,显示该职工的信息。

3.7修改职工信息界面:

从键盘中输入要修改的职工号,重新输入职工信息。

3.8删除职工信息界面:

从键盘中输入要删除的职工号,删除该职工记录。

3.9显示所有职工信息界面:

4.0退出界面:

四.课程设计总结

4.1.问题与不足

1)详细设计中存在的问题和分析

2)功能不是很齐全,难以满足各种要求。

3)代码编制中存在的问题和分析

4)调试和测试中存在的问题和分析

4.2.建议

建议以后的课设中老师辅导的时间能增加一些,另外题目应多一些,且难易适中。

4.3.心得体会

经过这次课设,我的编程能力有了很大提高,c语言基础知识的掌握更加牢固。

同时,了解了软件开发的基本流程和思路,深刻体会到模块化的编程思想是多么重要,这次课设是综合应用c语言知识分析问题解决问题的过程,在这个过程中,我遇到了很多问题,发现了很多不足,这对我以后继续学习编程乃至其它课程都有借鉴意义,因为不管学习什么,思路和方法永远是最重要的。

总之,我认为课程设计是一门非常好的课程,它把理论和实践相结合,给了我们一次应用所学知识分析问题解决问题的机会,这对提高我们的能力是非常重要的。

五.程序源代码:

#include

#include

#include

typedefstructstaff/*定义一个结构体*/

{

charnum[20];/*职工号姓名部门职称入厂时间*/

charname[10];

charpart[40];

charjob[20];

chartime[15];

intwage;

structstaff*next;

}STA;

STAhead,*p;/*定义头结点*/

STA*findpart(char*part,intm);

STA*findnode(char*num);

intgetindex(char*num);

voidmenu();

voidcreat();

voidnumber();

voidpart();

voidmodify();

voiddel();

voidfreelist();

voidAveWage();

intcode();

voidfirst();

voiddisplay();

voidread();

voidinsert();

voidsave();

intmain()//★★★★★★★★★★★主函数★★★★★★★★★★★★

{

intselect,m,i;

system("color20");//屏幕颜色

first();

while

(1)

{

m=code();

if(m==0)

{

printf("你已成功登陆.....\n");

for(i=0;i<20000;i++)

for(m=0;m<20000;m++);

break;

}

}

head.next=NULL;

while

(1)

{

menu();

printf("\t请输入您的选择(0~10):

");

end:

scanf("%d",&select);

fflush(stdin);//清除键盘缓冲区

switch(select)

{

case0:

creat();break;

case1:

number();break;

case2:

part();break;

case3:

modify();break;

case4:

del();break;

case5:

display();break;

case6:

AveWage();break;

case7:

read();break;

case8:

insert();break;

case9:

save();break;

case10:

freelist();

system("cls");

printf("\n\t★★★★★★感★谢★使★用★★★★★★\n");

printf("\t★★\n");

printf("\t★祝您:

★\n");

printf("\t★★生活顺心★万事如意★★\n");

printf("\t★★\n");

printf("\t★★★★★★★职工管理系统★★★★★★\n\n");

exit(0);

default:

{

printf("\t★★★★输入错误,请重新输入(0~10):

");

gotoend;

}

}

printf("\n");

system("pause");//暂停屏幕显示

}

return0;

}

 

voidmenu()//★★★★★★★★★★★目录函数★★★★★★★★★★★★

{

system("cls");

printf("\n\t★★★★职工管理菜单★★★★\n\n");

printf("\t★\t0.创建职工信息链表\t\t★\n\n");

printf("\t★\t1.根据职工号显示信息\t\t★\n\n");

printf("\t★\t2.根据工作部门显示信息\t\t★\n\n");

printf("\t★\t3.根据职工号修改信息\t\t★\n\n");

printf("\t★\t4.根据职工号删除信息\t\t★\n\n");

printf("\t★\t5.显示全部职工的信息\t\t★\n\n");

printf("\t★\t6.显示职工的平均工资\t\t★\n\n");

printf("\t★\t7.从文件中读入职工信息\t\t★\n\n");

printf("\t★\t8.插入职工的信息\t\t★\n\n");

printf("\t★\t9.保存职工的信息\t\t★\n\n");

printf("\t★\t10.退出\t\t\t★\n\n");

printf("\t★★★★★★★★★★★\n\n");

}

 

voidcreat()//★★★★★★★★★★★创建链表函数★★★★★★★★★★★★

{

inti,m,j=0;

charc;

STA*p,*tail;

if(head.next!

=NULL)

{

printf("职工链表成功创建!

");

return;

}

end1:

tail=&head;

printf("\n");

system("cls");

printf("\t★★请输入职工的人数:

\t");

scanf("%d",&m);

system("pause");

system("cls");

printf("\n★★★★★★★★★请输入职工的信息★★★★★★★\n");

printf("\n");

for(i=0;i

{

p=(STA*)malloc(sizeof(STA));

if(p==NULL)

{

printf("内存分配失败!

\n");

return;

}

printf("\t职工号:

\t\t\t");

scanf("%s",p->num);

printf("\t姓名:

\t\t\t");

scanf("%s",p->name);

printf("\t工作部门:

\t\t");

scanf("%s",p->part);

printf("\t职称:

\t\t\t");

scanf("%s",p->job);

printf("\t入厂时间(2015.11.20):

\t");

scanf("%s",p->time);

printf("\t工资(整数):

\t\t");

scanf("%d",&p->wage);

printf("\n");

tail->next=p;

p->next=NULL;

tail=p;

}

tail=&head;

p=tail->next;

tail=p->next;

for(i=0;i

{

for(j=0;j

{

if(strcmp(p->num,tail->num)==0)

gotoend;

tail=tail->next;

}

p=p->next;

tail=p->next;

}

system("cls");

printf("\n★★★★★★★★★★已成功保存★★★★★★★★★\n");

if(j<0)//因为j不可能小于0,只有职工号相同时才执行以下操作

{

end:

printf("\t★★★★★★★★★★★★★★★★★★\n");

printf("\t★★★★★★\n");

printf("\t★★★有相同职工号★★★\n");

printf("\t★★★★★★\n");

printf("\t★★★保存失败★★★\n");

printf("\t★★★★★★\n");

printf("\t★★★请*重*新*输*入★★★\n");

printf("\t★★★★★★\n");

printf("\t★★★★★★★★★★★★★★★★★★\n\n");

free(p);

fflush(stdin);

printf("\t★★★是否继续(Y/N)?

\t");

scanf("%c",&c);

if(c=='Y'||c=='y')

{

system("pause");

gotoend1;

}

else

{system("cls");

printf("\n\t★★★★★★感★谢★使★用★★★★★★\n");

printf("\t★★\n");

printf("\t★祝您:

★\n");

printf("\t★★生活顺心★万事如意★★\n");

printf("\t★★\n");

printf("\t★★★★★★★职工管理系统★★★★★★\n\n");

exit(0);

}

}

return;

}

 

voidnumber()//★★★★★★★★★根据职工号显示职工信息函数★★★★★★★★★★

{

charnum[20];

if(head.next==NULL)

{

printf("\n★★未创建职工链表★★\n");

return;

}

system("cls");

printf("★★请输入要查找的职工号:

\t");

gets(num);

system("cls");

printf("\n");

p=findnode(num);

if(p==NULL)

printf("★★★★★★★该职工信息不存在★★★★★★\n");

else

{

system("cls");

printf("\n★★★★★★★该职工的信息为★★★★★★★\n");

printf("\n");

printf("\t★职工号:

\t%s\n\n",p->num);

printf("\t★姓名:

\t\t%s\n\n",p->name);

printf("\t★工作部门:

\t%s\n\n",p->part);

printf("\t★职称:

\t\t%s\n\n",p->job);

printf("\t★入厂时间:

\t%s\n\n",p->time);

printf("\t★工资:

\t\t%d\n\n",p->wage);

}

return;

}

 

voidpart()//★★★★★★★★★根据职工部门显示职工信息函数★★★★★★★★★

{

inta=-10,m=0;

charpart[40];

if(head.next==NULL)

{

printf("\n★★未创建职工信息链表★★");

return;

}

system("cls");

printf("★★请输入要查找的部门:

\t");

gets(part);

system("cls");

p=findpart(part,m);

if(a>0)

{

end:

p=p->next;

p=findpart(part,m);

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2