c语言课程设计——职工信息管理系统_第1页
c语言课程设计——职工信息管理系统_第2页
c语言课程设计——职工信息管理系统_第3页
c语言课程设计——职工信息管理系统_第4页
c语言课程设计——职工信息管理系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上XXXXXXX大 学课程设计说明书 名称 计算机语言C课程设计 职工信息管理系统设计 2011 年 6月20 日至 2011年6 月26 日 共1 周院 系 .班 级 .姓 名 .学 号 . 系 主 任 . 教研室主任 . 指导教师 .目 录一、课程设计的目的与要求1.1目的1.掌握C语言编程的基础知识较熟练的编写C语言应用程序。2.能够利用所学的基本知识和技能,解决简单的程序设计问题,增强独立完成工作的能力。3.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动

2、作用。1.2 要求 1.要求利用C语言面向过程的编程思想来完成系统的设计; 2.突出C语言的函数特征,以多个函数实现每一个子功能; 3.画出功能模块图; 4. 进行简单界面设计,能够实现友好的交互; 5. 具有清晰的程序流程图和数据结构的详细定义; 6. 熟练掌握C语言对文件的各种操作。二、题目说明1.职工信息管理系统设计,使之包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。2.使这个管理系统具有以下功能:可以使系统以菜单方式工作、能够录入、查询、删除、排序职工的信息。3.可以按学历、按工号查询职工信息。使查询职工信息变得方便、简单。2.1程序开发背景现在随着社会的进步

3、和人民生活水平的逐渐提升,大学生数量越来越多,相应的所需要处理的的信息也越来越复杂,而凭借人力不可能准确及时地处理所有信息,因此,编写此程序是极为必要的。但由于各个学校的情况不同,所以难以编写一个通用的成绩管理程序。此程序是根据本校情况和老师指导所编写,用以解决教师对学生成绩的添加、修改、删除以及学生对其成绩的查询等工作。2.2开发工具介绍Visual C+ Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。 虽然微软公司推出了Visual C

4、+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。 Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境。 Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。 Visual C+它大概可以分成三个主要的部分: 1 Developer

5、 Studio。2 MFC。3 Platform SDK。1三、总体设计3.1总体思想 本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。职工信息以文件的形式存储。系统的人机接口采用简单的字符界面进行交互。系统的设计方法是结构化设计方法,采用C语言进行开发。软件开发平台采用Visual C+6.0,主要考虑在VC中可以使用中文,用户交互界面设计比较美观清晰。3.2软件模块结构图根据需求分析结果,职工信息管理系统可以分为显示员工资料、录入员工资料、员工信息查询、删除员工信息、员工信息排序、退出信息系统。如图3-1所示。职工信息管理系统显示员工资料员工信息查询删除员工信息员工

6、信息排序退出信息系统录入员工资料图3-13.3系统流程图3.3.1主函数 开始提示输入用户名、密码密码正确重新登录?退出系统是否否是登录成功员工信息查询删除员工信息录入员工资料员工信息排序退出信息系统显示员工资料退出结束如图3-2所示图3-23.3.2显示函数display()显示函数打开文件顺序输出返回homepage()如图3-3所示图3-33.3.3录入函数input()录入函数创建文件输入信息 关闭文件返回homepage()如图3-4所示图3-43.3.4查询函数如图3-5所示find()查询函数打开文件查询条件i = ?i = 1按工号查询i= 2按学历查询关闭文件返回homepa

7、ge()是否图3-53.3.5删除函数del()删除函数被删职工工号查询该职工删除该职工返回homepage()如图3-6所示图3-63.3.6排序函数如图3-7所示sort()排序函数打开文件排序条件i = ?i = 1i= 1按工号排序i= 2按工资排序关闭文件返回homepage()是否图3-7四、详细设计和系统实施 4.1数据结构设计4.1.1定义数组定义一维数组struct worker work50;用于定义员工的总人数,当员工总人数超过50后便不能再录入员工资料。4.1.2定义结构体结构体struct worker用于存放存放员工的资料,包括员工的基本信息:工号,姓名,年龄,学历

