数据结构简单教职工管理系统课程设计报告.docx
- 文档编号:9034586
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:37
- 大小:253.99KB
数据结构简单教职工管理系统课程设计报告.docx
《数据结构简单教职工管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构简单教职工管理系统课程设计报告.docx(37页珍藏版)》请在冰豆网上搜索。
数据结构简单教职工管理系统课程设计报告
课程设计报告
(本科)
课程:
数据结构
学号:
姓名:
班级:
教师:
时间:
计算机科学与技术系
设计名称:
简单的职工管理系统
设计内容、目的与要求:
能够录入职工信息(职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等),并可进行下面操作:
(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 执行挂起一段时间 #include #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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 简单 教职工 管理 系统 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)