计算机本科c++课程设计题目及要求文档格式.docx
《计算机本科c++课程设计题目及要求文档格式.docx》由会员分享,可在线阅读,更多相关《计算机本科c++课程设计题目及要求文档格式.docx(70页珍藏版)》请在冰豆网上搜索。
![计算机本科c++课程设计题目及要求文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/21/2b06e2ce-b097-4812-9403-47edc3af8d83/2b06e2ce-b097-4812-9403-47edc3af8d831.gif)
某小型企业出与这种目的制作了这个人事管理系统
二、程序的主要功能
1、添加功能:
添加一个职员的基本信息,包括姓名,工作证号,身份证号码,生日,家庭住址,家庭电话号码,部门,薪水,性别,职务、
2、删除功能:
能够对一个职员的信息进行删除按姓名进行删除、
3、除全部职员信息:
能够对于全部职员的信息进行删除!
4、显示功能:
显示所有职员的主要信息包括姓名,身份证号码,工作证号,生日、!
5、查找功能:
根据你键入的职员姓名,显示其详细信息!
6、修改功能:
对职员的信息进行修改。
三、程序运行平台
具体操作如下:
首先进入VC++6.0,打开原代码person.cpp,然后进入原程序,接着选择Options下的Linker,选择Libraries,弹出一个对话框,再选择Graphicslibrary,然后确认即可!
!
四、系统总框架图
五、程序类的说明
∙Date类的声明
classDate
{
public:
Date();
//Date类的构造函数
voidset();
//Date类的设置函数
friendistream&
operator>
>
(istream&
in,Date&
da);
//重载“》”
friendostream&
operator<
<
(ostream&
out,Dated);
//重载“《”
voidoperator=(Dated);
重载“=”
private:
intyear;
//年
intmonth;
//月
intday;
//日
};
∙people类的声明
classpeople
people();
//people类的构造函数
friendostream&
out,peoplep);
//重载“〈〈”
friendistream&
in,people&
p);
voidoperator=(peoplep);
//重载“=”
voidset();
//people类的设置函数
char*getname();
//获得姓名
char*getsex();
//获得性别
char*getid();
//获得id
char*gettelephone();
//获得电话号码
Dategetbirthday();
//获得生日
char*getnumber();
//获得工作证号
voidsetname(char*);
//设置姓名
voidsetsex(char*);
//设置性别
voidsetid(char*);
//设置id
voidsetnumber(char*);
//设置工作证号
voidsetaddress(char*);
//设置家庭地址
voidsettelephone(char*);
//设置电话号码
voidsetbirthday(Date);
//设置出生日期
voidsetsalary(char*);
//设置薪水
voidsetpost(char*);
//设置职务
voidsetdepartment(char*);
//设置工作部门
protected:
charname[20];
//姓名
charsex[5];
//性别
charid[20];
//身份证号
chartelephone[10];
//电话号码
Datebirthday;
//出生日期
charnumber[20];
//工作证号
charaddress[100];
//家庭地址
charsalary[10];
//薪水
charpost[20];
//职务
chardepartment[30];
//工作部门
people*next;
//下一个节点
people*previous;
//上一个节点
classpeoplelist:
publicpeople
peoplelist();
//peoplelist类的构造函数
//peoplelist类的设置函数
voidadd();
//添加函数
voiddisplay();
//显示函数
voidfind();
//查找函数
voiddeleteAll();
//清空函数
voidsave();
//写入文件
voidload();
//读进内存
voidmodify();
//修改函数
voidremove();
//删除函数
private:
people*start;
//链表头
people*end;
//链表尾
六、模块分析
1.添加模块
系统将提示用户输入新添加的职员的信息,插入在链表中
2.显示模块
显示模块将输出所有职员的主要资料。
3.修改模块
首先由用户输入要修改的职员的姓名,然后系统用修改函数查找,显示该名职员的资料,然后系统提示用户输入需要修改的项目和新的资料。
4.查找模块
首先由用户输入要查找的职员姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的职员资料。
5.删除模块
首先由用户输入要删除的单个职员姓名,然后调用删除函数,删除该名职员的资料。
6.清空模块
系统将会把所有职员的资料全部删除,将链表清空。
七、比较有特色的函数
voidpeoplelist:
:
remove()
textmode(C80);
textbackground(BLUE);
clrscr();
gotoxy(10,10);
cout<
"
pleaseinputthenameofthestudnetyouwanttoremove:
;
charn[20];
cin>
n;
people*temp;
temp=start;
while(temp)
{
if(strcmp(temp->
getname(),n)==0)
break;
}
if(temp==NULL)
gotoxy(20,10);
cout<
thestudentnamedosenotexist!
endl;
else
if(temp->
previous)//删除的节点不是第一个
{
temp->
previous->
next=temp->
next;
if(temp->
next)//删除的节点不是最后一个
temp->
next->
previous=temp->
previous;
else
end=temp->
}
else//删除的节点是第一个
{
temp->
previous=NULL;
start=temp->
}
start=end=NULL;
//删除节点是最后一个,链表只有一个节点
gotoxy(30,10);
removesucceed!
getch();
}
八、存在的不足与对策
由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,因此,请不要故意输入错误信息。
这些不足请老师多多谅解。
今后设计者会更多的学习编程技巧,不断的提高程序设计水平。
九、程序源代码
#include"
iostream.h"
string.h"
stdlib.h"
stdio.h"
fstream.h"
conio.h"
graphics.h"
dos.h"
process.h"
#defineTURE1
#defineFALSE0
#defineKB_S_N_DOWN80
#defineKB_S_N_UP72
#defineKB_S_N_ENTER28
#defineKB_S_N_D32
#defineKB_S_N_Q16
#defineKB_S_N_M50
#defineKB_S_N_A30
#defineKB_S_N_F33
#defineKB_S_N_R19
#defineKB_S_N_E18
voidWelcome();
intget_key();
intgetitem(int);
voidlight_bar();
voidbox(intx,inty,intwi,inthi,charbkcolor,charcolor);
introw,item_num=7;
unsignedsize;
void*buf;
/////////////////////////////////////////////
voidbox(intx,inty,intwi,inthi,charbkcolor,charcolor)
textbackground(bkcolor);
textcolor(color);
inti;
gotoxy(x,y);
putch(0xda);
for(i=1;
i<
wi;
i++)
putch(0xc4);
putch(0xbf);
hi;
gotoxy(x,i+y);
putch(0xb3);
gotoxy(x+wi,i+y);
gotoxy(x,y+hi);
putch(0xc0);
i++)putch(0xc4);
putch(0xd9);
voidWelcome()
intgraphdriver=VGA;
intgraphmode=VGAHI;
initgraph(&
graphdriver,&
graphmode,"
d:
\\bc\\bgi"
);
intseed=1858;
intdotx,doty,h,w,color,maxcolor;
maxcolor=getmaxcolor();
w=getmaxx();
h=getmaxy();
srand(seed);
for(inti=0;
250;
dotx=i+random(w-1);
doty=i+random(h-1);
color=random(maxcolor);
setcolor(color);
putpixel(dotx,doty,color);
circle(dotx+1,doty+1,1);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,6);
outtextxy(30,150,"
Welcometothesystem"
closegraph();
/////////////////////////////////////////////////
intgetitem(introw)
intkey,done;
done=FALSE;
do
key=get_key();
switch(key)
caseKB_S_N_DOWN:
putimage(543,91+row*25,buf,XOR_PUT);
if(row==item_num-1)
row=0;
row++;
putimage(543,91+row*25,buf,XOR_PUT);
caseKB_S_N_UP:
if(row==0)
row=item_num-1;
row--;
caseKB_S_N_D:
if(row!
=0)
done=TURE;
break;
caseKB_S_N_A:
=1)
row=1;
caseKB_S_N_F:
=2)
row=2;
caseKB_S_N_M:
=3)
row=3;
caseKB_S_N_R:
=4)
row=4;
caseKB_S_N_E:
if(row!
=5)
row=5;
caseKB_S_N_Q:
=6)
row=6;
caseKB_S_N_ENTER:
default:
}while(!
done);
returnrow;
///////////////////////////////////////////////////
intget_key()
unionREGSrg;
rg.h.ah=0;
int86(0x16,&
rg,&
rg);
returnrg.h.ah;
///////////////////////////////////////////////
voidlight_bar()
putimage(543,91,buf,XOR_PUT);
setcolor(WHITE);
///////////////////////////////////////
///////////////////////////////////////////
Date:
Date()
year=month=day=0;
/////////////////////////////////////////////////////
istream&
da)
A:
inty,m,d;
in>
y>
m>
d;
if(y>
2002)
error!
gotoA;
da.year=y;
if(m>
12||m<
1)
da.month=m;
staticintdaysmonth[13]={0,31,28,31,30,
31,30,31,31,30,
31,30,31};
if(m!
if(d>
daysmonth[m]||d<
gotoA;
da.day=d;
if((y%100==0)||y%4==0&
&
y%100!
if(d<
0||d>
29)
cout<
gotoA;
da.day=d;
28)
returnin;
ostream&
out,Dated)
out<
d.year<
'
/'
d.month<
d.day<
returnout;
/////////////////////////////////
voidDate:
operator=(Dated)
year=d.year;
month=d.month;
day=d.day;
voidchange();