教职工系统课程设计.doc

上传人:小飞机 文档编号:4264259 上传时间:2023-04-12 格式:DOC 页数:54 大小:174.50KB
返回 下载 相关 举报
教职工系统课程设计.doc_第1页
第1页 / 共54页
教职工系统课程设计.doc_第2页
第2页 / 共54页
教职工系统课程设计.doc_第3页
第3页 / 共54页
教职工系统课程设计.doc_第4页
第4页 / 共54页
教职工系统课程设计.doc_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《教职工系统课程设计.doc》由会员分享,可在线阅读,更多相关《教职工系统课程设计.doc(54页珍藏版)》请在三一办公上搜索。

1、 课程设计课程名称 程序设计课程设计 设计题目 班级与班级代码 专 业 计算机科学与技术 指导教师: 学 号: 姓 名: 提交日期: 年 月 日 广东财经大学教务处制姓名 课程设计成绩 评语:评价内容不及格及格中良优表达精练,格式准确,基本无错别字内容完整,思路清晰,结构严谨,设计科学,可操作性强程序能完成课程设计任务书所规定的任务,功能完善,独立分析和解决问题能力较好。代码简洁,算法清晰,可读性强无抄袭现象且课程设计报告体会深刻 指导教师(签名) 年 月 日教职工系统课程设计1 系统功能要求(需求分析):采用结构体数组或文件形式存储职工的信息,每个职工应包含如下几方面的信息:职工号、姓名、性

2、别、所属二级单位、所学专业、职称、月工资,电话号码。软件由主函数(含欢迎界面)和下列6个功能模块组成:(1)减少一个职工的信息(需指定要删除职工的职工号或姓名或电话号码);(2)增加一个职工号信息(需输入要增加职工号的所有信息);(3)查找一个职工号的信息(需指定职工号或电话号码或姓名);(4)统计指定二级单位的职工人数、工资总额;(5)按职工的工资多少对职工排序;(6)退出程序的运行。描述所选题目(或主题)的功能设计要求。(正文宋体4号,行距固定为20英镑)2 系统总体(概要)设计思想(1)开发与设计的总体思想(二级标题缩进两格,宋体四号)高校在职职工管理软件算法说明:step 1:预处理,

3、定义结构体;step 2:进入欢迎界面;step 3:选择菜单对应的某一种功能;step 4:根据提示输入数字序号;step 5:对输入的数字序号编辑关于对职工数据进行编辑、查找、统计和排序的函数;step 6:重新进入菜单界面,返回到step3;step 7:如果输入数字表示退出,退出系统。(2)系体模块结构图(3) 系统文件及函数组成、功能(参考P154的表12-1)源文件函数名或其他成分功能worker.cmain总控函数menu_select菜单选择handle_menu菜单处理quit结束运行add_disp.cshow输出表格信息addRecord在表尾追加信息que_remv_m

4、odi_stat.cremoveRecord删除指定的记录findinfo查找指定的记录copyRecord复制记录statistics统计二级单位信息save_load.csave文件存储load文件读取worker.h常数提供常数结构声明学生成绩结构3 系统详细设计 (1) 函数的描述 头文件文件名称:worker.h功 能:声明函数原型,包含文件及自定义宏和数据结构要 求:报告是否能正常打开文件执行存入操作及存入记录的条数 主函数函数原型:int main(void)功 能:控制程序,显示欢迎界面并检测密码是否正确参 数:void返 回 值:int要 求:管理菜单命令并完成初始化,密码输

5、入错误三次,自动关闭程序。 菜单处理函数函数原型:void handle_menu(void)功 能:处理选择的菜单命令参 数:void返 回 值:void工作方式:根据命令调用相应函数要 求:给出结束信息 菜单选择函数函数原型:int mune_select(void)功 能:接收用户选择的命令代码参 数:void返 回 值:int工作方式:返回命令代码的整数值要 求:只允许选择指定的按键,如果输入不正确,提醒用户重新输入 退出函数 函数原型:void quit(void) 功能:提醒是否保存记录,并退出程序。 参数:void 返回值:void 工作方式:根据用户选择判断是否调用保存函数,并

