14课程设计Word文件下载.docx
《14课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《14课程设计Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
for(i=0;
i<
=3;
i++)
{
aa[i]+=5;
aa[i]%=10;
}
=3/2;
t=aa[i];
aa[i]=aa[3-i];
aa[3-i]=t;
加密后数据为:
for(i=3;
i>
=0;
i--)
printf("
aa[i]);
\n"
return0;
}
运行结果:
【题目6】
编写一个将某个范围在0~32767之间的整数转换为R进制(R=2,8,16)的通用程序。
#include<
voidtrans(intn,intm)
if(n)
{
trans(n/m,m);
if(n%m<
10)printf("
%c"
n%m+'
0'
elseprintf("
n%m-10+'
A'
}
}
voidmain()
{
intn,m;
基础题6\n"
输入十进制数N和转化的进制数M:
%d%d"
n,&
m);
十进制数%d转化成%d进制后的结果为:
trans(n,m);
【题目11】
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
#defineN10
voidgetin(int*p,intn)
请输入%d个整数:
n);
inti;
n;
i++)scanf("
p+i);
voidgetout(int*p,intn)
i++)printf("
%6d"
*(p+i));
putchar('
\n'
voidmv(int*p,intn,intm)
int*h,t,i;
h=p+n-m-1;
for(;
h>
=p;
h--)
{for(i=0;
m;
i++)
{t=*(h+i);
*(h+i)=*(h+i+1);
*(h+i+1)=t;
voidmain()
inta[N];
intm;
基础题11\n"
getin(a,N);
//输入整数
getout(a,N);
//处理前输出
你要把最后面多少个整数移到最前面?
scanf("
mv(a,N,m);
//移位处理
//处理后输出
(二)综合题目:
【题目7】职工工资管理系统
功能设计要求
1.输入记录:
将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2.显示记录:
根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3.修改记录:
可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:
可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5.删除记录:
可删除数据文件中的任一记录。
6.统计:
(A)计算各项工资平均工资及总工资,(B)统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元)以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。
把统计的信息保存到数据文件中。
例如:
职工工资信息表
ID号姓名基本工资职务工资津贴医疗保险-公积金-总工资
01张望12867941981091352034
02李明1185628135941141740
03王小民8954389864731294
04张效章13508682101161502162
05彭山7453988461681098
各项平均工资1092.2625.214588.8108
程序分析:
在输入职工信息时,运用voidwrite()调用函数展开对文件的使用,首先定义一个指针文件,又以写的方式打开此文件,用一个for循环按照ID号姓名基本工资职务工资津贴医疗保险公积金的格式循环获取职工的记录,接着又用了一个for循环将职工记录写入文件“wok.dat”中,关闭文件。
在查询职工信息时,选择按职工姓名查询,首先是以只读的方式打开文件“wok.dat”,然后输入要查询的职工姓名,用一个比较函数strcmp来查询要查找的人,之后在显示器上显示职工信息,然后关闭文件。
在修改职工信息时,选择按职工姓名修改,首先是以读写的方式打开文件“wok.dat”。
输入要修改的职工姓名并显示该职工的信息,然后对职工的信息进行修改,就可获得新的职工记录。
之后文件指针指向该修改的记录开头,修改完成时系统会显示修改后的文件数据:
ID号姓名基本工资职务工资津贴医疗保险公积金总工资,然后关闭文件。
在删除职工信息时,选择按职工姓名删除记录,首先是只读的方式打开一个二进制文件“wok.dat”。
循环依次改后职工信息写入文件,并显示删除后文件中的职工信息,最后可以关闭文件。
在统计职工信息时,运用voidsta()调用函数展开对文件的使用。
首先是以只读的方式打开文件“wok.dat”。
运用for循环,显示大于规定工资的职工工人数量,关闭文件,统计完成。
在输出职工信息时,运用voidoutput()调用函数展开对文件的使用。
首先以只读的方式打开一个文本文件”wok.dat”。
操作无误则用for循环输出正在查询职工的:
D号姓名基本工资职务工资津贴医疗保险公积金总工资,这些完成后用fclose(fp)函数关闭文件。
//头文件
stdlib.h>
string.h>
#defineSIZE5
structworker_type
{charname[10];
intID;
intjiben;
intzhiwu;
intjintie;
intyibao;
intgongjijin;
intzong;
}wok[SIZE];
voidmenu()//菜单函数
计科156班201315607\n"
******************职工信息管理****************\n"
1.录入职工信息\n"
2.浏览职工信息\n"
3.查询职工信息\n"
4.修改职工信息\n"
5.删除职工信息\n"
6.统计职工信息\n"
0.退出\n"
**********************************************\n"
voidinput()//写入数据
FILE*fp;
if((fp=fopen("
wok.dat"
"
wb"
))==NULL)
cannotopenfile\n"
return;
SIZE;
if(fwrite(&
wok[i],sizeof(structworker_type),1,fp)!
=1)
printf("
filewriteerror\n"
fclose(fp);
voidinput1(inta)//读数据进文件
sta.dat"
ab"
a,sizeof(int),1,fp)!
voidoutput()//读出数据
ID号姓名基本工资职务工资津贴医疗保险公积金总工资\n"
rb"
exit(0);
fread(&
wok[i],sizeof(structworker_type),1,fp);
%6d%8s%8d%8d%8d%8d%8d%8d\n"
wok[i].ID,wok[i].name,wok[i].jiben,wok[i].zhiwu,wok[i].jintie,
wok[i].yibao,wok[i].gongjijin,(wok[i].jiben+wok[i].zhiwu+wok[i].jintie+wok[i].yibao+wok[i].gongjijin));
fclose(fp);
voidmodi()//修改数据
charname3[10];
rb+"
不能打开文件\n"
exit
(1);
要修改的职工姓名:
%s"
name3);
if(strcmp(wok[i].name,name3)==0)
{
修改前的职工信息:
wok[i].yibao,wok[i].gongjijin,(wok[i].jiben+wok[i].zhiwu+wok[i].jintie+wok[i].yibao+wok[i].gongjijin));
break;
}
if(i==SIZE)
查无此人!
else
输入要修改的职工信息:
输入格式:
ID号姓名基本工资职务工资津贴医疗保险公积金\n"
scanf("
%d%s%d%d%d%d%d"
wok[i].ID,wok[i].name,&
wok[i].jiben,&
wok[i].zhiwu,&
wok[i].jintie,&
wok[i].yibao,&
wok[i].gongjijin);
修改后的职工信息:
input();
voidsearch()//查询数据
charname1[10];
要查询的姓名:
name1);
if(strcmp(wok[i].name,name1)==0)
fclose(fp);
voiddele()//删除数据
inti,j,n;
charname2[10];
删除前:
for(n=0;
fread(&
wok[n],sizeof(structworker_type),1,fp);
n++)
wok[n].ID,wok[n].name,wok[n].jiben,wok[n].zhiwu,wok[n].jintie,
wok[n].yibao,wok[n].gongjijin,(wok[n].jiben+wok[n].zhiwu+wok[n].jintie+wok[n].yibao+wok[n].gongjijin));
要删除的职工姓名:
name2);
(strcmp(wok[i].name,name2)!
=0&
&
n);
if(i>
=n)
\t没有%s职工号的职工\n"
name2[10]);
exit
(2);
fp=fopen("
w+"
if(n==1)
fclose(fp);
exit(3);
for(j=0;
j<
i;
j++)
fwrite(&
wok[j],sizeof(structworker_type),1,fp);
for(j=i+1;
删除后:
fseek(fp,0,SEEK_SET);
for(i=0;
voidwrite()//将职工信息写入文件
输入工人信息:
ID号姓名基本工资职务工资津贴医疗保险公积金\n"
input();
voidsta()//统计函数
inti,j,a=0,b=0,c=0;
inttotal[SIZE];
intsum=0;
for(j=0;
total[j]=wok[j].jiben+wok[j].zhiwu+wok[j].jintie+wok[j].yibao+wok[j].gongjijin;
sum+=total[i];
if(total[i]<
=1500&
total[i]>
=1000)
{a++;
if(total[i]>
1500&
total[i]<
=2000)
{b++;
2000)
{c++;
\n\n工资总额为:
%d\n"
sum);
平均工资为:
sum/SIZE);
在1000-1500元的员工占总员工的百分之%d\n"
a*100/SIZE);
在1500-2000元的员工占总员工的百分之%d\n"
b*100/SIZE);
在2000元以上的员工占总员工的百分之%d\n"
c*100/SIZE);
//调用函数,将各类职工所占比例存入到另一个文件
input1(a*100/SIZE);
input1(b*100/SIZE);
input1(c*100/SIZE);
main()//主函数
menu();
while(true)
intx;
功能选择(0-6):
x);
switch(x)
{case1:
write();
break;
case2:
output();
case3:
search();
case4:
modi();
case5:
dele();
case6:
sta();
default:
printf("
对不起,有关功能正在开发!
^-^\n"
if(x==0)break;
运行程序:
1.录入职工信息:
职工信息存入wok文件:
2.浏览职工信息:
3.查询职工信息:
4.修改职工信息:
修改后的职工信息存入wok文件:
5.删除职工信息:
删除职工信息后的wok文件:
6.统计职工信息:
7.退出
(3)总结
经过对C语言学习,我们掌握了C语言的基础知识,我对课程设计有了一定的了解,并且通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,何况我所掌握的C语言知识还只是毛皮,对C语言的深层知识还没有掌握,所以我发现只有把所学的理论知识与实践结合起来,从理论中得出结论,才能真正为今后的学习、工作服务,从而提高自己的实际动手能力和独立思考的能力。
当我坐到电脑前准备开始编写代码的时候才发现无从下手。
通过去图书馆查找程序设计相关书籍,和上网参考前人编写的类似程序,我脑中才有了一个大概方向。
在子函数编写时,我遇到了一个很大问题,就是对修改函数不知如何下手,我有想过用查找函数直接查找,然后修改并存入文件,还有与同学探讨得知删除函数的编写。
然后我对着电脑不断地编译、调试、修改,每次编好一个能够成功运行的程序,我都会感到很欣慰,但自己编的程序自己很难发现当中的错误,而电脑又没有提示的时候就很受打击,也会着急。
但可以先放一放,让脑子休息一下,忘掉错误的记忆,或许等过段时间再回过头来。
就会很容易发现之前的错误了。
随着编好的程序越多,积累的经验也越多,查找错误就越快了。
还有会发现很多