数据结构简单教职工管理系统课程设计报告.docx

上传人:b****7 文档编号:9034586 上传时间:2023-02-02 格式:DOCX 页数:37 大小:253.99KB
下载 相关 举报
数据结构简单教职工管理系统课程设计报告.docx_第1页
第1页 / 共37页
数据结构简单教职工管理系统课程设计报告.docx_第2页
第2页 / 共37页
数据结构简单教职工管理系统课程设计报告.docx_第3页
第3页 / 共37页
数据结构简单教职工管理系统课程设计报告.docx_第4页
第4页 / 共37页
数据结构简单教职工管理系统课程设计报告.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

数据结构简单教职工管理系统课程设计报告.docx

《数据结构简单教职工管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构简单教职工管理系统课程设计报告.docx(37页珍藏版)》请在冰豆网上搜索。

数据结构简单教职工管理系统课程设计报告.docx

数据结构简单教职工管理系统课程设计报告

课程设计报告

(本科)

课程:

数据结构

学号:

姓名:

班级:

教师:

时间:

计算机科学与技术系

设计名称:

简单的职工管理系统

设计内容、目的与要求:

能够录入职工信息(职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等),并可进行下面操作:

(1)新增一名职工:

将新增职工对象按姓名以字典方式职工管理文件中。

(2)删除一名职工:

从职工管理文件中删除一名职工对象。

(3)查询:

从职工管理文件中查询符合某些条件的职工。

(4)修改:

检索某个职工对象,对其某些属性进行修改。

(5)排序:

按某种需要对职工对象文件进行排序。

计划与进度安排:

第十六周:

查资料了解该系统的背景,认识该系统要实现的功能,并将每个功能划分成一个单独的模块。

第十七周:

了解该系统设计的知识,将该课题中的问题转化成教材中的知识,用计算机方面的知识解决这些问题。

第十八周:

编写源代码,调试程序,测试程序,填写实验报告,和合作的同学相互交流,准备答辩。

设计过程、步骤(可加页):

1、功能结构图

2、主程序流程图

 

3、各函数说明

创建函数:

接收若干职工信息的输入,并保存到文件中,供后续操作的使用。

voidcreate()

{voidinsert();

scanf("%s",fname);//接收文件名

if((fp=fopen(fname,"w"))==NULL)//创建文件

{

}

fclose(fp);

……

insert();//调用insert()函数保存信息

}

增加函数:

新增一名职工的信息,并保存到文件中。

voidinsert()

{

xinxiworker;

……//对worker进行初始化

cout<<"请按以下顺序输入职工信息!

"<

cout<<"姓名性别生日工日学历职务地址电话"<

scanf("%s%s%s%s%s%s%s%s",&worker.name,&worker.sex,&worker.birthday,&worker.workday,&worker.xueli,&worker.zhiwu,&worker.address,&worker.tel);

writef(worker);//保存信息

}

删除函数:

对指定的职工的信息进行删除

voiddel(linklist&L)

