《C语言课程设计职工工资管理程序.doc》由会员分享,可在线阅读,更多相关《C语言课程设计职工工资管理程序.doc(25页珍藏版)》请在三一办公上搜索。
1、吉林工程技术师范学院C语言程序课程设计报告书设计题目: 职工工资管理程序 专 业: 电子信息工程 班 级: D0843班 学生姓名: 学 号: 15号 指导教师: 2009年11月信息工程学院目 录摘 要 第一章 绪 论1第二章 问题定义(或系统分析) 2第三章 总体设计与详细设计 4第四章 编码实现 9第五章 调试与测试 10第六章 总结与心得 14附录:1源代码162参考资料22摘 要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应
2、的管理信息系统。因此本人结合要求,对SQL Server数据库、SQL语言原理、Visual B应用程序设计,数据库技术进行了较深入的学习和应用,主要完成对客户信息管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。系统运行结果证明,本文所设计的客户信息管理系统可以满足需要。经过一学期的C语言的学习,使我了解高级程序设计的结构,掌握了基本的程序设计和技巧,掌握了基本的分析和对利用计算机求解问题的能力,具备了初步的高级语言程序设计能力本人完成了本学期的C语言的课程设计职工工资管理程序。【关键字】职工工资管理程序,程序设计和技巧,基本分析。第一章 绪论1.1选题背景
3、随着社会的发展及知识经济时代的到来,管理信息系统在各行各业发挥着越来越重要的作用。在各企业公司职工工资管理中,运用C语言程序,避免了手工操作而带来的一些不必要的问题。1.2系统目标 本系统的目标是将各企业公司职工工资的管理工作实现计算机管理,从而大幅度提高工作效率,提高实施管理的准确性、科学性;使担负管理的工作人员从繁杂的手工劳作中解脱出来,更好地实施针对职工工资管理在手工操作中遇到的问题。1.3系统目的 通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固C语言程序设计课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关
4、!更加了解了C语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性! 通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。第二章 问题定义(或系统分析)题目分析 一、目的要求 本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的经验。二、功能要求【
5、题目描述】菜单为:1工资录入 (录入一个职工工资的信息) 2工资修改 (输入一个职工姓名,修改要改的内容)3工资删除 (从程序中按输入的姓名删除该职工)4工资查询 (输入一个职工姓名,输出其工资数值)5输出所有成员 (输出所有成员工资情况)6保存并退出 (保存修改查询后的工资情况并退出)【题目要求】 (1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 (2)要求以上功能分别用函数实现。并要求用C语言的文件操作语句将以上所有结果保存在文件XX.out。【输入/输出要求】 (1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作
6、项目。进入每个操作后,根据程序的提示输入相应的信息。 (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧。目前社会管理系统发展飞快,职工工资管理信息系统也是有了很大的发展。本系统完全独立开发,力求使系统功能简明,但功能全易操作。它适应了时代发展,适应了我国各公司企业人事管理的需要;从技术角度分析,这项开发工作所涉及的专业技术如下:操作系统采用Windows 2000以上的版本;在数据管理系统上,我们可采用了Microsoft Office Access,开发工具选用Micro
7、soft Visual Basic .NET2003;从经济角度分析, 采用计算机管理不但可以提高工作效率,而且还可以节省人力、物力、财力,降低了人工处理产生的错误。第三章 总体设计与详细设计一、总体设计要求:本系统主要实现了简单职工工资管理的功能,具体包括:工资录入,工资修改,工资删除,工资查询,输出所有成员,保存并退出六个功能。分别使用了faceDesign();addEmployee();alterEmployee();alterf(inti);deleteEmployee();deletef(int local);searchEmployee();printEmployee();rea
8、dFile();saveExit();几个函数)。应用时,先按输入自己要选择的操作的序号(1.2.3.4.5.6.),然后按系统提示输入一些信息,如:选择1.,系统自动出现姓名,输入所要录入的人的姓名,按回车,系统又会自动出现工资,然后输入工资数目,按回车,再按提示按任意键继续选择其他功能。二、函数调用关系图例如: main searchEmployee()saveExit()addEmployee()deleteEmployee()printEmployee() faceDesign()三、各函数功能说明对每个函数功能加以说明,说明该函数主要实现了什么内容。例如:1. main() 主函数2
9、. int faceDesign() 显示开始时的界面及选项3. int addEmployee() 员工工资录入4. int alterEmployee() 员工工资修改5. int alterf(int i) 找到要修改的工资并录入修改后的工资6. int deleteEmployee(); 删除员工工资7. int deletef(int local); 找到要删除的员工的工资并删除8. int searchEmployee(); 查询工资9. int printEmployee(); 输出所有成员及其工资10. int readFile(); 打开文件进入主界面11. int save
10、Exit(); 保存并退出四、算法描述对每个函数具体实现的内容加以说明。1. addEmployee(): S1: flag=0S2: 输出*换行S3: 输出* 制作人:孙中梅 *换行S4: 输出* 指导老师:孙 超 *换行S5: 输出* 班级:D0843 *换行S6: 输出* 制作时间:2009年10月28日 *换行S7: 输出*换行S8: 输出*欢迎进入简单工资管理程序*换行S9: 输出1.工资录入换行S10:输出2.工资修改换行S11:输出3.工资删除换行S12:输出4.工资查询换行S13:输出5.输出所有成员换行S14:输出6.保存并退出换行S15:输出*换行S16:输出请选择:换行S
11、17:输入一个flag值;返回flag值,结束本函数算法2. addEmployee():S1: 输出“姓名”,length=0S2: 输入员工姓名S3: 输出“工资”S4: 输入员工工资,length+ S5: 系统暂停,返回1,结束本函数算法3. alterEmployee():S1: 定义一个字符数组name30,一个整型iS2: 输出“输入要修改员工的名字”S3: 输入员工的名字S4: i=0S5: 如果strcmp(employeei.name,name)=0,调用函数alterf(i)S6: i=i+1S7: 如果ilength,返回S5,继续执行;否则,执行S8S8: 系统暂停,
12、返回1,结束本函数算法4. alterf(int i):S1: 定义 float salaryS2: 输出“其工资为:”S3: 输出“输入要修改的工资:”S4: 输入工资S5: employeei.salary=salaryS6: 返回1,结束本函数算法5. deleteEmployee():S1: 定义char name30; int i;S2: 输出“请输入要删除的人的名字:”S3: 输入员工姓名S4: i=0S5:如果strcmp(employeei.name,name)=0,调用函数deletef(i)S6: 如果ilength,返回S5,继续执行,否则,执行S7S7: 系统暂停,返回
13、1,结束本函数算法6. deletef(int local):S1: int iS2: i=localS3: 执行strcpy(employeei.name,employeei+1.name); employeei.salary=employeei+1.salary; S4: i=i+1S5: 如果ilength,返回S3,继续执行,否则,执行S6S6: length-S7: 输出“删除成功”S8: 返回1,本函数算法结束7. searchEmployee():S1: 定义char name30;int i;S2: 输出请输入要查询的员工的名字:S3: 输入姓名S4: i=0S5: 如果str
14、cmp(employeei.name,name)=0,输出姓名及其对应工资S6: i=i+1S7: 如果ilength,返回S5,继续执行,否则,执行S8S8: 系统暂停,返回1,本函数算法结束8. printEmployee():S1: i=0S2: 输出“姓名 工资”S3: 输出(employeei.name,employeei.salary)S4: i=i+1S5: 如果ilength,返回S3,继续执行,否则,执行S6S6: 返回1,本函数算法结束9. readFile():S1: 定义int i=0;length=0; char a130,a230;float salary; S2:
15、 以只读方式打开一个文件S3: 如果(fp1=fopen(c:student,r)=NULL,输出“cannot open this file否则执行S4S4: 如果!feof(fp1),fscanf(fp1,%st%sn,a1,a2)S5: fscanf(fin,%stt%fn,employeei.name,&salary); employeei.salary=salary;S6: +i; +length;S7: 如果!feof(fp2),返回S4,继续执行,否则,执行S8S8: fclose(fp1);S9: 输出“读入信息成功.” S10: 返回1,结束本函数算法10. saveExit
16、():S1: FILE *fout=fopen(C:student,w)S2: 定义int iS3: fprintf(fout,姓名tt工资n)S4: i=0S5: fprintf(fout,%stt%fn,employeei.name,employeei.salary)S6: i=i+1S7: 如果ilength,返回S5,继续执行,否则,执行S8S8: fclose(fout)S9: exit(0); S10: return 1,结束本函数算法11main(); S1: int i S2: readFile() S3: 当函数返回值为1时,i=faceDesign() S4: 如果i=1,
17、addEmployee();system(cls);返回值为1,返回S3 S5: 如果i=2,alterEmployee();system(cls);返回值为1时,返回S3 S6: 如果i=3,deleteEmployee();system(cls);返回值为1时,返回S3 S7: 如果i=4,searchEmployee();system(cls);返回值为1时,返回S3 S8: 如果i=5,printEmployee();system(cls);返回值为1时,返回S3 S9: 如果i=6,saveExit() S10: 系统暂停,返回0,结束本函数算法第四章 编码实现通过以下程序实现编码:
18、/*输入程序*/int searchEmployee() char name30; int i; printf(请输入要查询的员工的名字:); scanf(%s,name); for(i=0;ilength;i+) if(strcmp(employeei.name,name)=0) printf(%st%fn,employeei.name,employeei.salary); system (pause); return 1;*工资查询*通过searchEmployee()设计;searchEmployee():S1: 定义char name30;int i;S2: 输出请输入要查询的员工的名
19、字:S3: 输入姓名S4: i=0S5: 如果strcmp(employeei.name,name)=0,输出姓名及其对应工资S6: i=i+1S7: 如果ilength,返回S5,继续执行,否则,执行S8S8: 系统暂停,返回1,本函数算法结束函数调用关系:main searchEmployee()第五章 调试与测试 文件打开:1. 工资录入2.工资修改3.工资删除4.工资查询5.输出所有成员6.保存并退出运行的结果说明: 在Visual C+ 6.0 在此环境下运行比较好,其界面十分友好并且能正常运行。第六章 总结与心得总结:在这个信息技术快速发展的时代,计算机的应用变得非常重要。通过一个
20、星期的折腾,总算把课程设计给完成了,这是一个艰苦而又漫长的过程。看着劳动成果,很欣慰!刚开始的时候,可以说是没有头绪,于是去图书馆找点资料,可这一点小进展远远不够,这只是一个小小的开始。下一步是上网查,找到一些与我们题目有关的东西,比如函数等等。然后,按照编程的一般步骤,根据自己查到的一些资料,用画图以及循环将框架设计出来,慢慢啃着自己的程序,绞尽脑汁的想着一切解决问题的方法。 虽然对着电脑做程序,有点累有点热,可当看到劳动成果时,真是别有一番滋味!世上无难事,只怕有心人,的确如此。做完这个程序最大的收获是更加加深了对c语言知识的理解,也进一步了解了知识的重要性,另外平时扎实的基础也很关键,因
21、为如果你平时学的就不怎么样,那么你面对这么一个比较有难度的程序就可能会望而却步,看他人的程序都是个难点更别说让你自己去设计了。做完这个程序,我的自信心一下子提高了,我也会写程序了。尽管对有些人来说,这种程序很简单,可是对我们这些初学者来说,已经很不容易了。同时,这次体验为以后学习计算机的我们增强了信心。享受劳动成果的滋味实在很美妙。 真的很感谢这次程序设计,这次设计程序让我受益良多,它使我更加深刻体会到做任何事情都要有耐心,不要一有困难就退缩,我会好好珍惜像这种难得的机会。心得:课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具
22、体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整两个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,
23、难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!附 录1. 源代码#include #include #include #include #define MAX 100typedef struct char name30; float salary;
24、EmployeeTable;EmployeeTable employeeMAX;static int length=0;int faceDesign(); int addEmployee(); int alterEmployee(); int alterf(int i); int deleteEmployee(); int deletef(int local);int searchEmployee(); int printEmployee(); int readFile();int saveExit();int faceDesign() int flag=0; printf(*n); prin
25、tf(* 制作人:孙中梅 *n); printf(* 指导老师:孙超 *n); printf(* 班级:D0843 *n); printf(* 制作时间:2009年10月28日 *n); printf(*n); getchar(); system(cls); printf(*欢迎进入简单工资管理程序*n); printf(1.工资录入n); printf(2.工资修改n); printf(3.工资删除n); printf(4.工资查询n); printf(5.输出所有成员n); printf(6.保存并退出n); printf(*由孙中梅制作*n); printf(请选择:); scanf(%
26、d,&flag); return flag;int addEmployee() printf(姓名:); scanf(%s,employeelength.name); printf(工资:); scanf(%f,&employeelength.salary); +length; system(pause); return 1; int alterEmployee() char name30; int i; printf(输入要修改员工的名字:); scanf(%s,name); for(i=0;ilength;i+) if(strcmp(employeei.name,name)=0) alte
27、rf(i); system(pause); return 1;int alterf(int i) float salary; printf(其工资为:%f,employeei.salary); printf(t输入要修改的工资:); scanf(%f,&salary); employeei.salary=salary; return 1;int deleteEmployee() char name30; int i; printf(请输入要删除的人的名字:); scanf(%s,name); for(i=0;ilength;i+) if(strcmp(employeei.name,name)=
28、0) deletef(i); system(pause); return 1;int deletef(int local) int i; for(i=local;ilength;i+) strcpy(employeei.name,employeei+1.name); employeei.salary=employeei+1.salary; length-; printf(删除成功n); return 1;int searchEmployee() char name30; int i; printf(请输入要查询的员工的名字:); scanf(%s,name); for(i=0;ilength;
29、i+) if(strcmp(employeei.name,name)=0) printf(%st%fn,employeei.name,employeei.salary); system (pause); return 1;int printEmployee() int i=0; printf(姓名tt工资n); while(ilength) printf(%stt%fn,employeei.name,employeei.salary); +i; getchar(); getchar(); return 1; int readFile() int i=0,length=0; char as20;
30、 float salary; FILE *fp1; printf(请输入路径:n); fflush(stdin); gets(as); /*fp1=fopen(as,r); */ if (fp1=fopen(as,r)=NULL) printf(cannot open this filen);exit(0); while(!feof(fp1) fscanf(fp1,%stt%fn,employeei.name,&salary); employeei.salary=(float)salary; +i; +length; fclose(fp1); printf(读入信息成功.nn); getcha
31、r(); system(cls); return 1;int saveExit() FILE *fp2=fopen(as,w);/以新建方式打开一个文件/ int i; for(i=0;ilength;i+) fprintf(fp2,%stt%fn,employeei.name,employeei.salary); fclose(fp2); exit(0); /结束程序/ return 1;int main () int i; readFile(); while(1) i=faceDesign(); if (i=1) addEmployee();system(cls); if (i=2) al
32、terEmployee();system(cls); if (i=3) deleteEmployee();system(cls); if (i=4) searchEmployee();system(cls); if (i=5) printEmployee();system(cls);if (i=6) saveExit(); system(pause); return 0; 2.参考资料1.魏永继. VC+6.0应用程序开发. 北京. 机械工业出版社, 2007-2 2.刘钢. Visual C+程序设计与应用案例. 北京. 高等教育出版社, 2004-23.汪清明. Visual C+ 6.0编程基础教程. 北京. 高等教育出版社, 2005-14.湛为芳 C语言程序设计技术 北京. 清华大学出版社, 20065.谭浩强 C程序设计(第三版) 北京. 清华大学出版社, 20056.谭浩强 C程序设计题解与上机指导(第三版). 北京. 清华大学出版社, 2005