C语言课程设计报告模板.docx

上传人:b****8 文档编号:9482060 上传时间:2023-02-04 格式:DOCX 页数:27 大小:21.07KB
下载 相关 举报
C语言课程设计报告模板.docx_第1页
第1页 / 共27页
C语言课程设计报告模板.docx_第2页
第2页 / 共27页
C语言课程设计报告模板.docx_第3页
第3页 / 共27页
C语言课程设计报告模板.docx_第4页
第4页 / 共27页
C语言课程设计报告模板.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告模板.docx

《C语言课程设计报告模板.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告模板.docx(27页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告模板.docx

C语言课程设计报告模板

 

中国地质大学(武汉)

 

课程设计报告

 

c语言程序设计

统计学

所在院系

经济管理学院

指导老师

江俊君

2016/6/11

 

目录2

 

1.课程论文题目3

2.程序设计思路4

3.功能模块图5

4.数据结构设计6

5.算法设计7

6.程序代码10

7.程序运行结果16

8.编程中遇到的困难及解决方法19

9.总结心得及良好建议20

10.致谢20

1.课程论文题目

 

职工信息管理系统

 

内容:

[要求]

职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话

 

等(职工号不重复)。

功能:

实现简单的职工工资信息管理,职工工资的基本信息包括编号、姓名、基本工资、奖金、工资总额等

 

1.系统以菜单方式工作。

 

2.职工信息录入功能(职工信息用文件保存)。

 

3.职工信息浏览功能。

 

4.职工信息查询功能。

查询方式。

 

(1)按学历查询。

 

(2)按工号查询。

2.程序设计思路

(1)需求分析

系统要以菜单方式工作,因而根据题目要求,提供键盘式选择菜单实现功能选择,职工信息采用文件保存,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、等操作;要实现职工信息的查询,则要提供查找功能(包括按学历查询

和按工号查询两种查询方式);要实现职工信息的删除、修改,则要提供文件记录的删除、修改功能。

 

(2)总体设计

 

根据上面的需求分析,可以将这个系统设计分为以下模块:

职工信息输入模块、职工信息浏览模块、职工信息查询模块、职工信息删除与修改模块

(3)数据信息

建立职工信息结构体,结构体成员包括工号、姓名、性别、年龄、学历、工资、住址和电话。

Structemployee

{

charnum[20];

charname[8];

charsex[10];

charage[10];

charxueli[30];

charwanges[10];

chartel[15];

charaddr[50];

}em[N]

3.功能模块图

 

录入模块

 

菜单浏览模块

 

100

80学历查询

60

东部

40

西部

20查询模块北部

0

第一季度第三季度

工号查询

 

4.数据结构设计

建立职工信息结构体,结构体成员包括工号、姓名、性别、年龄、学历、工资、住址和电话。

Structemployee

{

charnum[20];//

工号

charname[30];//

姓名

charsex[10];//

性别

charage[10];//

年龄

charxueli[30];//

学历

charwanges[10];//工资

chartel[15];//

电话

charaddr[50];

住址

}em[N]

5.算法设计

1.输入模块:

输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义

的voidappend()函数来实现。

2.浏览模块:

浏览所有职工的相关信息,通过自己定义的

voiddisplay

()函数来实

现。

3.按职工号查询模块:

可以按职工号来查询职工的相关信息,通过自己定义的void

search_num()函数来实现。

8.按职工的的学历查询模块:

可以按职工的学历来查询职工的相

关信息,通过自己定义的voidsearch_xuelil函数来实现。

4.退出模块:

退出职工信息管理系统,通过头文件windows.h中的exit(0)函数来实

现。

 

1.录入模块

voidappend()

{

inti,n;

FILE*fp;

fp=fopen("employee_list","wb");//俩一起定义fp

printf("请输入职工个数\n");

scanf("%d",&n);

for(i=0;i

{

printf("

请输入职工号:

");

scanf("%d",&em[i].num);

printf("请输入姓名:

");

scanf("%s",em[i].name);

getchar();

printf("

请输入性别(f--

女m--

男):

");

scanf("%s",&em[i].sex);

printf("

请输入年龄:

");

scanf("%s",&em[i].age);

printf("

请输入学历:

");

scanf("%s",em[i].xueli);

printf("

请输入工资:

");

scanf("%s",&em[i].wanges);

printf("

请输入住址:

");

scanf("%s",em[i].addr);

printf("

请输入电话:

");

scanf("%s",em[i].tel);

printf("\n");

}

save(n);

}

 

2.浏览模块

voiddisplay()

{

inti;intm=load();

printf("职工号printf("学历\t\t

\t

姓名\t\t工资\t\t

性别\t\t住址\t\t

年龄\n");

电话\n");

for(i=0;i

{

printf("%d\t",em[i].num);

printf("%s\t",em[i].name);

printf("%s\t",em[i].sex);

printf("%s\t",em[i].age);

printf("%s\t",em[i].xueli);

printf("%s\t",em[i].wanges);

printf("%s\t",em[i].addr);

printf("%s\t",em[i].tel);

printf("\n");

}

}

 

2.查询模块

voidsearch()

{

inta;

printf("\n按职工号查询请按1\n按学历查询请按2\n返回主菜单请按3\n");

scanf("%d",&a);

switch(a)

{

case1:

printf("

case2:

printf("

按职工号查询\n");search_num();break;

按学历查询\n");search_xueli();break;

case3:

main();break;

default:

printf("

您输入有误,请重新选择

!

\n");break;

}

}

 

(1)按工号查询

voidsearch_num()

 

intnum,i,t;intm=load();//

printf("请输入要查找的职工号

 

使m=文件输入的个数

:

\n");

scanf("%d",&num);

for(i=0;i

if(num==em[i].num)

{

printf("\n已找到此人,其记录为:

\n");

printf("职工号\t姓名\t\t性别\t\t年龄\n");

printf("学历\t\t工资\t\t住址\t\t电话\n");

printf("%d\t",em[i].num);

printf("%s\t",em[i].name);

printf("%s\t",em[i].sex);

printf("%s\t",em[i].age);

printf("%s\t",em[i].xueli);

printf("%s\t",em[i].wanges);

printf("%s\t",em[i].addr);

printf("%s\t",em[i].tel);

printf("\n");

break;

}

if(i==m)//因为i=0,i=m就超了

printf("\n对不起,查无此人\n");

printf("\n");

printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);

switch(t)

{

case1:

search();break;

case2:

search_num();break;

default:

break;

}

}

(2)按学历查找

voidsearch_xueli()

{

charxueli[30];

inti,t;intm=load();

printf("请输入要查找的学历:

\n");

scanf("%s",xueli);

for(i=0;i

if(strcmp(em[i].xueli,xueli)==0)

{

printf("\n

printf("

已找到,其记录为:

职工号\t姓名\t\t

\n");

性别\t\t

 

年龄\n");

printf("学历\t\t工资\t\t住址\t\t电话\n");

printf("%d\t",em[i].num);

printf("%s\t",em[i].name);

printf("%s\t",em[i].sex);

printf("%s\t",em[i].age);

printf("%s\t",em[i].xueli);

printf("%s\t",em[i].wanges);

printf("%s\t",em[i].addr);

printf("%s\t",em[i].tel);

printf("\n");

}

if(i==m)

printf("\n对不起,查无此人\n");

printf("\n");

printf("返回查询函数请按1,继续查询学历请按2\n");

scanf("%d",&t);

switch(t)

{

case1:

search();break;

case2:

search_xueli();break;

default:

break;

}

}

 

6.程序代码

#include

#include//包括exit(0),无需定义

#include

#include

#defineN100//可以随便改人数

voidappend();//录入

voiddisplay();//浏览

voidsearch();//查询

voidsearch_num();//工号

voidsearch_xueli();//学历

voidsave(int);//声明一个形参

structemployee//定义结构体数组全局变量

{

charname[30];//省事

charsex[10];

中不行

charage[10];

charxueli[30];

charwanges[10];

chartel[15];

charaddr[50];

}em[N];

voidmain()

{

intn;

n=1;

while(n)//用一个循环使之能够返回

{

printf("************职工信息管理系统************\n");

printf("1.录入职工信息\n");

printf("2.浏览职工信息\n");

printf("3.查询职工信息\n");

printf("4.退出\n");

printf("请按功能序号:

\n");

scanf("%d",&n);

switch(n)

{

case1:

append();break;

case2:

display();break;

case3:

search();break;

case4:

exit(0);n=0;break;

default:

printf("输入错误指令\n");

}

}

printf("\n

按任意键继续

\n");

getch();

}

voidappend()

{

inti,n;

FILE*fp;

fp=fopen("employee_list","wb");//

俩一起定义

fp

printf("

请输入职工个数

\n");

scanf("%d",&n);

for(i=0;i

 

printf("

 

请输入职工号:

 

");

scanf("%d",&em[i].num);

printf("

请输入姓名:

");

scanf("%s",em[i].name);

getchar();

printf("

请输入性别(f--

女m--

男):

");

scanf("%s",&em[i].sex);

printf("

请输入年龄:

");

scanf("%s",&em[i].age);

printf("

请输入学历:

");

scanf("%s",em[i].xueli);

printf("

请输入工资:

");

scanf("%s",&em[i].wanges);

printf("

请输入住址:

");

scanf("%s",em[i].addr);

printf("

请输入电话:

");

scanf("%s",em[i].tel);

printf("\n");

}

save(n);

}

voidsave(intn)//save函数save了多少个

{

FILE*fp;

inti;

if((fp=fopen("employee_list","wb"))==NULL)//能否以写的形式打开,wb2进制

{

printf("cannotopenfile\n");

exit(0);

}

for(i=0;i

if(fwrite(&em[i],sizeof(structemployee),1,fp)!

=1)//

printf("filewriteerror\n");

fclose(fp);

}

intload()//数出录入的个数

{

FILE*fp;

inti;

if((fp=fopen("employee_list","rb"))==NULL)

{

printf("cannotopenfile\n");

exit(0);

}

for(i=0;!

feof(fp);i++)//feoffread(&em[i],sizeof(struct

检查文件是否结束,结束时返回非零值

employee),1,fp);//以二进制向文件读写数据,地址,字

节,读多少个数据,文件指针

fclose(fp);

return(i);

}

 

voiddisplay()

{

inti;intm=load();

printf("职工号printf("学历\t\t

\t

姓名\t\t工资\t\t

性别\t\t住址\t\t

年龄\n");

电话\n");

for(i=0;i

{

printf("%d\t",em[i].num);

printf("%s\t",em[i].name);

printf("%s\t",em[i].sex);

printf("%s\t",em[i].age);

printf("%s\t",em[i].xueli);

printf("%s\t",em[i].wanges);

printf("%s\t",em[i].addr);

printf("%s\t",em[i].tel);

printf("\n");

}

}

voidsearch()

{

inta;

printf("\n按职工号查询请按1\n按学历查询请按2\n返回主菜单请按

scanf("%d",&a);

switch(a)

{

case1:

printf("按职工号查询\n");search_num();break;

case2:

printf("按学历查询\n");search_xueli();break;

case3:

main();break;

default:

printf("您输入有误,请重新选择!

\n");break;

}

 

3\n");

}

voidsearch_num()

 

intnum,i,t;intm=load();//

printf("请输入要查找的职工号

 

使m=文件输入的个数

:

\n");

scanf("%d",&num);

for(i=0;i

if(num==em[i].num)

{

printf("\n已找到此人,其记录为:

\n");

printf("职工号\t姓名\t\t性别\t\t年龄\n");

printf("学历\t\t工资\t\t住址\t\t电话\n");

printf("%d\t",em[i].num);

printf("%s\t",em[i].name);

printf("%s\t",em[i].sex);

printf("%s\t",em[i].age);

printf("%s\t",em[i].xueli);

printf("%s\t",em[i].wanges);

printf("%s\t",em[i].addr);

printf("%s\t",em[i].tel);

printf("\n");

break;

}

if(i==m)//因为i=0,i=m就超了

printf("\n对不起,查无此人\n");

printf("\n");

printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);

switch(t)

{

case1:

search();break;

case2:

search_num();break;

default:

break;

}

}

voidsearch_xueli()

{

charxueli[30];

inti,t;intm=load();

printf("请输入要查找的学历:

\n");

scanf("%s",xueli);

for(i=0;i

if(strcmp(em[i].xueli,xueli)==0)

{

printf("\n

已找到,其记录为:

\n");

printf("

职工号\t

姓名\t\t

性别\t\t

年龄\n");

printf("

学历\t\t

工资\t\t

住址\t\t

电话\n");

printf("%d\t",em[i].num);

printf("%s\t",em[i].name);

printf("%s\t",em[i].sex);

printf("%s\t",em[i].age);

printf("%s\t",em[i].xueli);

printf("%s\t",em[i].wanges);

printf("%s\t",em[i].addr);

printf("%s\t",em[i].tel);

printf("\n");

}

if(i==m)

printf("\n对不起,查无此人\n");

printf("\n");

printf("返回查询函数请按1,继续查询学历请按2\n");

scanf("%d",&t);

switch(t)

{

case1:

search();break;

case2:

search_xueli();break;

default:

break;

}

}

7.程序运行结果

1.运行程序菜单模块初始化,如图

 

1.按1进入职工信息录入模块,输入职工信息工号007,姓名

 

007,性别M,年龄30,学历zhongguodizhidaxue,工资9999,住址beiqu21d电话888888如图

2.在输入完N个数据后,按2进入职工信息浏览模块,看到信息

 

3.按3进入职工查询模块,如图

 

按1进入按职工号查询模块,输入007查询,如图

 

按2进入学历查询模块,输入zhongguodizhidaxue,如图

 

按1返回查询函数,按4退出,如图

 

8.编程中遇到的困难及解决方法

这一次老师让我们从第8题和第21题中选,瞄了两眼,决定

 

选职工信息管理第8题,没想到这么难弄,足足用了两周时

 

间才搞定。

上机好几次之后,遇到一些小问题需要解决而我

 

又不太熟悉的就去查书、上网或者问同学。

其中以查书居多。

 

比如对于结构体和全局、局部变量,总是会出现数据没用的

 

现象,问同学后发现把结构体放在主函数前作全局变量,就

 

没事了。

还有在数组的比较就是strcmp(a,b)中发自现只有两个

 

a、b一样类型时才有用。

其中有一些特别简单的问题,比如

 

函数中没有返回值,类型就只能是空(void)的等。

最重要的

 

是对文件这个类型的认识。

因为对其极其不熟悉,所以可以说

 

我是自己自学了一遍对于文件的读写,写文件时几乎从书上照搬了过

 

来,并且常出错,如fwrite()写进文件中括号里各项的输入,最后在

 

上网查阅后得以找到解决方法。

不过最终完成了这次编程。

9.总结心得及建议

上机实习需要有一定的C语言基础,其是学习程序设计语言必不

 

可少的实践环节,某些东西必须通过上机才能发现,比如对知识点的

 

掌握程度,一个不小心就会出现一串令人崩溃的error。

 

课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不

 

容易记住,死记硬背是不可取的。

然而要使用C语言这个工具解决实

 

际问题,又必须掌握它。

通过多次上

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1