C语言课程设计实验报告.docx

上传人:b****1 文档编号:15096913 上传时间:2023-06-30 格式:DOCX 页数:35 大小:60.90KB
下载 相关 举报
C语言课程设计实验报告.docx_第1页
第1页 / 共35页
C语言课程设计实验报告.docx_第2页
第2页 / 共35页
C语言课程设计实验报告.docx_第3页
第3页 / 共35页
C语言课程设计实验报告.docx_第4页
第4页 / 共35页
C语言课程设计实验报告.docx_第5页
第5页 / 共35页
C语言课程设计实验报告.docx_第6页
第6页 / 共35页
C语言课程设计实验报告.docx_第7页
第7页 / 共35页
C语言课程设计实验报告.docx_第8页
第8页 / 共35页
C语言课程设计实验报告.docx_第9页
第9页 / 共35页
C语言课程设计实验报告.docx_第10页
第10页 / 共35页
C语言课程设计实验报告.docx_第11页
第11页 / 共35页
C语言课程设计实验报告.docx_第12页
第12页 / 共35页
C语言课程设计实验报告.docx_第13页
第13页 / 共35页
C语言课程设计实验报告.docx_第14页
第14页 / 共35页
C语言课程设计实验报告.docx_第15页
第15页 / 共35页
C语言课程设计实验报告.docx_第16页
第16页 / 共35页
C语言课程设计实验报告.docx_第17页
第17页 / 共35页
C语言课程设计实验报告.docx_第18页
第18页 / 共35页
C语言课程设计实验报告.docx_第19页
第19页 / 共35页
C语言课程设计实验报告.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计实验报告.docx

《C语言课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验报告.docx(35页珍藏版)》请在冰点文库上搜索。

C语言课程设计实验报告.docx

C语言课程设计实验报告

一.实验题目:

人事管理

[说明及要求]

实现红河学院工学院人事信息(编号、姓名、年龄、职务、职称、政治面貌、最高学历、人员类别)的新增、修改、删除、按编号查找,及按职称(助教、讲师、副教授、教授)和性别统计工人数的功能。

注意,人事编号不能重复。

[提示]

(1)用一个文件存放人事信息。

(2)定义结构体表示人员信息。

(3)分别编写函数实现人事信息的新增、修改、删除、按编号查找、按职称和性别统计工人数的功能。

(4)编写main函数调用上述函数进行演示。

二.实验目的:

1.完成C语言程序设计课程的教学之后,通过一周的课程设计可以进一步巩固所学知识,加深理解。

2.指导和促使学生通过各种途径对C语言相关技术内容进行拓展和深入,增强自学能力,软件开发能力等综合能力的培训。

三.实验要求:

1.掌握《C语言程序设计》有关的专业基础知识和程序设计的基本方法。

2.学会利用程序的三种基本结构:

顺序结构,选择结构,循环结构解决不同的问题。

3.学会根据实际需要定义变量及类型。

4.掌握过程和函数的定义和调用方法。

5.学会程序调试的基本方法。

四.实验思路:

(1)添加删除功能:

能根据学院人事的变动情况,添加删除记录。

(2)查询功能:

能根据编号和姓名进行查询。

(3)编辑功能(高级):

根据查询对相应的记录进行修改并记录。

(4)统计功能:

能根据多种参数进行人员的统计(在职人数、党员人数、女工

人数,高学历高职称人数),统计要求同时显示被统计着的信息。

(5)排序功能:

按照年龄、来院时间进行排序。

(6)保存功能:

能对输入的数据进行相应的存储。

 

 

五.实验过程:

1、定义结构

structstaff

{

charnum[10];

charname[20];

charsex[10];

intage;

chartitle[20];

charp_landscape[30];

charQualifications[30];

intService_time;

charcome_time[30];

charcategory[30];

}staff[100];

2、主程序

进入主菜单函数

voidmain()

{

menu();

}

/*******************主菜单函数***************************/

