C语言课程设计--职工管理系统(31页).docx
-C语言课程设计-职工管理系统-第 30 页 内蒙古科技大学 本科生课程设计说明书 题 目:C 语言课程设计 -教职工管理系统 学生姓名: 学 号: 专 业: 软件工程 班 级: 软件一班 指导教师: 日 期:2015年1月10日 目 录第一章 需求分析51.4功能需求61.5性能需求61.6运行需求6第二章 概要计划72.1 总体设计72.2 数据类型设计(或数据结构设计)92.3 接口设计102.4 运行界面设计10第三章 详细计划133.1 输入模块设计133.2 输出模块设计153.3 查找模块设计163.4 删除模块设计203.5 保存及读取模块设计21第四章 测试分析244.1 测试程序执行情况244.2 出现的问题和解决的方法28第五章 用户手册285.1 使用说明28第六章 课设计划总结28附录:29 内蒙古科技大学课设任务书课程名称 C 语言课程设计设计题目 教职工管理系统指导教师时间2015年1月10日一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。职工信息管理系统设计职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:v 职工信息录入功能(职工信息用文件保存)输入v 职工信息浏览功能 输出v 查询或排序功能:(至少一种查询方式) 算法按工资查询 按学历查询等v 职工信息删除、修改功能(任选项)三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社 第一章 需求分析1.1 引言 自从上个世纪90年代以来, 计算机技术的迅猛发展和推广普及,为各行各业突飞猛进的发展带来了新生的动力,推动了各行各业向更高的层次进步。当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛使用的原因,计算机最大的好处在于利用它进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能充分发挥他的优越性。使用计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。1.2 任务概述 每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。职工信息管理系统设计职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:v 职工信息录入功能(职工信息用文件保存)输入v 职工信息浏览功能 输出v 查询或排序功能:(至少一种查询方式) 算法按工资查询 按学历查询等v 职工信息删除、修改功能(任选项) 1.3 数据描述 char ID8;char name20;char num20;char gong15;char zhiwu10;char xueli8 ;char adds30;char sex30;char birthday151.4功能需求 输入功能:将所要输入的职工信息通过此函数输入系统。 读取功能:对所输入的职工信息进行读取。 保存功能:将所读去的职工信息保存在系统中。 输出功能:将所存入的职工信息从存储器中输出。 修改功能:对所输入的错误的职工信息进行修改。 删除功能:将原来存入进系统的,现在不需要的职工信息删除。 查找功能:根据所给条件对以存入的职工信息进行查找。 排序功能:根据所给条件对以存入的职工信息进行排序。1.5性能需求 输入功能:方便管理者储存信息。 读取功能:方便管理者对职工信息的掌握。 保存功能:方便管理者对职工信息的储存。 输出功能:方便管理者对职工信息的浏览。 修改功能:方便管理者对职工信息的修改。 删除功能:方便管理者对职工信息的管理。 查找功能:方便管理者对职工信息的查询。 排序功能:方便管理者对职工信息的管理。1.6运行需求 在运行时,需要先输入所需要的职工信息,然后对所输入的信息进行删除,修改,增添,保存和读取等功能。 第二章 概要计划2.1 总体设计int main() system("color 2f"); denglu(); int n=0; for(;)switch(menu_select()case 1: system("cls");n=Input(pe,n);break;case 2: system("cls");Display(pe,n);break;case 3:system("cls");n=dele(pe,n);printf("t");system("pause");break;case 4: system("cls"); chaxun(pe,n);printf("t");system("pause");break;case 5:system("cls");Change(pe,n);printf("t");system("pause");break;case 6:system("cls");writetotext(pe,n);system("pause");break;case 7:system("cls");n=readfortext(pe);system("pause");break;case 0: system("color 5f"); system("cls");printf("ntt");system("pause");exit(0);2.2 数据类型设计(或数据结构设计)typedef structchar score8;char name20;char num20;char gong15;char zhiwu10;char xueli8 ;char adds30;char sex30;char birthday15;Person;2.3 接口设计 函数名 函数类型 函数功能 Denglu int 登录系统功能 Menu_select int 选择功能 Input int 输入信息 Display void 显示信息 Delect int 删除信息 Chaxun void 查询信息 Change void 修改信息 writetotext Void 保存信息 readfortext int 读取信息2.4 运行界面设计int denglu() printf("nnnnnn"); printf("tt*nn"); printf("tt-职工管理系统-nn"); printf("tt*n"); printf("nnn"); char username="121" char password="121" char zhanghao20,mima20; char temp; int i=0,t=1; printf("ttttt请输入账号:"); scanf("%s",zhanghao); printf("ttttt请输入密码:"); do temp=getch(); switch(temp) case 8: if(i>0) printf("b b"); i-=1; break; case 13: mimai=0;t=0; break; default: mimai=temp; i+=1; printf("*"); while(t); if(strcmp(zhanghao,username)=0 &&strcmp(password,mima)=0) printf("登陆成功n"); else printf("密码错误请重新输入n");exit(0); return 0;int menu_select()char c;dosystem("cls"); printf("tt-欢迎进入职工管理界面-nn"); printf("tt*n"); printf("tt 1.录入信息 n"); printf("tt 2.浏览信息 n"); printf("tt 3.删除信息 n"); printf("tt 4.查询信息 n"); printf("tt 5.修改信息 n"); printf("tt 6.保存信息 n"); printf("tt 7.读取文件 n"); printf("tt 0.退出程序 n"); printf("tt n"); printf("tt*n");printf("nnnttt 请选择(0-7)选项:");c=getchar();while(c<'0'|c>'7');return(c-'0'); 第三章 详细计划3.1 输入模块设计 int Input(Person per,int n) printf("tt*信息录入*nnn");int i=0;char sign,x10;while(sign!='n'&&sign!='N')printf("tt请输入 职工号:");scanf("tt%s",pern+i.score);printf("tt 姓名:");scanf("t%s",pern+i.name); printf("tt 性别:");scanf("tt%s",pern+i.sex); printf("tt 出生年月:");scanf("tt%s",pern+i.birthday);printf("tt 工资:");scanf("tt%s",pern+i.gong); printf("tt 职务:");scanf("tt%s",pern+i.zhiwu); printf("tt 学历:");scanf("tt%s",pern+i.xueli);printf("tt 电话号码:");scanf("tt%s",pern+i.num);printf("tt 住址:");scanf("tt%s",pern+i.adds);gets(x);printf("nt是否继续添加?(Y/N)");scanf("t%c",&sign);i+;printf("nntttt按任意键返回主菜单!");getch();return(n+i);3.2 输出模块设计 void Display(Person per,int n)int i;printf("t*显示记录*n");if(n=0) printf("ttt无任何记录!"); elsefor(i=1;i<n+1;i+)printf("t%-5sn",peri-1.score);printf("t%-8sn", peri-1.name);printf("t%-8sn", peri-1.sex );printf("t%-15sn",peri-1.birthday);printf("t%-8sn",peri-1.gong);printf("t%-20sn", peri-1.zhiwu);printf("t%-15sn", peri-1.xueli);printf("t%-15sn", peri-1.num);printf("t%-25sn", peri-1.adds);printf("nntttt按任意键返回主菜单!");getch();3.3 查找模块设计 void chaxun(Person per,int n)int m; printf("ttt-n"); printf("ttt-n"); printf("ttt 1-姓名 n"); printf("ttt 2-工资 n"); printf("ttt 3-学历 n"); printf("ttt| 4-返回 n"); printf("ttt-n"); printf("ttt-nn"); printf("tttt请选择查询方式:"); scanf("%d",&m); while(m!=1&&m!=2&&m!=3&&m!=4)printf("输入错误,请重新选择:");scanf("%d",&m);if(m=1)char s20;int i=0;printf("t请输入想查询的姓名:");scanf("t%s",s);while(strcmp(peri.name,s)!=0&&i<n) i+;if(i=n)printf("t该系统中没有此人!n");return;printf("t 编号: %dn",peri.score);printf("t 姓名: %dn",peri.name);printf("t 性别: %sn",peri.sex);printf("t出生年月: %sn",peri. birthday); printf("t 工资: %sn",peri.gong);printf("t 职务: %dn",peri.zhiwu); printf("t 学历: %sn",peri.xueli);printf("t 号码: %sn",peri.num);printf("t 地址: %sn",peri.adds); if(m=2) char s20; int i=0; printf("t请输入想查询的工资:"); scanf("t%s",s); while(strcmp(peri.gong,s)!=0&&i<n) i+; if(i=n) printf("t该系统中没有此人!n"); return; printf("t 编号: %dn",peri.score); printf("t 姓名: %dn",peri.name); printf("t 性别: %sn",peri.sex); printf("t出生年月: %sn",peri. birthday); printf("t 工资: %sn",peri.gong); printf("t 职务: %dn",peri.zhiwu); printf("t 学历: %sn",peri.xueli); printf("t 号码: %sn",peri.num); printf("t 地址: %sn",peri.adds);if(m=3)char s20;int i=0;printf("t请输入想查询的学历:");scanf("t%s",s);while(strcmp(peri.xueli,s)!=0&&i<n) i+;if(i=n)printf("t该系统中没有此人!n");return;printf("t 编号: %dn",peri.score);printf("t 姓名: %dn",peri.name);printf("t 性别: %sn",peri.sex); printf("t出生年月: %sn",peri. birthday); printf("t 工资: %sn",peri.gong);printf("t 职务: %dn",peri.zhiwu);printf("t 学历: %sn",peri.xueli);printf("t 号码: %sn",peri.num);printf("t 地址: %sn",peri.adds);printf("ttt按任意键返回主菜单");getch();3.4 删除模块设计int dele(Person per,int n)char s20;int i=0,j;printf("nnt请输入想删除记录中的编号:");scanf("%s",s);while(strcmp(peri.num,s)!=0&&i<n) i+;if(i=n)printf("该系统中没有此人!n");return(n);for(j=i;j<n-1;j+)strcpy( perj.score,perj+1.score);strcpy(perj.name,perj+1.name);strcpy(perj.sex,perj+1.sex);strcpy(perj.birthday,perj+1.birthday); strcpy(perj.gong,perj+1.gong);strcpy(perj.zhiwu,perj+1.zhiwu);strcpy(perj.xueli,perj+1.xueli); strcpy(perj.num,perj+1.num);strcpy(perj.adds,perj+1.adds);printf("ttt删除成功!nn");printf("ttt按任意键返回主菜单!");getch();return(n-1);3.5 保存及读取模块设计void writetotext(Person per,int n)int i=0;FILE *fp; if(fp=fopen("data.txt","w")=NULL)printf("t无法打开文件n");exit(0);while(i<n)fprintf(fp,"%5sn",peri.score);fprintf(fp,"%15sn", peri.name);fprintf(fp,"%20sn", peri.num );fprintf(fp,"%10sn",peri.sex);fprintf(fp,"%35sn", peri.adds);fprintf(fp,"%20sn", peri.xueli);fprintf(fp,"25sn",peri.zhiwu);fprintf(fp,"%15sn", peri.gong);fprintf(fp,"%20sn",peri.birthday);i+;fclose(fp);printf("保存成功!n");int readfortext(Person per)int i=0;FILE *fp; if(fp=fopen("data.txt","r")=NULL)printf("t无法打开文件n");exit(0);for(i=0;!feof(fp);i+)fscanf(fp,"%5s",peri.score);fscanf(fp,"%8s", peri.name);fscanf(fp,"%15s", peri.num );fscanf(fp,"%10s",peri.sex);fscanf(fp,"%25s", peri.adds);fscanf(fp,"%20s", peri.xueli);fscanf(fp,"25s",peri.zhiwu);fscanf(fp,"%15s", peri.gong);fscanf(fp,"%20s",peri.birthday);fclose(fp);printf("读取成功!n"); return i+1; 第四章 测试分析4.1 测试程序执行情况1.运行程序,进入职工信息管理系统的主菜单2.输入数字“1”进行输入职工信息:3.输入数字“6”进行保存职工信息:4.输入数字“7”进行读取职工信息:5.输入数字“4”进行职工信息查找:6.输入数字“3”进行职工信息删除:7.输入数字“5”进行职工信息修改:8.输入数字“2”进行职工信息的输出:4.2 出现的问题和解决的方法 错误:提示说:sacnf不能编译; 错误原因:把scanf写成sacnf; 错误二:在定义数组时数组过小; 第五章 用户手册5.1 使用说明 用户在使用时,应根据所需按所给提示进行操作。 第六章 课设计划总结 通过这次课程设计,增加了我对软件技术的了解虽然我仍然还不明确软件所包含的内容,但从学习C语言开始我就发现了软件的魅力所在,它对我的计算机掌握起到了至关重要的作用,帮助我巩固了计算机的基础。同时,让我对软件产生更浓厚的兴趣,还开拓了我的思维,挖掘了我潜在的创造力。 在此,我特要感谢我的C语言老师-周李涌老师,感谢老师认真的为我解决各种疑难问题。以及我的指导老师-褚燕华老师,感谢老师在课设期间帮助我纠正各种错误。谢谢,您们!附录:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>typedef struct char ID8; char name20; char sex30; char birthday30; char gong15; char zhiwu10; char xueli8; char num20; char adds30;person;person pe80;int dendlu() printf("nnnnnn"); printf("tt*nn"); printf("tt-职工管理系统-nn"); printf("tt*n"); printf("nnn"); char username="121" char password="121" char zhanghao20,mima20; char temp; int i=0,t=1; printf("ttttt请输入账号:"); scanf("%s",&zhanghao); printf("ttttt请输入密码:"); do temp=getch(); switch(temp) case 8: if(i>0) printf("b b");i=-1; break; case 13: mimai=0;t=0;break; default: mimai=temp; i+=1; printf("*"); while(t); if(strcmp(zhanghao,username)=0 &&strcmp(password,mima)=0) printf("登陆成功!n"); else printf("密码错误请重新输入n"); exit(0); return 0;int menu_select() char c; do system("cls"); printf("tt-欢迎进入职工管理系统-nn"); printf("tt*nn"); printf("tt 1.添加信息 n"); printf("tt 2.显示信息 n"); printf("tt 3.删除信息 n"); printf("tt 4.查询信息 n"); printf("tt 5.修改信息 n"); printf("tt 6.保存信息 n"); printf("tt 7.读取信息 n"); printf("tt 0.退出程序 n"); printf("tt*n"); printf("nnntt 请选择(0-7)选项:"); c=getchar(); while(c<'0'|c>'7'); return(c-'0');int Input(person per,int n) printf("tt*