{jp_c:

……

scanf("%s",name);

while(p)//名字不匹配且未找到链尾

{if(strcmp(p->name,name)==0)

{r->next=p->next;//删除信息

……

printf("是否继续删除(Y/N)?

\n");//询问是否继续删除其他

cin>>c;

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

gotojp_c;

else

{printf("是否输出删除后的职工信息(Y/N)?

\n");

cin>>c;

if(c=='Y'||c=='y')//若是,输出删除后的职工信息

{

……

}

else

return;

}

}

r=p;

p=p->next;

}

if(x==0)//若未找到,给出提示信息printf("未找到该职工的信息!

\n");

}

查找函数:

查询符合某些条件的职工信息

voidsearch(linklist&L)

{jp_c3:

……

printf("1、姓名2、电话3、综合查找\n");//查找方式选择

scanf("%d",&choose);

switch(choose)

{case1:

……

……

default:

cout<<"输入错误!

\n";

}

if(ch=='Y'||ch=='y')//是否继续查找

gotojp_c3;

}

修改函数:

对指定的某职工的某些属性进行修改

voidxiugai(linklist&L)

{

……

scanf("%s",name);//接收要修改的职工的名字

while(p)

{if(strcmp(p->name,name)==0)

{printf("1、姓名2、性别3、生日4、工日5、学历6、职务7、地址8、电话\n");//修改选择

jp_c4:

scanf("%d",&choose);

for(intj=0;;j++)

{switch(choose)

{case1:

……

……

default:

cout<<"输入错误!

\n";

}

if(ch=='Y'||ch=='y')//询问是否继续进行其他修改

gotojp_c4;

else

……//退出循环

}

i++;

}

p=p->next;

}

if(i)//输入修改后的该职工的信息

{

……

}

else//若不存在给出提示信息

cout<<"不存在职工信息,无法修改!

"<

}

排序函数:

按照某种需要对职工信息进行排序

voidrank(linklist&L)

{jp_c2:

……

printf("1、姓名2、性别3、生日4、工日\n");//排序需求选择

scanf("%d",&choose);

switch(choose)

{case1:

……

……

default:

cout<<"输入错误!

\n";

}

if(ch=='Y'||ch=='y')//询问是否继续按照其他需求排序

gotojp_c2;

}

显示函数:

对所有的职工信息输出

voidShow_all(linklistL)

{cout<<"姓名性别生日工日学历职务地址电话"<

while(p)//显示职工信息

{

printf("%-9s",p->name);

printf("%-7s",p->sex);

printf("%-13s",p->birthday);

printf("%-13s",p->workday);

printf("%-8s",p->xueli);

printf("%-10s",p->zhiwu);

printf("%-9s",p->address);

printf("%-11s",p->tel);

p=p->next;

}

}

结果与分析(可以加页):

进入程序,显示的界面

创建文件,录入信息,并保存到文件中

添加职工信息,并保存到文件中

按姓名查找姓名为zhu的职工的信息

以修改生日为例,修改职工的某些属性

程序结束时的提示界面

设计体会与建议:

此次课程设计是我们第一次自己完成一个可以实现对信息录入、储存、读取、并对这些信息进行相关操作的程序。

在源代码的编写中,使用了不同的函数来达到不同的功能,也让我们体会到,在使用函数分工后整个程序变得条理清楚,用不同的功能来划分函数使得排错轻松了很多,让我们体会到,当编写稍大一些的程序时,条理清楚是多么重要。

同时,我们也对那些外观精美的程序非常好奇,希望以后也可以将界面美化,使得程序更具使用价值。

C语言是编程语言中非常经典非常基础的一种,我们差的还很远,这次编程让我们认识到,想编出好程序,就必须吃透书本,这样才能更轻松地跨过书本与电脑之间的障碍。

只有思路明确才能有条不紊。

所以,我们应当更加努力,注重思维模式的培养和迁移,争取在不久的将来可以熟练掌握这一工具,为接下来的学习打好基础。

课程设计的题目是求最短路径,本来是想通过算法的实现把这个程序与交通情况相连,但是因为来不及查找各地的信息,所以,这个计划就没有实现,我相信在以后有更长时间的情况下,我会做出来的。

1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。

2、培养了我选用参考书,查阅手册及文献资料的能力。

培养独立思考,深入研究,分析问题、解决问题的能力。

3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。

4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。

通过此次课程设计,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。

在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,

根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点:

1、认真上好专业实验课,多在实践中锻炼自己。

2、写程序的过程中要考虑周到,严密。

3、在做设计的时候要有信心,有耐心,切勿浮躁。

4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。

数据结构是一门非常有用的课程,尤其是在编程序时,一定要认真有耐心,不要浮躁。

在以后的学习中也要认真积极的去对待!

不仅仅是学习,也是人生的生活的态度!

附录:

源程序代码

#include

#include

#include//Sleep()函数的头文件功能:

执行挂起一段时间

#include//getch()函数的头文件

#include

#include

typedefstruct

{

charname[18];

charsex[8];//性别;男male,女female

charbirthday[11];

charworkday[11];

charxueli[10];

charzhiwu[10];

charaddress[10];

chartel[12];

}xinxi;

typedefstructXX

{

charname[18];

charsex[8];//性别;男male,女female

charbirthday[11];

charworkday[11];

charxueli[10];

charzhiwu[10];

charaddress[10];

chartel[12];

structXX*next;

}node,*linklist;

charfname[15]="work10.txt";//不重新创建文件时,对文件work10.txt进行操作;若创建新文件则其值改变

//--------------------------------------------------------------------------------------

//辅助函数

//--------------------------------------------------------------------------------------

voidmenu()

{

cout<<"|------------------------------------------------------------------------------|";//-80个

cout<<"|欢迎使用职工管理系统|";

cout<<"|------------------------------------------------------------------------------|";

cout<<"|0、结束操作|";

cout<<"|1、创建职工文件|";

cout<<"|2、添加职工信息|";

cout<<"|3、删除职工信息|";

cout<<"|4、查找职工信息|";

cout<<"|5、修改职工信息|";

cout<<"|6、排序职工信息|";

cout<<"|7、显示所有职工信息|";

cout<<"|------------------------------------------------------------------------------|";

}

voidEXIT()

{

printf("\n\n\n\n\n\n");

printf("|------------------------------------------------------------------------------|");

printf("|谢谢使用!

|");

printf("||");

printf("|欢迎下次使用!

|");

printf("||");

printf("|再见!

|");

printf("|------------------------------------------------------------------------------|");

}

voidwritef(xinxiworker0)

{

FILE*fp;

if((fp=fopen(fname,"a"))==NULL)

{

printf("文件不存在!

请先创建!

\n");

exit(0);

}

if(fwrite(&worker0,sizeof(xinxi),1,fp)!

=1)

printf("filewriteerror!

\n");

fclose(fp);

printf("信息保存成功!

\n");

}

voidprint(linklistL)

{

linklistq;

q=L->next;

while(q)

{

printf("姓名%s\n",q->name);

printf("性别%s\n",q->sex);

printf("生日%s\n",q->birthday);

printf("工日%s\n",q->workday);

printf("学历%s\n",q->xueli);

printf("职务%s\n",q->zhiwu);

printf("地址%s\n",q->address);

printf("电话%s\n",q->tel);

cout<

q=q->next;

}

}

voidreadall(linklist&L,xinxiworker0)

{

inti;

L=newnode;

L->next=NULL;

linklistu,p;

p=L;

FILE*fp;

if((fp=fopen(fname,"r"))==NULL)

{

printf("无法打开此文件!

");

exit(0);

}

while(!

feof(fp))

{

if(fread(&worker0,sizeof(xinxi),1,fp)!

=1)

{

if(feof(fp))

{

fclose(fp);

break;

}

else

printf("readfileerror!

\n");

}

u=newnode;

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

u->name[i]=worker0.name[i];

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

u->sex[i]=worker0.sex[i];

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

u->birthday[i]=worker0.birthday[i];

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

u->workday[i]=worker0.workday[i];

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

u->xueli[i]=worker0.xueli[i];

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

u->zhiwu[i]=worker0.zhiwu[i];

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

u->address[i]=worker0.address[i];

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

u->tel[i]=worker0.tel[i];

u->tel[i]=NULL;

p->next=u;

p=u;

}

fclose(fp);

p->next=NULL;

}

//--------------------------------------------------------------------------------------

//功能函数

//--------------------------------------------------------------------------------------

voidcreate()

{

voidinsert();

FILE*fp;

intnum,i;

printf("请输入文件名:

");

scanf("%s",fname);

strcat(fname,".txt");//串连接函数,把第二个字符串添加到第一个字符串后面

if((fp=fopen(fname,"w"))==NULL)

{

printf("打开文件出错!

\n");

exit(0);

}

fclose(fp);

cout<<"文件创建成功!

"<

cout<<"下面开始输入职工信息!

"<

getch();

system("cls");

cout<<"你想输入多少个职工信息?

请输入:

";

cin>>num;

for(i=0;i

insert();

}

voidinsert()

{

xinxiworker;

inti;

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

worker.name[i]='';

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

worker.sex[i]='';

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

worker.birthday[i]='';

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

worker.workday[i]='';

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

worker.xueli[i]='';

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

worker.zhiwu[i]='';

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

worker.address[i]='';

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

worker.tel[i]='';

cout<<"请按以下顺序输入职工信息!

"<

cout<<"姓名性别生日工日学历职务地址电话"<

scanf("%s%s%s%s%s%s%s%s",&worker.name,&worker.sex,&worker.birthday,&worker.workday,&worker.xueli,&worker.zhiwu,&worker.address,&worker.tel);

writef(worker);

}

voiddel(linklist&L)

{

linklistp,r;

jp_c:

charname[10],c;

intx=0;

p=L->next;

r=L;

system("cls");

system("colorf0");

printf("请输入删除职工的名字:

");

scanf("%s",name);

while(p)//名字不匹配且未找到链尾

{

if(strcmp(p->name,name)==0)

{

r->next=p->next;

free(p);

x++;

printf("删除成功!

\n");

printf("是否继续删除(Y/N)?

\n");

cin>>c;

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

gotojp_c;

else

{

printf("是否输出删除后的职工信息(Y/N)?

\n");

cin>>c;

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

{

cout<<"*****************************"<

print(L);

cout<<"*****************************"<

cout<<"输出完成!

"<

getch();

return;

}

else

return;

}

}

r=p;

p=p->next;

}

if(x==0)

printf("未找到该职工的信息!

\n");

}

voidsearch_name(linklistL)

{

inti;

node*p;

p=L->next;

charname[10];

intn=0;

printf("请输入要查找职工的姓名:

");

scanf("%s",name);

printf("正在进行查找,请稍候...\n");

intk=3;

for(i=0;i<350000000*k;i++)//延时3秒

{}

while(p)

{

if(strcmp(p->name,name)==0)

{

printf("该职工的信息如下:

\n");

printf("********************************\n");

printf("姓名%s\n",p->name);

printf("性别%s\n",p->sex);

printf("生日%s\n

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

当前位置:首页 > 初中教育 > 理化生

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

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