计算机语言课程设计
任务书及说明书
设计题目:公司员工信息管理系统
学院
专业、年级
学生
学号
指导教师
时间 2 年学期
目录
1摘要 (3)
2前言 (4)
3正文 (5)
3.1系统分析 (5)
3.2总体设计 (7)
3.3各函数设 (8)
3.4系统调试与测试 (12)
3.5详细设计.......................................133.6设计总结........................................144参考文献……………………………………………………………15
附录:源程序 (1)
1摘要
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
本人设计的是一个关于公司员工信息管理的系统,通过这个系统管理员可以简捷、方便的对员工信息进行增加、修改、删除等功能,而用户也可以通过这个系统对职工信息进行查询等功能。
关键词:信息技术;管理;系统;员工信息
2前言
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力
3正文
3.1系统分析
1 设计一个信息管理系统,能以简便高效的方式对职工信息进行管理和检索,具体功能如下:系统以菜单方式工作
1)职工信息录入(文件保存职工信息)
2)输出职工信息、浏览职工信息
3)查询职工信息
4)根据员工号查找职工信息
5)根据工资、年龄、性别对职工信息进行排序
6)删除职工信息
2系统主要包括十个功能模块,分别是:
1)主函数,控制系统的执行流程,使系统菜单可以循环执行。
2)菜单函数,提供一个可以选择任何一个功能的选择窗口供用户选择需要执行的操作。
3)打开文件函数,把文件的信息打开到一个结构体数组中。
4)录入文件函数,把内存中结构体中的信息输出到文件中。
5)录入函数,提供录入职工信息功能。
6)输出函数,提供职工信息输出功能,浏览职工信。
7)排序函数,提供对职工信息检索,按条件查找排序功能。
8)职工号查询函数,提供用户根据职工号码查询职工信息功能。
9)删除职工信函数,提供对职工信息的删除功能。
10)退出函数,执行退出功能。
3.2总体设计
3.3open 函数算法思想:
close
reorder( )
show( )
del e teEmp( )
fi n dByEmpName( )
说明:
件,除了输入功能以外,其它的功能将自动禁止,显示“不能执行找不到相应的文件.”按任意键退出程序。
输入时,按照提示陆续输入每个员工的单个信息,输入完毕,选择“1”,程序将自动回到菜单选择界面。
其它的功能模块都在执行程序时有相应的提示,非常容易操作。
3.4系统调试与测试
1)开始菜单
2)输入员工信息
3.5详细设计
(1)数据结构设计
本程序中,对于职工各项详细信息的记录用了结构数组的形式,对于主要数据结构的应用如下:
结构数组:
struct staff /*基本信息*/
{
char name[8]; /*职工姓名*/
char num[10]; /*编号*/
char sex[10]; /*性别*/
char old[10]; /*年龄*/
char cult[15]; /*职位*/
char salary ; /*工资*/
char address; /*住址*/
char tell ; /*电话*/
}Emp;
(2)模块接口设计
本程序执行的入口是main函数,然后用switch语句实现对各个函数的调用。被调用的函数都是没有形参的,函数直接实现所需要
的功能。最后,再从main函数中结束整个程序的运行。
3.6设计总结
在这个《公司员工信息管理系统中管理系统》C语言课程设计中,完成了基本功能,即可以检索记录、新建新记录、删除记录、插入或增加新记录,使用文件对记录进行保存和读取功能。
在开始进行课程设计时,先进行界面模块的总体把握,充分了解自己要设计的程序的总体的结构,从而,在其过程中能一个模块一个函数进行详细的构思,从而在调试程序时也显得比较轻松,虽说随着程序代码的不断增多、其复杂性不断增大,但是因为是分模块函数一个一个的调试;最后在将其模块用多文件编译运行时没有遇到语法错误。但是,运行结果完全不正确,常常出现乱码和死循环等原因,通过查找资料、讨论及请教老师,程序终于正确地运行。在此过程中,学到的不止是如何调试这个知识,学到得最多的是一种遇到不懂问题怎么去解决的方法和在遇到困难时心态的调节。
在此课程设计中,不仅综合了数据结构的知识,而且还综合了文件处理数据的知识,难度显得较难,但这些功能还是能在较快的时间内完成,倒是课本上那些属于基础和细节上的知识点总不知道如何使用它、常常用错它,如在使用switch()、while()和getch(),scanf()以及gets()等语句上,有时因用错它们,使程序无法停止。
总之,这次课设收获很多,为了完成这次设计,参考了一些书籍,了解了以前常忽视却很重要的东西,深化对C语言的理解,进一步理解对C语言进行程序设计的方法和步骤,加深了结构化程序设计的思
想,积累了调试程序的经验,为进一步学习C语言奠定了一定的基础。
4:参考文献
[1] C/C++程序设计,王连相等,中国科学技术出版社,2004
[2]C语言程序设计,谭浩强,清华大学出版社,1999
[3] C程序设计题解与上机指导,谭浩强,清华大学出版社,1999
[4] C语言实用程序荟萃,西安电子科技大学出版社,1993
[5] C语言函数手册,机械工业出版社,1999
附录:源程序
#include
#include
#include
typedef struct Empk
{
int EmpNum; /* 员工编号*/
char EmpName[12]; /* 姓名*/
int Sex; /*性别1- 女2- 男*/
int Old; /* 年龄*/
int Cult; /*职位1-specilist 2-干事3-其他*/ int Salary; /*工资*/
char Address[12]; /* 地址*/
int Tell; /*电话号码*/
}Emp;
Emp emp[100];
void open()
{
int i;
FILE *fp;
if((fp=fopen("wyl","rb+"))==NULL)
{printf("输入失败,没有相应的文件信息\n");
exit(0);}
for(i=0;i<100;i++)
{if(fread(&emp[i],sizeof(Emp),1,fp)==0)
{printf("存储失败\n");
exit(0);}
}
fclose(fp);
}
void close()
{
int i;
FILE *fp;
if((fp=fopen("wyl","wr+"))==NULL)
{printf("执行错误!\n");
exit(0);}
for(i=0;i<100;i++)
fwrite(&emp[i],sizeof(Emp),1,fp);
fclose(fp);
}
void inputEmpInfo()
{
int i,k;
for(i=0;i<100;i++)
{
printf("请输入员工编号:\n");
scanf("%d",&emp[i].EmpNum);
printf("\n姓名:");
scanf("%s",emp[i].EmpName);
printf("\n性别: 1- 女2- 男:");
scanf("%d",&emp[i].Sex);
printf("\n年龄:");
scanf("%d",&emp[i].Old);
printf("\n职位:1-经理2-干事3-其他");
scanf("%d",&emp[i].Cult);
printf("\n工资:");
scanf("%d",&emp[i].Salary);
printf("\n地址:");
scanf("%s",emp[i].Address);
printf("\n电话:");
scanf("%d",&emp[i].Tell);
printf("继续?(1.yes 2.no)");
scanf("%d",&k);
if(k==2) break;
}
close();
}
void reorder()
{
int i,s,j,k,l;
Emp temp;
open();
printf("\n您需要按什么方式排序?\n1---性别\n2---工资(from maximum to minimum) \n3--年龄(from maximum to minimum) \n ( enter the corresponding nember) \n)");
scanf("%d",&i);
switch(i)
{
case 1:
printf("\n请输入您要选择的性别1--女 2 --男");
scanf("%d",&s);
for(j=0;emp[j].EmpNum!=0;j++)
{
if(emp[j].Sex==s)
{
printf(" 编号:%d\n",emp[j].EmpNum);
printf("姓名:%s", emp[j].EmpName);
printf("\n性别1- 女2- 男:%d", emp[j].Sex);
printf("\n年龄:%d", emp[j].Old);
printf("\n职位:%d\t\t\t 1-经理2-干事3-其他",emp[j].Cult); printf("\n工资:%d", emp[j].Salary);
printf("\n地址:%s", emp[j].Address);
printf("\n电话号码:%d", emp[j].Tell);
}
}
break;
case 2:
for(k=0;emp[k].EmpNum!=0;j++ )
{
for(l=k;emp[l].EmpNum!=0;l++)
{
if(emp[l].Salary {temp=emp[l];emp[l]=emp[l+1];emp[l+1]=temp;} } printf(" 编号:%d\n",emp[k].EmpNum); printf("姓名:%s",emp[k].EmpName); printf("\n性别1- 女2- 男:%d",emp[k].Sex); printf("\n年龄:%d",emp[k].Old); printf("\n职位:%d\t\t\t 1-经理2-干事3-其他",emp[k].Cult); printf("\n工资:%d",emp[k].Salary); printf("\n地址:%s",emp[k].Address); printf("\n电话号码:%d",emp[k].Tell); } break; case 3: for(k=0;emp[k].EmpNum!=0;j++ ) { for(l=k;emp[l].EmpNum!=0;l++) { if(emp[l].Old {temp=emp[l];emp[l]=emp[l+1];emp[l+1]=temp;} } printf(" 编号:%d\n",emp[k].EmpNum); printf("姓名:%s",emp[k].EmpName); printf("\n性别1- 女2- 男:%d",emp[k].Sex); printf("\n年龄:%d",emp[k].Old); printf("\n职位:%d\t\t\t 1-经理2-干事3-其他",emp[k].Cult); printf("\n工资:%d",emp[k].Salary); printf("\n地址:%s",emp[k].Address); printf("\n电话号码:%d",emp[k].Tell); } break; } } void show() { int j; open(); printf("\n-------------------------公司员工信息---------------------------\n"); for(j=0;emp[j].EmpNum!=0;j++) { printf("编号:%d\n",emp[j].EmpNum); printf("姓名:%s",emp[j].EmpName); printf("\n性别1- 女2- 男:%d",emp[j].Sex); printf("\n年龄:%d",emp[j].Old); printf("\n职位:%d 1-经理2-干事3-其他",emp[j].Cult); printf("\n工资:%d",emp[j].Salary); printf("\n地址:%s",emp[j].Address); printf("\n电话号码:%d",emp[j].Tell); } } void deleteEmp() { int j,k,d,i=0; open(); printf("请输入您想要删除的员工的编号:\n"); scanf("%d",&d); for(j=0;emp[j].EmpNum!=0;j++) { if(emp[j].EmpNum==d) { for(k=j;emp[j].EmpNum!=0;k++) emp[k]=emp[k+1]; i++; } } if(i==0) printf("没有找到您想要的员工!!!\n"); close(); printf("删除成功\n"); } void findByEmpName() { int j,i,k=0; open(); printf("请输入编号:\n"); scanf("%d",&i); for(j=0;emp[j].EmpNum!=0;j++) {if(emp[j].EmpNum==i) { printf("\n-------------------------你查找的信息---------------------------\n"); printf("编号:%d\n",emp[j].EmpNum); printf("姓名:%s",emp[j].EmpName); printf("\n性别1- 女2- 男:%d",emp[j].Sex); printf("\n年龄:%d",emp[j].Old); printf("\n职位:%d\t\t\t\t 1-经理2-干事3-其他",emp[j].Cult); printf("\n工资:%d",emp[j].Salary); printf("\n地址:%s",emp[j].Address); printf("\n电话号码:%d",emp[j].Tell); k++; } } if(k==0) printf("\n找不到您需要的信息!!!\n"); } void menu() { printf("\n--------------------------------------------------------------------------\n"); printf("\n 欢迎访问员工信息管理系统\n"); printf("\n-------------------------------------------------------------------------\n"); printf("请选择菜单:\n\n"); printf("\n 1 ---- 输入: 输入员工信息"); printf("\n 2 ---- 插入: 更新列表"); printf("\n 3 ---- 删除: 删除员工信息"); printf("\n 4 ---- 显示: 显示所有员工信息"); printf("\n 5 ---- 查询"); printf("\n 0 ---- 退出\n"); } void main() { int op,choice=1; while(choice==1) { menu(); printf("\n请输入您选择的号码:\n"); scanf("%d",&op); switch(op) {case 1: inputEmpInfo();break; case 2: reorder();break; case 3: deleteEmp();break; case 4: show();break; case 5: findByEmpName();break; case 0: {printf("欢迎使用公司员工信息管理系统!!!\n"); printf("---------------监制人:陈化宁---高新材料基地一班"); exit(0);} getchar();} printf("\n-------------------------------------------------------------------------\n"); printf("\n是否继续? 是—1 否--2\n"); scanf("%d",choice); } getch(); }