8、,工资,住址,电话号码。struct worker int num; 工号 char name15; 名字 char xingbie; 性别 int age; 年龄 char exp6; 学历 int wage; 工资 char address20; 住址 char tel12; 电话号码;int count=0; 当前工人个数int sort_type=0; 当前排序类型4.1.3函数功能描述函数主界面:void homepage();显示职工成绩信息:void display();录入职工信息信息:void input();删除职工信息:void del();查询职工信息:void fin

9、d();排序职工信息:void sort();用户等待函数:void waiting();退出系统函数: void quit();4.2界面设计4.2.1用户登录界面此模块用于欢迎界面,同时要求用户输入用户名和密码,只有当两者都正确时,才能进入到系统,当有三次错误,系统就会自动退出,如图4-1所示。图4-1代码实现:void main() int i=0,k=0; char username15,pwd6; for(i=0;i<3;i+) printf("n请输入用户名:"); gets(username); printf("n请输入6位密码:")

10、; gets(pwd); if(strcmp(username,"admin")=0)&&(strcmp(pwd,"")=0) printf("n您已经成功登录"); k=1; for(i=0;i<20;i+) printf("."); Sleep(100); system("cls"); homepage(); break; else printf("n用户名或密码无效 请重新输入:n"); continue; if(k=0) printf("

11、;n连续输入错误3次 将退出程序n"); Sleep(2000); quit();在此模块中,if(strcmp(username,"Admin")=0)&&(strcmp(pwd,"")=0),用于检测用户名和密码是否正确。for(i=0;i<3;i+) printf("n请输入用户名:"); gets(username); printf("n请输入6位密码:"); gets(pwd);此段代码用于获取账户名和密码并计数是否超过三次,超过三次,则有Sleep(2000);实现退出程

12、序。4.2.2 主界面此模块主要实现进入主界面和根据用户需要进入相应界面,包括显示界面,录入界面,删除界面,排序界面并可以选择退出,如图4-2所示:图4-2代码实现void homepage() char n; while (n!='1')&&(n!='2')&&(n!='3')&&(n!='4')&&(n!='5')&&(n!='0') printf("n请选择:"); fflush(stdin);

13、 scanf("%c",&n); switch(n) case '1': display(); break; case '2': if(count<50) input(); else printf("记录数已满n"); Sleep(2000); system("cls"); homepage(); break;此模块中,switch(n),case()用于判定主界面的选项,根据选项进行设置。其中if(count<50)用于限制录入员工的人数,超过50名员工就无法再进行录入,并且直接通

14、过sleep(2000);homepage()回到主界面上。4.2.3显示界面此模块是用来显示员工的资料信息的,包括工号,姓名,性别,年龄,学历,工资,住址,电话等基本信息,一边管理员能够及时的掌握到所要员工的资料。如图4-3所示。图4-3代码实现void display() int i; char c; printf("备注:学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):nnn"); switch(sort_type) case 0: printf("tt未排序:nn"); break; case 1:printf("t

15、t按工号排序:nn"); /sort();break; case 2:printf("tt按工资排序:nn");/sort();break; printf("t工号t姓名t性别t年龄t学历t工资t住址t电话n"); 此模块中有三种显示方式,第一种是无序显示,就是按照录入时的顺序显示,还有两种分别是是按照工号和工资来排序。后两种显示方式主要是有switch(sort_type)语句来实现的,它相当于一个开关,与下面的case()相对应,相括号中的数字相对应时,就会执行相应的语句。4.2.4录入界面这个模块主要是录入员工资料,录入的顺序如图所示,当

16、录入的员工人数满到50后,便不能再进行录入员工资料,此时已经达到了录入人数的最大值。如图4-4所示。图4-4代码实现void input() int i,numcheck; char c; do printf("工号:n"); scanf("%d",&workcount.num); numcheck=1; if(workcount.num<0) printf("请输入正整数:n"); for(i=0;i<count;i+) if(workcount.num=worki.num) numcheck=0; printf

17、("工号重复,重新输入:n"); do c=getchar(); if(c='y'|c='Y') count+; 此模块中if(workcount.num=worki.num);numcheck=0;很是重要,它判定录入的工号是否重复,重复的话会有重新输入的提示,避免职工信息的重复。当记录数已满时,通过sleep(2000),使之回到主界面,进行其他选项设置。4.2.5信息查询界面 此模块用于职工信息的查询,共分为两种查询方式,一是按工号查询,二是按学历查询。用if函数来实现,可快速查询到职工的姓名、工号、学历、电话等详细信息。如图4-5所示

18、。图4-5代码实现void find()int i,j; int choice=0;int find_num;char findedu6;char c;system("cls");printf("tt请选择查询功能:n"); printf("t1.按工号查询n"); printf("t2.按学历查询n");printf("请输入选择:");doscanf("%d",&choice);while (choice!=1)&&(choice!=2);if (

19、choice=1)printf("nt请输入要查询的职工号n");scanf("%d",&find_num);printf("n正在查询,请稍候"); for(i=0;i<20;i+) printf("."); Sleep(100); system("cls");printf("nn按任意键返回n"); c=getch(); system("cls"); homepage();此模块中,通过while (choice!=1)&&

20、;(choice!=2);这个选择来实现查询的方式,选择“1”为工号查询,选择“2”则为按学历查询。 if (find_num=worki.num)即为根据职工号进行查询,strcmp(findedu,worki.exp)根据学历进行职工信息查询。4.2.6删除界面此模块用于删除员工信息,对于已经无用的员工信息进行删除,采用按工号删除的模式。如图4-6所示。图4-6代码实现void del() int i,j,del_num,match=0; char c; system("cls"); printf("请输入要删除的员工工号:n"); scanf(&q

21、uot;%d",&del_num); waiting(); for(i=0;i<count;i+) if(worki.num=del_num) match=1; for(j=i;j<count;j+) workj=workj+1;count-; 此模块中,首先还是要先进职工信息查询模块,然后再根据查询到的职工号进行删除。printf("%d",&del_num);即为显示要删除的职工号,if(c='y'|c='Y')则是确定是否删除选定的职工信息。最后通过homepage()回到主界面。 五、遇到的问题及

22、解决办法 1.在一些字符或字符串的定义上出项错误,如定义职工电话号码的时候,用成了float类型,而正确的应该是char类型。 2在进行模块函数设计时,find()函数功能没有设计好,导致部分函数代码过长,可读性降低,以至于再次重写里面的一小部分代码,浪费了大量的时间。3在整个程序设计编写完成后,编译时出现了大量的错误,而且里面大部分是因为大小写问题,还有void拼错拼成viod,还有“;”没有写,后来经过程序错误查询,一一更改了过来。4. 在编写代码时没有添加注解,降低了在调试测试时程序的可读性,同时也降低了与其他同学的交流,虽然在测试过程中我把全部的注解加上, 但也延长了整个程序的开发时间

23、。六、课程设计总结通过此次学生成绩信息管理系统,让我熟悉了软件开发的流程,相信在以后的工作中我能在最短的时间内投入到大的程序开发项目中。在进行课程设计的前两天,不知道从何入手,很是不解,不知道我们究竟要做什么。后来通过上网找资料,才发现有好多做法,根本就看不完,此时才真正意识到差距所在。于是,通过借鉴网络作品,才发现作品并不是一味的照搬照抄才实用,集众家之所成,不断完善,才能造出属于自己的作品,并且实用。在整个课程设计中,我认为最重要的就是耐心和细心。细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。虽然在整个过程

24、中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,同时也让我理解到参加的项目越大越能学到知识,因此以后我会积极主动的去参加一些项目,以此来提高自己的技能和编程经验。七、参考文献【1】.实用c语言简明教程李金祥、顾小晶主编【2】.c+语言程序设计,刘振安,刘燕君,孙忱,机械工业出版社;【3】.C语言程序设计一体化案例教程,刘维富,清华大学出版社;【4】.C语言课程设计,黄明,梁旭,万洪莉,电子工业出版。附录(源程序代码)#include<stdio.h>#include<string.h>#include<windows.h>#incl

25、ude<conio.h>void homepage(); /主界面void display(); /显示全部信息void input(); /录入 插入void find();void del(); /删除记录void sort(); /排序void waiting(); /等待界面void quit(); /退出界面struct worker int num; /工号 char name15; /名字 char xingbie; /性别 int age; /年龄char exp6; /学历int wage; /工资char address20;/住址char tel12; /电话

26、号码;int count=0; /当前工人个数int sort_type=0; /当前排序类型struct worker work50;void main() int i=0,k=0; char username15,pwd6; system("color 3f"); printf("nn"); printf(" tn"); printf(" t*n"); printf(" t*n"); printf(" t*n"); printf(" t* *n");

27、printf(" t* 欢迎使用职工信息管理系统 *n"); printf(" t* *n"); printf(" t* *n"); printf(" t* 郝佳丽 *n"); printf(" t* *n"); printf(" t* 2011.06.20 *n"); printf(" t* *n"); printf(" t*n"); printf(" t*n"); printf(" t*n")

28、; printf(" tn"); for(i=0;i<3;i+) printf("n请输入用户名:"); gets(username); printf("n请输入6位密码:"); gets(pwd); if(strcmp(username,"admin")=0)&&(strcmp(pwd,"")=0) printf("n您已经成功登录"); k=1; for(i=0;i<20;i+) printf("."); Sleep(100

29、); system("cls"); homepage(); break; else printf("n用户名或密码无效 请重新输入:n"); continue; if(k=0) printf("n连续输入错误3次 将退出程序n"); Sleep(2000); quit();void homepage() char n; printf("nn"); printf("tn"); printf("t*n"); printf("t* * *n"); printf(

30、"t* 1.显示员工资料 * 2.录入员工资料 *n"); printf("t* * *n"); printf("t*n"); printf("t* * *n"); printf("t* 3.员工信息查询 * 4.删除员工记录 *n"); printf("t* * *n"); printf("t*n"); printf("t* * *n"); printf("t* 5.员工信息排序 * 0.退出信息系统 *n");

31、printf("t* * *n"); printf("t*n"); printf("tn"); while (n!='1')&&(n!='2')&&(n!='3')&&(n!='4')&&(n!='5')&&(n!='0') printf("n请选择:"); fflush(stdin); scanf("%c",&n

32、); switch(n) case '1': display(); break;case '2': if(count<50) input(); else printf("记录数已满n"); Sleep(2000); system("cls"); homepage(); break;case '3': find(); break; case '4': del();break;case '5':sort();break; case '0': quit();

33、break; default: printf("n选项错误n"); void display() int i; char c; system("cls");printf("备注:学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):nnn"); switch(sort_type) case 0: printf("tt未排序:nn"); break; case 1: printf("tt按工号排序:nn"); /sort();break; case 2: printf("t

34、t按工资排序:nn");/sort(); break; printf("t工号t姓名t性别t年龄t学历t工资t住址t电话n");if (count=0) printf("nt无员工信息!n"); for(i=0;i<count;i+) printf("t%dt%st%ct%dt%st%dt%st%sn",worki.num,,worki.xingbie,worki.age,worki.exp,worki.wage,worki.address,worki.tel); printf("nn按任

35、意键返回n"); c=getch(); system("cls"); homepage();void input() int i,numcheck; char c; system ("cls"); do printf("工号:n"); scanf("%d",&workcount.num); numcheck=1; if(workcount.num<0) printf("请输入正整数:n"); for(i=0;i<count;i+) if(workcount.num=

36、worki.num) numcheck=0; printf("工号重复,重新输入:n"); while(!numcheck); printf("姓名:"); fflush(stdin); scanf("%s",);fflush(stdin); printf("性别(F:M):"); scanf("%c",&workcount.xingbie);printf("年龄:");scanf("%d",&workcount

37、.age);fflush(stdin);printf("学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):n");scanf("%s",workcount.exp);printf("工资:");scanf("%d",&workcount.wage);printf("住址:");scanf("%s",workcount.address);printf("电话:");scanf("%s",workcount.tel); printf("n是否继续输入(y/n):n"); do c=getchar(); if(c='y'|c='Y') count+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论