C语言课程设计职工信息管理系统1 .doc
武 夷 学 院 课程设计报告课程设计:C程序设计设计题目:职工信息管理系统学生班级:2010信息与计算科学学生姓名:指导老师:完成日期:201215数学与计算机系 课程设计项目研究报告目 录第 1 章 项目简介31.1 项目名称31.2 开发人员31.3 指导教师3第 2 章 项目研究意义42.1 课程设计概述42.2 需求分析及研究意义42.3 研究意义5第 3 章 采用的技术53.1 课程设计的方案设计论证53.2 重要算法的设计、流程描述或伪代码描述5第4 章 课程设计项目进度表5第5 章 课程设计任务分配表错误!未定义书签。第6 章 达到的效果661 程序设计思想662 程序最终实现结果6第7 章 源程序671 XML源代码672 XSL源代码772 “添加”模块源代码7第8 章 附录881 学生考勤登记管理系统882 XML数据类型定义表9第9 章 设计心得9第10 章 参考文献9 第 1 章 项目简介1.1 项目名称职工信息管理系统1.2 开发人员2010级信息与计算科学 1.3 指导教师第 2 章 项目研究意义2.1 课程设计概述在用户同信息服务人员的交流方面,没有一个单位指望能做到尽善尽美,但是,确有某些单位已经取得了比较好的成功经验。用户同信息服务人员配合默契的一些单位认为:这种成功的原因在于,用户已经掌握了计算机和信息资源管理方面的基本知识。可见,用户管理人员掌握这方面的知识是非常必要的。诚然,信息服务专业人员是具备这方面知识的,但是要使用户管理人员获得这些知识,就必须通过正规的学习、阅读和实践妥善处理用户同信息服务人员之间的关系,可以加强双方的互相配合。为了建立和维护一个高质量的信息系统,各方都必须尊重对方的意愿。系统质量的优劣是直接与用户同信息服务人员之间互相配合的好坏成正比的。凡是那些不愿意掌握有关计算机和信息资源管理方面基本知识的用户管理人员和行政首脑,必将成为落伍者,特别是在当前这种鼓励用户直接参与信息系统开发过程的发展趋势下。过去,用户管理人员在很大程度上是依靠信息服务人员来推荐、开发和实现所需要的信息系统的。鉴于信息服务需要不断的发展变化,现在把鉴别和提高系统的责任留给了用户这也是理所应当的。用户更多地参与信息系统的开发,2.2 需求分析及研究意义 由于计算机基础课程远程教学系统可同时为多组教师/学生提供服务,各组间的课程不尽相同,因此教师/学生组间应具有一定的隔离性。例如一门课程的教师对其学生具有管理权,但不能对学生进行管理、某个学生只能访问其教师的作业等。因此系统主页需要教师或学生均以帐号/密码登录后才能访问,以此追踪用户访问系统资源的身份。而用户帐号的开设与删除、教师与学生的对应关系、课程名称、学生人数等信息,由系统管理员负责管理。这里,我们将系统资源访问帐号作为操作系统帐号开设,由Windows NT和Web服务器IIS负责进行用户验证。这样做的好处,一是可以充分利用操作系统的安全机制,使操作系统与数据库服务器(SQL Server)无缝集成;二是可同时为用户提供其它辅助服务,如:电子邮件、个人主页、FTP服务等。使系统应用与课程内容紧密结合,学生在应用系统的使用过程中可进一步加深对课程内容的理解。2.3 研究意义 就其功能来说,管理信息系统是组织理论、会计学、统计学、数学模型及经济学的混合物,它全面使用计算机技术、网络通信技术、数据库技术等,是多学科交叉的边缘技术,因此是技术系统。从社会技术系统的观点来看,MIS和组织结构之间是相互影响的,引进MIS将导致新组织结构的产生,而现存的组织结构又对MIS的分析、设计、引进的成功与否产生重要影响,其影响要素包括组织环境、组织战略、组织目标、组织结构、组织过程和组织文化。同时也是社会系统。第 3 章 采用的技术3.1 课程设计的方案设计论证3.2 重要算法的设计、流程描述或伪代码描述第4 章 课程设计项目进度表日期完成的工作2012-1.2项目可行性研究,研究报告2012-1.21.3数据采集,确定表格,数据类型,系统开发技术,运行环境2012-1.31.4子模块的程序设计和调试2012-1.41.5系统联合调试,撰写课程设计总结报告第5 章 达到的效果61 程序设计思想将程序设计的思路和技术、方法等放在这里。62 程序最终实现结果将程序最终实现结果(包括重点结果界面的抓取,能够说明问题的重要实验结果数据或其可视化结果等)放在这里。 第6 章 源程序61 XML源代码菜单函数:void menu() /*菜单函数*/ printf("t*学校:武夷学院*t");printf("n");printf("t 院系:数学与计算机系 t");printf("n");printf("t 专业:信息与计算科学 t");printf("n");printf("t 学号: 20104161003 t");printf("n");printf(" 姓名:代 乐 乐 t");printf("n");printf("n");printf(" 主 菜 单 t");printf("n");printf("t 1.职工信息录入功能 tn");printf("t 2.职工信息浏览功能 tn");printf("t 3.职工信息查询功能 tn");printf("t 4.职工信息删除功能 tn");printf("t 5.职工信息添加功能 tn");printf("t 6.职工信息修改功能 tn");printf("t 7. 退 出 tn");printf("t 谢 谢 tn");printf("t*tn");录入函数:void input() /*录入函数*/ int i,m; printf("请输入录入的职工人数(1-100):n"); scanf("%d",&m); for (i=0;i<m;i+) printf("职工号: "); scanf("%ld",&emi.num); printf("n"); printf("请输入姓名: "); scanf("%s",emi.name); getchar(); printf("n"); printf("请输入性别(女-f、男-m): "); scanf("%c",&emi.sex); getchar(); printf("n"); printf("请输入年龄: "); scanf("%d",&emi.age); getchar(); printf("n"); printf("请输入学历:(doctor,master,collage,high,junior,primary) "); scanf("%s",emi.xueli); getchar(); printf("n"); printf("请输入工资: "); scanf("%d",&emi.wage); getchar(); printf("n"); printf("请输入住址: "); scanf("%s",emi.addr); getchar(); printf("n"); printf("请输入电话: "); scanf("%d",&emi.tel); printf("n"); printf("n创建完毕!n"); save(m);保存函数:void save(int m) /*保存文件函数*/ int i; FILE*fp; /*建立指向FILE的指针*/ if (fp=fopen("employee_list","wb")=NULL) /*创建文件并判断是否能打开*/ /*fp=fopen("employee_list","wb" 打开职工列表文件,wb 只写*/ printf ("对不起,不能打开文件!n"); for (i=0;i<m;i+) /*将内存中职工的信息输出到磁盘文件中去*/ if (fwrite(&emi,sizeof(struct employee),1,fp)!=1) /*fwrite的用法:fwrite(buffer,size,count,fp)*/ printf("对不起,文件写入有误!n"); fclose(fp);62 XSL源代码导入函数:int load() /*导入函数*/ FILE*fp; int i=0; if(fp=fopen("employee_list","rb")=NULL) printf ("对不起,不能打开文件!n"); return(0); else do fread(&emi,sizeof(struct employee),1,fp); i+;while(feof(fp)=0); fclose(fp); return(i-1);浏览函数:void display() /*浏览函数*/ int i; int m=load(); printf("n 职工号 t姓名t性别t年龄t学历t工资t住址t电话n"); for(i=0;i<m;i+) /*m为输入部分的职工人数*/ printf("n %ldt%st%ct%dt%st%dt%st%ldn",emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); 删除函数:void del() /*删除函数*/ int t,flag; do printf("n按职工姓名删除请按1 ; n按职工号删除请按2 ; n按职工学历请按3; n按职工电话号码删除请按4; n按职工年龄删除请按5; n返回主菜单请按6n"); scanf("%d",&t); if(t>=1&&t<=6) flag=1;break; else flag=0; printf("您输入有误,请重新选择!"); while(flag=0); while(flag=1) switch(t) case 1:printf("按职工姓名删除n");del_name();break; case 2:printf("按职工号删除n");del_num();break; case 3:printf("按职工学历删除n");del_xueli();break; case 4:printf("按职工电话号码删除n");del_tel();break; case 5:printf("按职工年龄删除n");del_age();break; case 6:main();break; default:break; void del_name() /*职工姓名删除函数*/ int m=load(); int i,j,n,t,flag; char name20; printf("n 原来的职工信息:n"); display(); /* 调用浏览函数*/ printf("n"); printf("请输入要删除的职工的姓名:n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i+) if(strcmp(emi.name,name)=0) printf("n已找到此人,原始记录为:n"); printf("n 职工号 t姓名t性别t年龄t学历t工资t住址t电话n"); printf("n%ldt%st%ct%dt%st%dt%st%ldn",emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); printf("n确实要删除此人信息请按1,n不删除请按0n"); scanf("%d",&n); if(n=1) /*如果删除,则其他的信息都往上移一行*/ for(j=i;j<m-1;j+) strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); emj.tel=emj+1.tel; flag=0; if(!flag) m=m-1; else printf("n对不起,查无此人!n"); printf("n 浏览删除后的所有职工信息:n"); save(m); /*调用保存函数*/ display(); /*调用浏览函数*/ printf("n继续删除请按1,n不再删除请按0n"); scanf("%d",&t); switch(t) case 1:del();break; case 0:break; default :break; void del_num() /*职工号删除函数*/ int m=load(); int i,j,n,t,flag; long int num; printf("n 原来的职工信息:n"); display(); /* 调用浏览函数*/ printf("n"); printf("请输入要删除的职工的职工号:n"); scanf("%ld",&num); for(flag=1,i=0;flag&&i<m;i+) if(emi.num=num) printf("n已找到此人,原始记录为:n"); printf("n 职工号 t姓名t性别t年龄t学历t工资t住址t电话n"); printf("n%ldt%st%ct%dt%st%dt%st%ldn",emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); printf("n确实要删除此人信息请按1,n不删除请按0n"); scanf("%d",&n); if(n=1) /*如果删除,则其他的信息都往上移一行*/ for(j=i;j<m-1;j+) strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); emj.tel=emj+1.tel; flag=0; if(!flag) m=m-1; else printf("n对不起,查无此人!n"); printf("n 浏览删除后的所有职工信息:n"); save(m); /*调用保存函数*/ display(); /*调用浏览函数*/ printf("n继续删除请按1,n不再删除请按0n"); scanf("%d",&t); switch(t) case 1:del();break; case 0:break; default :break; void del_xueli() /*职工学历删除函数*/ int m=load(); int i,j,n,t,flag; char xueli20; printf("n 原来的职工信息:n"); display(); /* 调用浏览函数*/ printf("n"); printf("请输入要删除的职工的学历:n"); scanf("%s",xueli); for(flag=1,i=0;flag&&i<m;i+) if(strcmp(emi.xueli,xueli)=0) printf("n已找到此人,原始记录为:n"); printf("n 职工号 t姓名t性别t年龄t学历t工资t住址t电话n"); printf("n%ldt%st%ct%dt%st%dt%st%ldn",emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); printf("n确实要删除此人信息请按1,n不删除请按0n"); scanf("%d",&n); if(n=1) /*如果删除,则其他的信息都往上移一行*/ for(j=i;j<m-1;j+) strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); emj.tel=emj+1.tel; flag=0; if(!flag) m=m-1; else printf("n对不起,查无此人!n"); printf("n 浏览删除后的所有职工信息:n"); save(m); /*调用保存函数*/ display(); /*调用浏览函数*/ printf("n继续删除请按1,n不再删除请按0n"); scanf("%d",&t); switch(t) case 1:del();break; case 0:break; default :break; void del_tel() /*职工电话删除函数*/ int m=load(); int i,j,n,t,flag; long int tel; printf("n 原来的职工信息:n"); display(); /* 调用浏览函数*/ printf("n"); printf("请输入要删除的职工的电话:n"); scanf("%s",tel); for(flag=1,i=0;flag&&i<m;i+) if(emi.tel=tel) printf("n已找到此人,原始记录为:n"); printf("n 职工号 t姓名t性别t年龄t学历t工资t住址t电话n"); printf("n%ldt%st%ct%dt%st%dt%st%ldn",emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); printf("n确实要删除此人信息请按1,n不删除请按0n"); scanf("%d",&n); if(n=1) /*如果删除,则其他的信息都往上移一行*/ for(j=i;j<m-1;j+) strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); emj.tel=emj+1.tel; flag=0; if(!flag) m=m-1; else printf("n对不起,查无此人!n"); printf("n 浏览删除后的所有职工信息:n"); save(m); /*调用保存函数*/ display(); /*调用浏览函数*/ printf("n继续删除请按1,n不再删除请按0n"); scanf("%d",&t); switch(t) case 1:del();break; case 0:break; default :break; void del_age() /*职工年龄删除函数*/ int m=load(); int i,j,n,t,flag; int age; printf("n 原来的职工信息:n"); display(); /* 调用浏览函数*/ printf("n"); printf("请输入要删除的职工的年龄:n"); scanf("%d",&age); for(flag=1,i=0;flag&&i<m;i+) if(emi.age=age) printf("n已找到此人,原始记录为:n"); printf("n 职工号 t姓名t性别t年龄t学历t工资t住址t电话n"); printf("n%ldt%st%ct%dt%st%dt%st%ldn",emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); printf("n确实要删除此人信息请按1,n不删除请按0n"); scanf("%d",&n); if(n=1) /*如果删除,则其他的信息都往上移一行*/ for(j=i;j<m-1;j+) strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); emj.tel=emj+1