数据结构课程设计报告.docx
《数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
![数据结构课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-1/29/8b8bbee3-1ab5-4768-8028-1a711d7143a5/8b8bbee3-1ab5-4768-8028-1a711d7143a51.gif)
数据结构课程设计报告
数据结构课程设计报告
题目:
职工出勤管理
课程名称:
数据结构
专业班级:
软件1201
学生姓名:
赵振强
学号:
201216040113
任课教师:
白浩
学期:
2012-2013学年第二学期
目录
1. 系统描述
1.1问题描述 1.2数据需求 1.3功能需求
2. 系统设计
2.1程序代码
3. 系统调试
3.1测试用例 3.2测试结果
4. 设计总结
4.1经验、心得及体会
1.系统描述
1.1问题描述
员工考勤信息管理程序是作为公司考勤的基本管理,是公司对员工考勤管理的基本依据。
考勤信息记录了员工的迟到情况,包括员工的名字、所属部门、迟到次数。
(本程序设计中,把旷工等情况统一计算到迟到次数中,只记录基本的数据,不考虑将每次迟到情况的细节,如哪天迟到,为什么迟到等,加入本次设计中,本次课程呢个设计只做最简单的考勤管理程序)
1.2数据需求
本程序主要是对员工考勤情况进行简单的输入、统计,以员工的序号进行排序,是一个非常简单的员工考勤管理程序。
1.3功能需求
本程序可以提供给的功能有:
1) 输入某员工的考勤记录; 2) 显示所有已输入员工考勤记录; 3) 可以制作更简明的考勤记录名单; 4) 显示或删除简明名单;
2.系统设计
系统设计代码如下:
#include "stdafx.h"
#include
#include
using namespace std;
struct wkrs {
char num[10];
char name[10];
char department[3];
int laterTime;
}wk[10];
struct wkr {
char name[10];
int laterTime;
}wkshort[10];
void Display();
void Readin();
void Disp();
void SelectWk();
void Delwk();
int MenuSelect();
int num=0,number=10;
void main()
{
cout<<"欢迎进入员工考勤系统!
"<for(;;)
{
switch(MenuSelect())
{
case1:
Readin();break;
case2:
Display();break;
case3:
SelectWk();break;
case4:
Delwk();break;
case5:
Disp();break;
case6:
cout<<"退出运行,再见!
"<}
}
}
intMenuSelect()
{
chars[2];intcn;
cout<<"1.输入数据"<cout<<"2.显示原始名单"<cout<<"3.制作简明名单"<cout<<"4.删除简明名单"<cout<<"5.显示简明名单"<cout<<"6.退出运行"<cout<";
for(;;)
{
gets(s);
cn=atoi(s);
if(cn<1||cn>6)
cout<";
else
break;
}
return(cn);
}
voidDisplay()
{
inti;
ifstreamdisp("workers.txt");
//disp>>number;
if(!
disp)
{
cout<<"文件打不开"<return;
}
cout<for(i=0;i{
disp>>wk[i].num>>wk[i].name>>wk[i].department>>wk[i].laterTime;cout<}
disp.close();
cout<}
voidDisp()
{
ifstreamdisp("wk_saw.txt",ios:
:
binary);
if(!
disp)
{
cout<<"文件打不开"<return;
}
cout<"<cout<"<disp>>num;
for(inti=0;i{
disp>>wkshort[i].name>>wkshort[i].laterTime;
cout<}
disp.close();
cout<"<}
voidReadin()
{
charch[10];inti=0;
cout<<"准备输入职工信息"<for(i=0;i{
cout<<"序号:
";
cin>>wk[i].num;
if(strcmp("0",wk[i].num)==0)
{
number=i;break;
}
cout<<"姓名:
";
getchar();
gets(ch);
strcpy(wk[i].name,ch);
cout<<"部门:
";
cin>>wk[i].department;
cout<<"迟到次数:
";
cin>>wk[i].laterTime;
}
if(number==0)
{
cout<<"没有输入数据,不改写文件!
"<return;
}
cout<<"输入结束!
"<ofstreamwr("workers.txt");
for(i=0;i{
wr<"<"<"<}
wr.close();
cout<}
voidSelectWk()
{
inti;
ifstreamdisp("workers.txt");
if(!
disp)
{
cout<<"文件打不开"<return;
}
//disp>>number;
for(i=0;i{
cout<strcpy(wkshort[i].name,wk[i].name);
wkshort[i].laterTime=wk[i].laterTime;
}
cout<disp.close();
ofstreamwr("wk_saw.txt");
wr<for(i=0;i{
wr<}
wr.close();
Disp();
cout<}
voidDelwk(){
inti=0,j,flag=0;charna[10];
Disp();
if(num==0)
{cout<return;
}
cout<";
while(strcmp(na,"0")!
=0)
{
cout<";
gets(na);
if(strcmp(na,"0")==0)
{
cout<退出删除操作
."<return;
}
for(flag=1,i=0;i{
if(strcmp(na,wkshort[i].name)==0)
{
for(j=i;j{
strcpy(wkshort[j].name,wkshort[j+1].name);
wkshort[j].laterTime=wkshort[j+1].laterTime;
}
flag=0;
ofstreamwr("wk_saw.txt");
num--;
wr<for(i=0;i{
wr<}
wr.close();
}
}
if(!
flag)
if(num==0)
{
cout<<"现在已经删空文件内容,退出删除操作."<return;
}
else
{
cout<"<Disp();
}else
cout<"<}
3.系统调试
3.1测试用例
公司序号 姓名 部门 迟到次数
1 张三 销售部 2 2 李四 服务部 1
3.2测试结果
起始界面:
准备输入职工信息:
信息输入完毕:
显示简明名单:
除此之外,还可进行删除,修改等操作,不过由于篇幅有限,就不在多加描述,至此,整个程序已经基本实现它应有的功能。
4.设计总结
本次课程设计主要使用到了C++中的一些比较基本的算法,总体上感觉比之前做过的实验综合性比较强。
在这里我主要总结一下我设计这个学生考勤管理系统的心得和在编译程序的过程中遇到的问题以及解决的办法。
为了使得程序的编写更加有条理,阅读更加明了,在写每个模块的时候都将自己的思路写在每个函数的第一行,告诉自己(读者)我这个函数将要做的是什么事情。
这是一个很好的编程规范,值得继续发扬。
对于这次的程序的编写,花了不少时间,原因很可能是自己对C++的总体认知还不够,还有在上学期一个月对C++的学习知识量很有限,在编写调试的这个过程中很多新的语法知识都是在网上搜索的。
我学习编程一直有自己的一点想法:
用任务来牵引,在实践中学习。
也就是说,我没有按照某种固定的顺序去学习编程,而是经常有一些小的程序想法或是想编一个满足特定功能的程序。
这样刚开始几乎每次都是在对所编程序一无所知的基础上进行,由简单到复杂,一个问题一个问题地去解决。
当然,很多时候我失败了,但在这过程中,我学到了很多。
问题一个个地解决,知识一点点地积累,经验一点点地丰富,想法一点点地成熟,成功概率也一点点地提高。
现在编写一些简单的桌面应用程序也基本上没有问题了。
由于时间关系,我设计的这个系统比较简单,可能不能很好的运用于实际,但它的基本功能还是实现了,是一个良好的开端。