6、退出。 要求:若不保存记录,则要释放内存。 显示函数 函数原型:void show(void) 功能:显示记录的信息 参数:void 返回值:void 工作方式:用print函数把记录输出 要求:工整 添加信息函数 函数原型:void addRecord(void) 功能:添加信息到记录中 参数:void 返回值:void 工作方式:根据顺序将信息添加到记录中,并判断有无重复的职工号。 要求:相同职工号不得用两次 删除记录函数 函数原型:void removeRecord(void) 功能:删除记录中的信息 参数:void 返回值:void 工作方式:根据用户选择方式查询所需删除的记录,再将其

7、从内存中删除。 要求:要有不同的选择方式 排序函数 函数原型:void sortInfo(void) 功能:将记录信息进行排序 参数:void 返回值:void 工作方式:根据用户选择方式将记录信息从小到大排序或从大到小排序等 要求:正确处理排序要求 复制函数 函数原型:void copyRecord(WorkInfo *src, WorkInfo *dest) 功能:将src指向的一条记录复制到dest指向的记录。 参数:源记录WorkInfo *src, 目的记录WorkInfo *dest 返回值:void 工作方式:将源记录复制到目的记录中 要求:正确复制记录 统计函数 函数原型:vo

8、id statistics(void) 功能:统计二级单位的信息 参数:void 返回值:void 工作方式:将用户所选二级单位所包含的记录统计并整理 要求:无 查询函数 函数原型:int findwkr(char *target, int targetType, int from) 功能:查询指定的记录号 参数: char *target, int targetType, int from 返回值:int 记录号 工作方式:将所给信息与所有信息进行匹配,若有则返回记录号 要求:无 查找二级单位函数 函数原型:int findunit(char *target, int from) 功能:查找

9、二级单位 参数:char *target, int from 返回值:int 记录号 工作方式:将所给二级单位与所有二级单位相匹配,若有相同的则返回记录号 要求:无 查询职工信息函数 函数原型:void findinfo(void) 功能:查找职工的信息 参数:void 返回值:void 工作方式:根据用户所选方式查询记录中职工的信息并显示 要求:要有不同查询方式 存储函数 函数原型:int saveRecords(void) 功能:将记录存储到文件中 参数:void 返回值:int 是否存储成功标志 工作方式:无 要求:无 读取函数 函数原型:int loadRecords(void) 功能

10、:读取文件中的记录信息并显示 参数:void 返回值:int 是否读取成功标志 工作方式:无 要求:无 (2)主要函数流程图(2个以上,可参考材P148的写法) (3)编码(附后)4 系统测试内容包括:程序调试情况(8幅以上测试结果截图);5、总结:在本次程序设计中使用的软件是Microsoft Visual Studio 2015以及codeblock,由于本人比较粗心大意,在打码中经常出现拼写错误,但在软件即使报错的情况下都修改了过来,此外,设计的过程中也遇到了一些阻碍,但在同学的帮助和老师的指导下终于度过了难关,还有由于运用了清屏函数,使得程序的界面整洁了许多,6 结束语感谢胡玉平老师在

11、这整个过程中的指导以及帮助。参考文献内容包括:列出课程设计中所参考的所有书目,格式如下:1刘振安 刘燕君 单继龙,C程序设计课程设计(第2版),北京:机械工业出版社,2009.11附程序清单 worker.h#ifndef H_WORKER_HH#define H_WORKER_HH#include#include#include#include#include#define INITIAL_SIZE 5/100#define INCR_SIZE 5/0struct worker_infochar number15;char name20;char gender7;char unit20;ch

