C语言程序设计Word格式文档下载.docx
《C语言程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计Word格式文档下载.docx(61页珍藏版)》请在冰豆网上搜索。
0)、推出本系统
功能模块分工:
李军:
程序设计与信息输入、浏览
陈辉煌:
页面设计与信息查询
曾超群:
信息修改
阳恩成:
信息删除
张琦:
信息排序
3、课程设计报告内容
3.1职工管理系统的理论依据及算法
主要数据结构:
typedefstruct
{
intnumber;
/*职工号*/
charname[20];
/*姓名*/
charsex[8];
/*性别*/
floatyear;
/*出生年月日*/
chareducat[20];
/*学历*/
charduty[20];
/*职务*/
floatwage;
/*工资*/
charplace[20];
/*住址*/
doubletel;
/*电话*/
}Student;
Studentstu[100];
/*结构体数组变量*/
各函数的功能和实现:
整个系统除了主函数外,另外还有10个函数,实现七大功能:
输入功能、显示功能、查找功能、修改功能、删除功能、排序功能。
各个函数的详细设计说明分别如下:
1、主函数main()
利用无限次循环for(;
;
)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、菜单选择函数switch(menu())
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!
3、输入记录函数intInput(Studentstud[],intn)
这是一个无参函数,用来执行职工信息的输入,当学生九类信息全部输入后,系统提示“继续写入成绩?
Y/N”,选择“N”函数结束。
4、显示记录函数voidDisplay(Studentstud[],intn)
这是一个不返回值的有参函数,形参为数组,负责对全部职工信息的输出,不足之处就是不能对职工信息进行分页显示。
5、查找记录函数voidSearch(Studentstud[],intn)
这是一个不返回值的有参函数,形参为数组,分别实现按职工号或工资对某个职工进行查找,并显示所查找到的记录。
6、修改函数voidModify(Studentstud[],intn)
这是一个有参函数,形参为数组,能将之前输入的数据进行修改。
7、删除记录函数intDelete(Studentstud[],intn)
这是一个有参函数,形参为数组,先输入要删除的职工的职工号,找到后显示该职工信息,直接进行删除。
8、排序函数voidSort(Studentstud[],intn)
在Studentstud[]这个结构数组中按职工号进行由大到小排序:
voidSort(Studentstud[],intn)/*冒泡法排序*/。
3.2流程图
3.3、源程序如下:
#include<
stdio.h>
/*引用库函数*/
#include<
conio.h>
/*输入输出函数*/
stdlib.h>
string.h>
{intnumber;
charname[20];
intmenu()/*菜单函数*/
charc;
do
{
//system("
cls"
);
/*运行前清屏*/
printf("
┏---------------------------------MENU---------------------------------┓"
/*菜单选择*/
│⊙ω⊙<
<
1>
>
录入职工信息│"
│≧ω≦<
2>
显示所有职工信息│"
│ˋ▂ˊ<
3>
查询职工信息│"
│ˇ△ˇ<
4>
修改职工信息并保存│"
│˙︿˙<
5>
删除职工信息│"
│ ̄□ ̄<
6>
按职工号降序排列│"
│●△●<
0>
退出本系统│"
│***********作者:
1009301班完美组合*********│"
┗----------------------------请选择你需要的操作----------------------┛"
========>
请输入数字0~9:
\n"
c=getchar();
/*读入选择*/
}
while(c<
'
0'
||c>
5'
return(c-'
/*返回选择*/
}
intInput(Studentstud[],intn)/*输入若干条记录*/
{
inti=0;
charsign='
y'
x[10];
/*x[10]为清除多余的数据所用*/
while(sign!
='
n'
&
sign!
N'
)/*选择判断*/
printf("
----------请输入职工号----------:
"
/*交互输入*/
scanf("
%d"
&
stud[n+i].number);
----------请输入职工的姓名------:
%s"
stud[n+i].name);
----------请输入职工的性别------:
stud[n+i].sex);
----------请输入职工的出生年月日:
%f"
stud[n+i].year);
----------请输入职工的学历------:
stud[n+i].educat);
----------请输入职工的职务------:
stud[n+i].duty);
----------请输入职工的工资------:
stud[n+i].wage);
----------请输入职工的住址------:
stud[n+i].place);
----------请输入职工的电话------:
%lf"
stud[n+i].tel);
gets(x);
/*清除多余的输入*/
%s\n"
stud[n+i].name);
=====>
提示:
继续写入成绩?
(Y/N)"
%c"
sign);
/*输入判断*/
i++;
}
return(n+i);
}
voidDisplay(Studentstud[],intn)/*显示所有记录*/
inti;
if(!
stud)
没有记录"
else
{
┏--------------------------------------------------------------------------------┓\n"
/*格式头*/
职工号\t姓名\t性别\t生日\t学历\t职务\t工资\t住址\t电话\n"
┗--------------------------------------------------------------------------------┛\n"
for(i=1;
i<
n+1;
i++)/*循环输入*/
{
printf("
%d\t"
stud[i-1].number);
%s\t"
stud[i-1].name);
stud[i-1].sex);
%6.0f"
stud[i-1].year);
stud[i-1].educat);
stud[i-1].duty);
%8.0f\t"
stud[i-1].wage);
stud[i-1].place);
%11.0lf"
stud[i-1].tel);
}
\t\t\t\n"
voidSearch(Studentstud[],intn)/*查找并显示一个记录*/
ints=0;
intt=0;
printf("
按职工号查找请输入1,按工资查找请输入2\n"
scanf("
t);
switch(t)/*选择判断*/
case1:
/*按职工号查找*/
输入需要查找职工的职工号:
s);
while((stud[i].number-s)!
=0&
n)i++;
/*查找判断*/
if(i==n)
=====>
对不起,无法找到该职工的信息!
/*输入失败信息*/
return;
-------------------------------------\n"
/*输出该职工信息*/
职工号:
%d\n"
stud[n-1].number);
姓名:
stud[n-1].name);
性别:
stud[n-1].sex);
出生年月日:
%8.0f\n"
stud[n-1].year);
学历:
stud[n-1].educat);
职务:
stud[n-1].duty);
工资:
%f\n"
stud[n-1].wage);
住址:
stud[n-1].place);
电话:
%11.0lf\n"
stud[n-1].tel);
break;
case2:
/*按姓名查找*/
输入需要查找职工的工资:
while((stud[i].wage-s)!
voidModify(Studentstud[],intn)/*修改职工信息*/
输入需要修改职工信息的职工号:
对不起,无该职工的信息……\n"
-----------------------------------该职工的信息---------------------------------\n"
--------------------------------------------------------------------------------\n"
请输入职工号:
请输入职工的姓名:
请输入职工的性别:
请输入职工的出生年月日:
请输入职工的学历:
请输入职工的职务:
请输入职工的工资:
请输入职工的住址:
请输入职工的电话:
intDelete(Studentstud[],intn)/*按职工号查找,删除一条记录*/
inti=0,j;
输入需要删除职工的职工号:
/*交互式问寻*/
/*查找判断*/
对不起,无法找到该职工号……\n"
/*返回失败信息*/
return(n);
for(j=i;
j<
n-1;
j++)/*删除操作*/
strcpy(stud[j].name,stud[j+1].name);
stud[j].number=stud[j+1].number;
strcpy(stud[j].sex,stud[j+1].sex);
stud[j].year=stud[j+1].year;
strcpy(stud[j].educat,stud[j+1].educat);
strcpy(stud[j].duty,stud[j+1].duty);
stud[j].wage=stud[j+1].wage;
strcpy(stud[j].place,stud[j+1].place);
stud[j].tel=stud[j+1].tel;
已成功删除!
/*返回成功信息*/
return(n-1);
voidSort(Studentstud[],intn)/*按职工号排序*/
inti,j,k;
floats;
chart[20];
for(i=0;
i++)/*冒泡法排序*/
for(j=0;
n-1-i;
j++)
if(stud[j].number<
stud[j+1].number)
{
k=stud[j+1].number;
stud[j+1].number=stud[j].number;
stud[j].number=k;
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
strcpy(t,stud[j+1].sex);
strcpy(stud[j+1].sex,stud[j].sex);
strcpy(stud[j].sex,t);
s=stud[j+1].year;
stud[j+1].year=stud[j].year;
stud[j].year=s;
strcpy(t,stud[j+1].educat);
strcpy(stud[j+1].educat,stud[j].educat);
strcpy(stud[j].educat,t);
strcpy(t,stud[j+1].duty);
strcpy(stud[j+1].duty,stud[j].duty);
strcpy(stud[j].duty,t);
s=stud[j+1].wage;
stud[j+1].wage=stud[j].wage;
stud[j].wage=s;
strcpy(t,stud[j+1].place);
strcpy(stud[j+1].place,stud[j].place);
strcpy(stud[j].place,t);
s=stud[j+1].tel;
stud[j+1].tel=stud[j].tel;
stud[j].tel=s;
}
%8