教职工系统课程设计.docx
- 文档编号:27598377
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:46
- 大小:72.86KB
教职工系统课程设计.docx
《教职工系统课程设计.docx》由会员分享,可在线阅读,更多相关《教职工系统课程设计.docx(46页珍藏版)》请在冰豆网上搜索。
教职工系统课程设计
课程设计
课程名称程序设计课程设计
设计题目
班级与班级代码
专业计算机科学与技术
指导教师:
学号:
姓名:
提交日期:
年月日
广东财经大学教务处制
姓名课程设计成绩
评语:
评价内容
不及格
及格
中
良
优
表达精练,格式准确,基本无错别字
内容完整,思路清晰,结构严谨,设计科学,可操作性强
程序能完成课程设计任务书所规定的任务,功能完善,
独立分析和解决问题能力较好。
代码简洁,算法清晰,可读性强
无抄袭现象且课程设计报告体会深刻
指导教师(签名)
年月日
教职工系统课程设计
1系统功能要求(需求分析):
采用结构体数组或文件形式存储职工的信息,每个职工应包含如下几方面的信息:
职工号、姓名、性别、所属二级单位、所学专业、职称、月工资,电话号码。
软件由主函数(含欢迎界面)和下列6个功能模块组成:
(1)减少一个职工的信息(需指定要删除职工的职工号或姓名或电话号码);
(2)增加一个职工号信息(需输入要增加职工号的所有信息);
(3)查找一个职工号的信息(需指定职工号或电话号码或姓名);
(4)统计指定二级单位的职工人数、工资总额;
(5)按职工的工资多少对职工排序;
(6)退出程序的运行。
描述所选题目(或主题)的功能设计要求。
(正文宋体4号,行距固定为20英镑)
2系统总体(概要)设计思想
(1)开发与设计的总体思想(二级标题缩进两格,宋体四号)
高校在职职工管理软件算法说明:
step1:
预处理,定义结构体;
step2:
进入欢迎界面;
step3:
选择菜单对应的某一种功能;
step4:
根据提示输入数字序号;
step5:
对输入的数字序号编辑关于对职工数据进行编辑、查找、统计和排序的函数;
step6:
重新进入菜单界面,返回到step3;
step7:
如果输入数字表示退出,退出系统。
(2)系体模块结构图
(3)系统文件及函数组成、功能(参考P154的表12-1)
源文件
函数名或其他成分
功能
worker.c
main
总控函数
menu_select
菜单选择
handle_menu
菜单处理
quit
结束运行
add_disp.c
show
输出表格信息
addRecord
在表尾追加信息
que_remv_modi_stat.c
removeRecord
删除指定的记录
findinfo
查找指定的记录
copyRecord
复制记录
statistics
统计二级单位信息
save_load.c
save
文件存储
load
文件读取
worker.h
常数
提供常数
结构声明
学生成绩结构
3系统详细设计
(1)函数的描述
1头文件
文件名称:
worker.h
功能:
声明函数原型,包含文件及自定义宏和数据结构
要求:
报告是否能正常打开文件执行存入操作及存入记录的条数
2主函数
函数原型:
intmain(void)
功能:
控制程序,显示欢迎界面并检测密码是否正确
参数:
void
返回值:
int
要求:
管理菜单命令并完成初始化,密码输入错误三次,自动关闭程序。
3菜单处理函数
函数原型:
voidhandle_menu(void)
功能:
处理选择的菜单命令
参数:
void
返回值:
void
工作方式:
根据命令调用相应函数
要求:
给出结束信息
4菜单选择函数
函数原型:
intmune_select(void)
功能:
接收用户选择的命令代码
参数:
void
返回值:
int
工作方式:
返回命令代码的整数值
要求:
只允许选择指定的按键,如果输入不正确,提醒用户重新输入
5退出函数
函数原型:
voidquit(void)
功能:
提醒是否保存记录,并退出程序。
参数:
void
返回值:
void
工作方式:
根据用户选择判断是否调用保存函数,并退出。
要求:
若不保存记录,则要释放内存。
⑥显示函数
函数原型:
voidshow(void)
功能:
显示记录的信息
参数:
void
返回值:
void
工作方式:
用print函数把记录输出
要求:
工整
⑦添加信息函数
函数原型:
voidaddRecord(void)
功能:
添加信息到记录中
参数:
void
返回值:
void
工作方式:
根据顺序将信息添加到记录中,并判断有无重复的职工号。
要求:
相同职工号不得用两次
删除记录函数
函数原型:
voidremoveRecord(void)
功能:
删除记录中的信息
参数:
void
返回值:
void
工作方式:
根据用户选择方式查询所需删除的记录,再将其从内存中删除。
要求:
要有不同的选择方式
排序函数
函数原型:
voidsortInfo(void)
功能:
将记录信息进行排序
参数:
void
返回值:
void
工作方式:
根据用户选择方式将记录信息从小到大排序或从大到小排序等
要求:
正确处理排序要求
复制函数
函数原型:
voidcopyRecord(WorkInfo*src,WorkInfo*dest)
功能:
将src指向的一条记录复制到dest指向的记录。
参数:
源记录WorkInfo*src,目的记录WorkInfo*dest
返回值:
void
工作方式:
将源记录复制到目的记录中
要求:
正确复制记录
⑪统计函数
函数原型:
voidstatistics(void)
功能:
统计二级单位的信息
参数:
void
返回值:
void
工作方式:
将用户所选二级单位所包含的记录统计并整理
要求:
无
⑫查询函数
函数原型:
intfindwkr(char*target,inttargetType,intfrom)
功能:
查询指定的记录号
参数:
char*target,inttargetType,intfrom
返回值:
int记录号
工作方式:
将所给信息与所有信息进行匹配,若有则返回记录号
要求:
无
⑬查找二级单位函数
函数原型:
intfindunit(char*target,intfrom)
功能:
查找二级单位
参数:
char*target,intfrom
返回值:
int记录号
工作方式:
将所给二级单位与所有二级单位相匹配,若有相同的则返回记录号
要求:
无
⑭查询职工信息函数
函数原型:
voidfindinfo(void)
功能:
查找职工的信息
参数:
void
返回值:
void
工作方式:
根据用户所选方式查询记录中职工的信息并显示
要求:
要有不同查询方式
⑮存储函数
函数原型:
intsaveRecords(void)
功能:
将记录存储到文件中
参数:
void
返回值:
int是否存储成功标志
工作方式:
无
要求:
无
⑯读取函数
函数原型:
intloadRecords(void)
功能:
读取文件中的记录信息并显示
参数:
void
返回值:
int是否读取成功标志
工作方式:
无
要求:
无
(2)主要函数流程图(2个以上,可参考材P148的写法)
(3)编码(附后)
4系统测试
内容包括:
程序调试情况(8幅以上测试结果截图);
5、总结:
在本次程序设计中使用的软件是MicrosoftVisualStudio2015以及codeblock,由于本人比较粗心大意,在打码中经常出现拼写错误,但在软件即使报错的情况下都修改了过来,此外,设计的过程中也遇到了一些阻碍,但在同学的帮助和老师的指导下终于度过了难关,还有由于运用了清屏函数,使得程序的界面整洁了许多,
6结束语
感谢胡玉平老师在这整个过程中的指导以及帮助。
参考文献
内容包括:
列出课程设计中所参考的所有书目,格式如下:
[1]刘振安刘燕君单继龙,C程序设计课程设计(第2版),北京:
机械工业出版社,2009.11
附程序清单
worker.h
#ifndefH_WORKER_HH
#defineH_WORKER_HH
#include
#include
#include
#include
#include
#defineINITIAL_SIZE5//100
#defineINCR_SIZE5//0
structworker_info{
charnumber[15];
charname[20];
chargender[7];
charunit[20];
charmajor[20];
chartelnum[15];
floatwager;
chartitle[10];
};
typedefstructworker_infoWorkInfo;
externintnumWorks;
externWorkInfo*records;
externcharsavedTag;
externintarraySize;
voidhandle_menu(void);
intmenu_select(void);
voidaddRecord(void);
voidremoveRecord(void);
voidsortInfo(void);
intsaveRecords(void);
intloadRecords(void);
voidquit(void);
voidshow(void);
voidfindinfo(void);
voidcopyRecord(WorkInfo*src,WorkInfo*dest);
intfindunit(char*target,intfrom);
intfindwkr(char*target,inttype,intfrom);
#endif
worker.c
#include"worker.h"
intnumWorks=0;
WorkInfo*records=NULL;
charsavedTag=0;
intarraySize;
intmain()
{
charkey[]="0000";
chargetkey[6];
intcount=0;
records=(WorkInfo*)malloc(sizeof(WorkInfo)*INITIAL_SIZE);
if(records==NULL)
{
printf("memoryfail!
");
exit(-1);
}
arraySize=INITIAL_SIZE;
printf("\n");
printf("\t***************************************\n");
printf("\t*这是一个*\n");
printf("\t*职工信息管理程序*\n");
printf("\t*可以对职工信息进行管理*\n");
printf("\t*欢迎使用管理程序*\n");
printf("\t*By:
15计二陈文奕*\n");
printf("\t***************************************\n");
printf("\t密码:
");
gets(getkey);
while(strcmp(getkey,key)!
=0)
{
printf("密码错误,请重新输入");
count++;
if(count==3)
quit();
system("cls");
printf("\t***************************************\n");
printf("\t*这是一个*\n");
printf("\t*职工信息管理程序*\n");
printf("\t*可以对职工信息进行管理*\n");
printf("\t*欢迎使用管理程序*\n");
printf("\t*By:
15计二陈文奕*\n");
printf("\t***************************************\n");
printf("\t密码:
");
gets(getkey);
}
system("cls");
handle_menu();
}
voidhandle_menu(void)
{
for(;;){
switch(menu_select())
{
case1:
show();
break;
case2:
addRecord();
break;
case3:
findinfo();
break;
case4:
removeRecord();
break;
case5:
sortInfo();
break;
case6:
statistics();
break;
case7:
saveRecords();
break;
case8:
loadRecords();
break;
case9:
quit();
}
}
}
intmenu_select()
{
chars[2];
intcn=0;
printf("\n");
printf("\t1.显示职工信息\n");
printf("\t2.增加职工信息\n");
printf("\t3.查询职工信息\n");
printf("\t4.删除职工信息\n");
printf("\t5.对职工信息进行排序\n");
printf("\t6.对职工信息进行统计\n");
printf("\t7.保存职工信息至记录文件\n");
printf("\t8.从记录文件读取职工信息\n");
printf("\t9.结束运行\n");
printf("\n\t左边数字对应功能选择,请选1-9\n");
for(;;)
{
gets(s);
cn=atoi(s);
if(cn<1||cn>8)
printf("\n\t输入错误,重选1-9:
");
elsebreak;
}
returncn;
}
voidquit(void)
{
charstr[5];
if(savedTag==1)
{printf("是否保存原来的记录?
(Y/N)");
gets(str);
if(str[0]!
='0'&&str[0]=='N')
saveRecords();
}
free(records);
exit(0);
}
add_show.c
#include"worker.h"
voidshow(void)
{
inti;
charcn;
if(numWorks==0){
printf("没有可供显示的记录!
\n");
printf("\n按Enter键返回菜单。
\n");
while((cn=getchar())!
='\n')
continue;
system("cls");
return;
}
//打印职工信息
printf("%-11s%-6s%-4s%-8s%-16s%-8s%-6s%-11s\n",
"职工号","姓名","性别","二级单位","专业","职称","月工资","电话");
for(i=0;i printf("%-11s%-6s%-4s%-8s%-16s%-8s%6g%-11s\n", records[i].number,records[i].name,records[i].gender,records[i].unit,records[i].major,records[i].title,records[i].wager,records[i].telnum); } printf("\n一共有%d条信息。 ",numWorks); printf("\n\n按Enter键返回菜单。 \n"); while((cn=getchar())! ='\n') continue; system("cls"); } //添加记录 voidaddRecord(){ inti; chars; charstr; chartemp[30]; floatwager; if(numWorks==0) printf("原来没有记录,现在建立新表。 \n"); else printf("下面在当前表的末尾增加新的信息。 \n"); Sleep(1500); while (1){ system("cls"); printf("您将要添加一组信息,是否确定? (Y/N)"); while (1){ str=getchar(); if(str=='Y'||str=='y'||str=='N'||str=='n') break; else printf("输入错误,重选'Y'或'N': "); if(str! ='\n') getchar(); } getchar(); system("cls"); if(str=='N'||str=='n'){ system("cls"); break; }//不再添加新的信息 if(numWorks>=arraySize){ records=realloc(records,(arraySize+INCR_SIZE)*sizeof(WorkInfo));//数组空间不足,新空间大小变为(arraySize+INCR_SIZE)记录大小 if(records==NULL){ printf("Memoryfailed! "); Sleep(3000); exit(-1); } arraySize=arraySize+INCR_SIZE;//arraySize修改为新空间可保存的记录数 } printf("请输入职工号: "); gets(temp); while(strlen(temp)==0){ printf("职工号不能为空! \n"); printf("请重新输入: "); gets(temp); } for(i=0;i while(strcmp(records[i].number,temp)==0){ system("cls"); printf("\t该职工号已经存在! \n"); printf("\t是否继续添加信息? \n"); printf("\tYorN\n"); printf("请选择: "); while (1){ s=getchar(); if(s=='Y'||s=='y'||s=='N'||s=='n') break; else printf("输入错误,重选'Y'或'N': "); if(s! ='\n') getchar(); } getchar(); system("cls"); if(s=='n'||s=='N'){ savedTag=1; system("cls"); return; } printf("请输入职工号: "); gets(temp); while(strlen(temp)==0){ printf("职工号不能为空! \n"); printf("请重新输入: "); gets(temp); } } } strcpy(records[numWorks].number,temp); printf("请输入姓名: "); gets(temp); while(strlen(temp)==0){ printf("姓名不能为空! \n"); printf("请重新输入: "); gets(temp); } strcpy(records[numWorks].name,temp); printf("请输入性别('F'为女,'M'为男): "); while (1){ str=getchar(); if(str=='F'||str=='f'||str=='M'||str=='m') break; else printf("输入错误,重输'F'或'M': "); if(str! ='\n') getchar(); } getchar(); if(str=='F'||str=='f') strcpy(records[numWorks].gender,"女"); else strcpy(records[numWorks].gender,"男"); printf("请输入所属二级单位: "); gets(temp); while(strlen(temp)==0){ printf("所属二级单位不能为空! \n"); printf("请重新输入: "); gets(temp); } strcpy(records[numWorks].unit,temp); printf("请输入专业: "); gets(records[numWorks].major); printf("请输入职称: ");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教职工 系统 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)