voidmenu()

{

charw0;

do

{

system("cls");

fflush(stdin);/*清除缓冲区输入*/

puts("******************高校人事管理系统*****************\n\n");

puts("\t\t\t\t1)增加人员信息\n");

puts("\t\t\t\t2)删除人员信息\n");

puts("\t\t\t\t3)查询人员信息\n");

puts("\t\t\t\t4)修改人员信息\n");

puts("\t\t\t\t5)统计人员信息\n");

puts("\t\t\t\t6)保存人员信息\n");

puts("\t\t\t\t7)浏览人员信息\n");

puts("\t\t\t\t8)退出\n");

printf("\t\t\t\t请选择[]\b\b");

w0=getchar();

}

while(w0<'1'||w0>'9');

switch(w0-48)

{

case1:

add();break;

case2:

delete_data();break;

case3:

search();break;

case4:

modify();break;

case5:

stastic();break;

case6:

save();break;

case7:

browse();break;

case8:

break;

}

}

(1)查询功能

intsearch_data()/*查找单个数据函数*/

{

inti,flag;

chars[30],w0;

system("cls");/*清屏*/

n=load();

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("通过1)编号2)姓名[]\b\b");

w0=getchar();

}

while(w0<'1'||w0>'2');

if(w0=='1')

{/*按编号查找*/

flag=0;

puts("输入人员编号:

");

scanf("%s",s);

for(i=0;i

{

if(strcmp(s,staff[i].num)==0)

{

printf_face();

printf_one(staff[i]);

flag=1;break;

}

elsecontinue;

}

if(flag==0)

puts("该人员不存在!

");

}

returni;

}

voidsearch()

{

intk;charw1;loop:

k=search_data();

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("1)回主菜单2)退出3)继续查询[]\b\b");

w1=getchar();}while(w1<'1'||w1>'3');

if(w1=='1')menu();

elseif(w1=='2')exit(0);

elsegotoloop;

}

(2)增加人员信息

voidadd()

{

charw0,w1;

loop:

system("cls");

puts("请输入编号(如001):

");

scanf("%s",s.num);

if(test(s.num))gotoloop;/*编号重复*/

puts("请输入姓名:

");

scanf("%s",s.name);

puts("请输入性别(男,女):

");

scanf("%s",s.sex);

puts("请输入年龄:

");

scanf("%d",&s.age);

puts("请输入职务(教授副教授讲师助教学生后勤人员):

");

scanf("%s",s.duty);

puts("请输入职称(无初级高级):

");

scanf("%s",s.title);

puts("请输入政治面貌(党员非党员):

");

scanf("%s",s.p_landscape);

puts("请输入最高学历(小学初中高中大学硕士学位更高):

");

scanf("%s",s.Qualifications);

puts("请输入人员类别(行政人员教师一般员工退休人员临时工):

");

scanf("%s",s.category);

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("是否保存?

1)是2)否[]\b\b");

w0=getchar();}while(w0<'1'||w0>'2');

switch(w0-48)

{

case1:

single_save(s);break;

case2:

break;

}

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("1)继续增加人员信息2)回主菜单3)退出[]\b\b");

w1=getchar();

}

while(w1<'1'||w1>'3');

if(w1=='1')gotoloop;

elseif(w1=='2')menu();

elseexit(0);

}

(3)保存信息

voidsave()

{

charw0;

save_all();

printf("所有信息已保存!

\n");

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("1)回主菜单2)退出[]\b\b");

w0=getchar();

}

while(w0<'1'||w0>'2');

if(w0=='1')menu();

elseexit(0);

}

voidsave_all()/*保存所有数据函数*/

{

inti;

FILE*fp;

if((fp=fopen("text.txt","wb"))==NULL)

{

printf("无法打开文件!

");

exit(0);

}

for(i=0;i

{

if(staff[i].age!

=0)

fprintf(fp,"%s%s%s%d%s%s%s%s%s\n",staff[i].num,staff[i].name,staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,

staff[i].p_landscape,staff[i].Qualifications,staff[i].category);

elsecontinue;

}

fclose(fp);

}

inttest(charh[10])/*检查编号是否重复*/

{

inti;

n=load();

for(i=0;i

if(strcmp(h,staff[i].num)==0)

{

puts("输入的编号有重复!

请重新输入编号!

");

system("pause");

return1;

}

return0;

}

voidsave_all()/*保存所有数据函数*/

{

inti;

FILE*fp;

if((fp=fopen("text.txt","wb"))==NULL)

{

printf("无法打开文件!

");

exit(0);

}

for(i=0;i

{

if(staff[i].age!

=0)

fprintf(fp,"%s%s%s%d%s%s%s%s%s\n",staff[i].num,staff[i].name,staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,

staff[i].p_landscape,staff[i].Qualifications,staff[i].category);

elsecontinue;

}

fclose(fp);

}

(4)删除人员

voiddelete_data()

{

intk;

charw0,w1;

loop:

k=search_data();

if(k

{

Do

{

fflush(stdin);

printf("确认要删除该人员信息?

1)是2)否[]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1')

{

staff[k].age=0;

save_all();

puts("该人员信息已被删除!

");

}

}

Do

{

fflush(stdin);

printf("1)继续删除数据2)回主菜单3)退出[]\b\b");w1=getchar();

}

while(w1<'1'||w1>'3');

if(w1=='1')gotoloop;

elseif(w1=='2')menu();

elseexit(0);

}

(5)修改人员信息

voidmodify()

{

intk=0,w0,g;

charh[30],w1,w2;

loop:

g=search_data();

if(g

{

do

{

puts("\t\t\t修改:

1)编号");

puts("\t\t\t2)姓名");

puts("\t\t\t3)性别");

puts("\t\t\t4)年龄");

puts("\t\t\t5)职务");

puts("\t\t\t6)职称");

puts("\t\t\t7)政治面貌");

puts("\t\t\t8)最高学历");

puts("\t\t\t9)人员类别");

printf("请选择:

[]\b\b");

scanf("%d",&w0);

}

while(w0<1||w0>11);

switch(w0)

{

case1:

puts("请输入新编号:

");

scanf("%s",h);strcpy(staff[g].num,h);break;

case2:

puts("请输入姓名:

");

scanf("%s",h);strcpy(staff[g].name,h);break;

case3:

puts("请输入性别:

");

scanf("%s",h);strcpy(staff[g].sex,h);break;

case4:

puts("请输入年龄:

");

scanf("%d",&k);staff[g].age=k;break;

case5:

puts("请输入职务:

");

scanf("%s",h);strcpy(staff[g].duty,h);break;

case6:

puts("请输入职称:

");

scanf("%s",h);strcpy(staff[g].title,h);break;

case7:

puts("请输入政治面貌:

");

scanf("%s",h);strcpy(staff[g].p_landscape,h);break;

case8:

puts("请输入最高学历:

");

scanf("%s",h);strcpy(staff[g].Qualifications,h);break;

case9:

puts("请输入人员类别:

");

scanf("%s",h);strcpy(staff[g].category,h);break;

}

do

{

fflush(stdin);

printf("是否保存?

1)保存2)否[]\b\b");

w1=getchar();}while(w1<'1'||w1>'2');

if(w1=='1'){save_all();puts("保存修改成功!

");

}

}

do

{

fflush(stdin);

printf("1)继续修改2)回主菜单3)退出[]\b\b");w2=getchar();}while(w2<'1'||w2>'3');

if(w2=='1')gotoloop;

elseif(w2=='2')menu();

elseexit(0);

}

(6)统计人员信息

voidstastic()

{

inti,count;

charw0,w1;

n=load();

if(n==0)

{

puts("没有数据!

");

getchar();menu();

}

loop:

system("cls");

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("通过1)在职人员2)党员\n");

printf("3)女工人数4)最高学历[]\b\b");

w0=getchar();}while(w0<'1'||w0>'4');

if(w0=='1')

{/*统计在职人员*/

printf_face();

for(i=0,count=0;i

if(strcmp(staff[i].category,"退休人员")!

=0&&strcmp(staff[i].category,"临时工")!

=0)

{

count++;printf_one(staff[i]);

}

printf("\t\t\t\t共有%d条记录",count);

}

elseif(w0=='2')

{/*统计党员*/

printf_face();

for(i=0,count=0;i

if(strcmp(staff[i].p_landscape,"党员")==0)

{

count++;printf_one(staff[i]);

}

printf("\t\t\t\t共有%d条记录",count);

}

elseif(w0=='3'){/*统计女工人员*/

printf_face();

for(i=0,count=0;i

if(strcmp(staff[i].sex,"女")==0)

{

count++;printf_one(staff[i]);

}

printf("\t\t\t\t共有%d条记录",count);

}

else

{

/*统计高学历人员*/

printf_face();

for(i=0,count=0;i

if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0)

{

count++;printf_one(staff[i]);

}

printf("\t\t\t\t共有%d条记录",count);

}

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("\n1)继续统计2)回主菜单3)退出[]\b\b");

w1=getchar();}while(w1<'1'||w1>'3');

if(w1=='1')gotoloop;

elseif(w1=='2')menu();

elseexit(0);

}

六.实验调试和结果:

实验调试出现的一些错误及解决方案:

1,语法错误,如没加分号,大括号等,根据错误提示找到错误地方改正错误。

2,未定义,有些变量没定义就直接使用导致错误,找到未定义的变量根据实际要求定义再使用。

调试结果:

 

七.实验小结:

通过本次试验我对本学期所学的C语言程序设计有了更深的理解,通过自己所学的知识加以老师网络的帮助完成了本次的课程设计,我学到了很多,不仅是课程中的知识,还有一种靠自己动手解决问题的能力。

在编程中我遇到了很多困难,有的错误我根本不知道我哪里出错了,获取到老师或同学的帮助后我积极动手解决问题,最终完成了自己的课程设计。

八.附录(程序源代码)

#include

#include

#include

structstaff

{charnum[10];

charname[20];

charsex[10];

intage;

charduty[20];

chartitle[20];

charp_landscape[30];

charQualifications[30];/*学历*/

charcategory[30];/*人员类别*/

}

staff[100];

structstaffs;

intn;

voidmenu();

voidprintf_face()/*显示数据结构项目函数*/

{

printf("编号姓名性别年龄职务职称政治面貌学历人员类别\n");

}

voidprintf_one(structstaffp)/*输出单个数据函数*/

{

printf("%-4s%-7s%-5s%-3d%-7s%-5s%-8s%-12s%-3s\n",p.num,p.name,p.sex,p.age,p.duty,p.title

p.p_landscape,p.Qualifications,p.category);

}

intload()/*加载函数*/

{

inti=0;

FILE*fp;

if((fp=fopen("text.txt","rb"))==NULL)

{

return0;

exit(0);

}

for(i=0;!

feof(fp);i++)

{/*输出数据到结构体*/

fscanf(fp,"%s%s%s%d%s%s%s%s%s\n",staff[i].num,staff[i].name,staff[i].sex,

&staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,staff[i].Qualifications,staff[i].category);

}

fclose(fp);

returni;

}

intsearch_data()/*查找单个数据函数*/

{

inti,flag;

chars[30],w0;

system("cls");/*清屏*/

n=load();

do

{

fflush(stdin);/*清除缓冲区输入*/

printf("通过1)编号2)姓名[]\b\b");

w0=getchar();

}

while(w0<'1'||w0>'2');

if(w0=='1')

{/*按编号查找*/

flag=0;

puts("输入人员编号:

");

scanf("%s",s);

for(i=0;i

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2