12、ar major20;char telnum15;float wager;char title10;typedef struct worker_info WorkInfo;extern int numWorks;extern WorkInfo *records;extern char savedTag;extern int arraySize;void handle_menu(void);int menu_select(void);void addRecord(void);void removeRecord(void);void sortInfo(void);int saveRecords(v

13、oid);int loadRecords(void);void quit(void);void show(void);void findinfo(void);void copyRecord(WorkInfo* src,WorkInfo* dest);int findunit(char *target, int from);int findwkr(char *target,int type,int from);#endifworker.c#includeworker.hint numWorks=0;WorkInfo *records=NULL;char savedTag=0;int arrayS

14、ize;int main()char key =0000;char getkey6;int count = 0;records=(WorkInfo*)malloc(sizeof(WorkInfo)*INITIAL_SIZE);if(records=NULL)printf(memory fail!);exit(-1);arraySize=INITIAL_SIZE;printf(n);printf(t*n);printf(t* 这是一个 *n);printf(t* 职工信息管理程序 *n);printf(t* 可以对职工信息进行管理 *n);printf(t* 欢迎使用管理程序 *n);print

15、f(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(

16、getkey);system(cls);handle_menu();void handle_menu(void)for(;)switch(menu_select()case 1:show();break;case 2:addRecord();break;case 3:findinfo();break;case 4:removeRecord();break;case 5:sortInfo();break; case 6: statistics(); break;case 7:saveRecords();break;case 8:loadRecords();break;case 9:quit();

17、int menu_select()char s2;int cn=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(nt左边数字对应功能选择,请选1-9n);for(;)gets(s);cn=atoi(s);if(cn8)printf(nt输入

18、错误,重选1-9:);else break;return cn;void quit(void)char str5;if(savedTag=1)printf(是否保存原来的记录?(Y/N));gets(str);if(str0!=0&str0=N)saveRecords();free(records);exit(0);add_show.c#includeworker.hvoid show(void) int i;char cn;if (numWorks = 0) printf(没有可供显示的记录!n);printf(n按Enter键返回菜单。n);while (cn = getchar() !=

19、 n)continue;system(cls);return;/打印职工信息printf(%-11s %-6s %-4s %-8s %-16s %-8s %-6s %-11sn, 职工号, 姓名,性别,二级单位, 专业, 职称,月工资, 电话);for (i = 0; i = arraySize) records = realloc(records, (arraySize + INCR_SIZE)*sizeof(WorkInfo); /数组空间不足,新空间大小变为(arraySize+INCR_SIZE)记录大小if (records = NULL) printf(Memory failed!

20、);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 numWorks; i+) while (strcmp(recordsi.number, temp) = 0) system(cls);printf(t 该职工号已经存在! n);printf(t 是否继续添加信息?

21、n);printf(t Y or N n);printf(请选择:);while (1) s = getchar();if (s = Y | s = y | s = N | s = n)break;elseprintf(输入错误,重选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(请重新输入:

22、);gets(temp);strcpy(recordsnumWorks.number, temp);printf(请输入姓名:);gets(temp);while (strlen(temp) = 0) printf(姓名不能为空!n);printf(请重新输入:);gets(temp);strcpy(recordsnumWorks.name, temp);printf(请输入性别(F为女,M为男):);while (1) str = getchar();if (str = F | str = f | str = M | str = m)break;elseprintf(输入错误,重输F或M:)

23、;if(str!=n)getchar();getchar();if (str = F | str = f)strcpy(recordsnumWorks.gender, 女);elsestrcpy(recordsnumWorks.gender, 男);printf(请输入所属二级单位:);gets(temp);while (strlen(temp) = 0) printf(所属二级单位不能为空!n);printf(请重新输入:);gets(temp);strcpy(recordsnumWorks.unit, temp);printf(请输入专业:);gets(recordsnumWorks.ma

24、jor);printf(请输入职称:);gets(recordsnumWorks.title);printf(请输入月工资:);while (scanf(%f, &wager) != 1) printf(输入错误,请重新输入:);getchar();getchar();recordsnumWorks.wager = wager;printf(请输入电话:);gets(recordsnumWorks.telnum);numWorks+; /输入一组记录后,职工数加1system(cls);printf(添加成功!);Sleep(1500);printf(现在一共有%d条信息。n, numWork

25、s);savedTag = 1; /输入新的职工信息后,信息保存标志为1,表示未保存printf(n按Enter键返回菜单。n);while (str = getchar() != n)continue;system(cls);find_remv_stat.c#includeworker.h/删除指定记录void removeRecord() char str5; /查询方式字符串char target20; /查询目标数据项char s;int type; /查询项int count; /查询到的人数int i, j;if (numWorks = 0) printf(没有可供删除的记录!n)

26、;printf(n按Enter键返回菜单。);while (s = getchar() != n)continue;system(cls);return;while (1) printf(t* 删除方式 *n);printf(t*_*n);printf(t* 1 | 按职工号 *n);printf(t* 2 | 按姓名 *n);printf(t* 3 | 按电话号码 *n);printf(t*-*n);printf(t* Enter | 返回菜单 *n);printf(t*n);printf(n请输入删除方式(序号):);/检查输入错误for (;) gets(str);if (strlen(

27、str) = 0)break;if (str0 != 1 & str0 != 2 & str0 != 3)printf(输入错误!请重新输入:);elsebreak;system(cls);if (strlen(str) = 0)break;if (str0 = 1) printf(请输入欲删除的职工的职工号:);gets(target);type = 0;else if (str0 = 2) printf(请输入欲删除的职工的姓名:);gets(target);type = 1;else printf(请输入欲删除的职工的电话号码:);gets(target);type = 2;system

28、(cls);i = findwkr(target, type, 0); /从0号开始找,查询项type,查询目标数据项targetcount = 0;printf(查找中);for (j = 0; j 5; j+) Sleep(350);printf(.);system(cls);while (i != -1) count+; /查询到的人数+1i = findwkr(target, type, i + 1); /从i+1条记录器查找下一条符合条件的记录/如果找到的职工数为0,返回上一层if (count = 0) printf(没有找到该职工!n);printf(n按Enter键返回上一层。

29、);while (s = getchar() != n)continue;system(cls);/如果找到职工数为1if (count = 1) i = findwkr(target, type, 0);printf(%-11s %-6s %-4s %-8s %-16s %-8s %-6s %-11sn, 职工号, 姓名, 性别, 二级单位, 专业, 职称, 月工资, 电话);printf(%-11s %-6s %-4s %-8s %-16s %-8s %6g %-11sn,recordsi.number, recordsi.name, recordsi.gender, recordsi.u

30、nit, recordsi.major, recordsi.title, recordsi.wager, recordsi.telnum);printf(t 是否删除该职工信息? n);printf(t Y or N n);printf(请选择:);while (1) s = getchar();if (s = Y | s = y | s = N | s = n)break;elseprintf(输入错误,重选Y或N:);if (s != n)getchar();getchar();system(cls);if (s = y | s = Y) printf(正在删除);for (j = 0;

31、j 5; j+) Sleep(350);printf(.);system(cls);numWorks-;/将后面的记录往前移for (j = i; j 1) printf(%-11s %-6s %-4s %-8s %-16s %-8s %-6s %-11sn, 职工号, 姓名, 性别, 二级单位, 专业, 职称, 月工资, 电话);i = findwkr(target, type, 0);while (i != -1) printf(%-11s %-6s %-4s %-8s %-16s %-8s %6g %-11sn,recordsi.number, recordsi.name, recordsi.gender, recordsi.unit, recordsi.major, recordsi.title, recordsi.wager, recordsi.telnum);i = findwkr(target, type, i + 1);printf(n找到多名职工,请进一步输入欲删除的职工的职工号:);gets(target);type = 0;

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号