1、C语言课程设计题目及要求题目:职员信息管理系统设计职员信息包含职员号、姓名、性别、年纪、学历、工资、住址、电话等(职员号不反复)。试设计一职员信息管理系统,使之能提供以下功效:1、职员信息录入功效(职员信息用文件保留)。2、职员信息浏览功效。3、查询功效:能够按“职员号”、“姓名”、“电话”、“工资”等方法查询统计;假如查询信息不存在,显示没有找到信息; 4、删除功效:能够依据职员号或姓名删除一条已经存在职员信息;5、排序功效:能对姓名、年纪、工资进行排序,并显示;6、修改功效:改变统计项一个或多个属性,并用新统计项覆盖已经存在统计项;7、数据存、取:数据以文件形式存放在磁盘上,所以在程序运行
2、中需要对文件进行读取操作。编程人员能够依据实际需要自己定义文件存放格式,在数据读写时必需正确定位,以免破坏文件正确性。除此之外,程序中还要不停处理用户输入,对输入数据容错性进行检验,能够确保数据正当性,避免恶意和非恶意操作对用户数据破坏。8、系统以菜单方法工作。1. 设计目标在今天这个高速信息时代,很多繁杂办公事务全部由计算机代劳,比如职员信息管理等反复劳动越来越需要计算机来处理。本系统就是为提升企业管理职员信息效率而设计,现在职员信息管理系统发挥无可替换作用。职员信息管理系统是一个能够用来进行职职员号、姓名等自然信息和各项工资组成进行录入、查询、修改、删除、增加和排序浏览等操作应用软件。2.
3、 设计总体思想本系统是用Visual C进行设计和开发,总体思想是结构化、模块化程序设计。因为关键实现是管理系统增、删、改、查和排序等功效,所以应用到程序设计中基础控制结构,如循环和选择,还使用到C语言最具特色语言成份指针,高效地使用数组、字符串和结构体,采取经典排序方法冒泡法进行排序,而且包含对文件读、写等基础操作。3. 功效模块描述职员信息管理系统是为企业进行职员信息管理提供辅助而设计,需要为用户提供一个简单人机界面方便操作,各功效模块以下。1) 登录模块:依据输入登录密码判定是否许可该用户使用本系统,输入密码正确才能进入管理界面,管理职员信息。2) 创建模块:当第一次使用本系统时,依据提
4、醒输入职员工号、姓名、性别、年纪、学历、职位、工资、电话和住址,可一次性输入多条职员信息统计。浏览模块:能够浏览经输入、修改、删除、添加、排序、读取后职员信息。3) 查询模块:分为依据工号、姓名、电话、工资查询四个具体需求,分别提醒管理员要查询职员信息工号、姓名、电话或工资。4) 修改模块:分为依据工号、姓名修改两个具体需求,分别提醒管理员要修改职员信息工号和姓名,假如有对应职员信息统计存在,则逐项列出对应职员信息。5) 删除模块:分为依据工号、姓名删除两个具体需求,分别提醒管理员要删除职员信息工号和姓名,假如有则删除此职员对应信息统计。6) 添加模块:可在原有职员信息统计基础上增加新职员信息
5、统计,并保留至磁盘中。7) 排序模块:分为依据姓名、年纪、工资排序三个具体需求,分别提醒管理员选择排序方法。8) 保留模块:将2)3)4)5)6)7)8)模块中改动数据保留至文件中,方便进行管理、查找和备份。9) 读取模块:将文件中数据读取至内存中。10)4. 概要设计系统模块结构图依据模块功效描述,职员信息系统能够分为11个模块,系统模块结构图1所表示。5. 具体设计5.1数据结构设计本程序定义结构体staffinfo,用于存放职员相关信息。定义结构体以下(每个变量后面/* */中内容为各个变量含义):struct staffinfo char num10; /*工号*/ char name
6、9; /*姓名*/ char sex3; /*性别*/ char age3; /*年纪*/ char edu5; /*学历*/ char role5; /*职位*/ char salary6; /*工资*/ char tel16; /*电话*/ char addr30; /*住址*/staN;因为工号、姓名、电话、住址等信息是用来描述职员这个有机整体,为了表示这些字段不是孤立,而是共同描述一个完整事物,所以用结构体来实现。5.2各函数说明1) void gotoxy(int x,int y) 功效:用于在屏幕上定位,其中整型数x代表列数,整型数y代表行数,其中0x80,0y,(0,0)代表左上
7、角。2) void showtable1()void showtable2()功效:分别打印表头和表尾。3) void enter()功效:进入系统登录界面,验证管理员输入密码。输入:登录密码。处理:接收管理员输入密码,存放到对应变量中进行判定。 判定密码是否正确,假如相符,则进入主菜单。 假如不相符,则提醒用户重新输入。4) int find(char str30,int t)功效:查找指定统计,str30表示需管理员输入职员某一项信息,t表示经过哪一项来查找,比如经过工号、姓名来查找。若找到和输入信息相同统计,则返回找到统计号,若找不到就返回-1。输入:职员信息某一项和想查找路径。处理:接
8、收管理员输入职员信息和查找方法,并存入对应变量中。 将内存中数据和输入信息逐条比对,直到找到相同统计,返回找到统计号。 若没找到该职员统计,就返回-1。5) void creat()功效:创建职员信息。将管理员输入若干条信息统计存入内存中。输入:需创建信息统计条数。 若干条职员信息统计(工号、姓名、职位、电话等信息)。处理:提醒管理员逐条输入职员信息。 获取管理员输入信息,存入内存中。 提醒管理员录入成功。6) void display()功效:浏览经过改动信息统计,即打印出内存中数据。7) void search()功效:查询所需职员信息统计。四种方法查询:工号、姓名、电话和工资。依据管理员
9、输入职员信息和查找方法,按不一样方法查找统计,列表显示查找到统计内容。输入:想要查找方法。要查询职员某一项信息。处理:提醒管理员要查询方法和要查询职员对应信息。循环品牌查找对应统计。假如找找,则列表显示结果。8) void modify()功效:修改原有职员信息统计。两种查找匹配统计方法:工号和姓名。依据管理员输入查找方法和职员信息查找是否存在匹配统计,若存在,则将此职员信息改为管理员输入内容。输入:想要查找匹配统计方法。要修改职员某一项信息。确定修改选项字母。 所要修改统计内容值(工号、姓名等)。处理:接收管理员输入查找匹配统计方法和要修改职员某一项信息。判定是否有匹配职员统计,若有,则列表
10、显示该统计并提醒管理员是否确定修改。提醒管理员输入该职员方各项信息。提醒管理员是否修改成功。9) void delet()功效:删除指定职员信息统计。两种查找匹配统计方法:工号和姓名。依据管理员输入查找方法和职员信息查找匹配统计,若找到,则列表显示,经提醒后删除该条统计。输入:想要查找匹配统计方法。要删除职员某一项信息。确定删除选项字母。处理:接收管理员输入查找匹配统计方法和要修改职员某一项信息。判定是否有匹配职员统计,若有,则列表显示该统计并提醒管理员确定删除。提醒管理员是否删除成功。10) void add()功效:增加新职员信息统计。判定所输入工号是否已存在,若不存在,则将管理员输入若干
11、条信息统计存入内存中。输入:想要添加职员工号。新职员信息统计(姓名、学历等)。处理:提醒管理员输入新职员工号。 判定职员号是否存在,若不存在,则提醒管理员逐条输入职员信息。 获取管理员输入信息,存入内存中。提醒管理员添加成功。11) void order()功效:给职员信息统计排序(升序)。三种排序方法:姓名、年纪和工资。依据管理员输入排序方法排序,列表显示排序结果。输入:想要排序方法。处理:提醒管理员输入排序方法。 根据指定方法排序。 列表显示排序结果。12) void save()功效:保留职员信息统计及统计条数至文件中。输入:确定保留选项字母。处理:提醒管理员确定保留。若确定保留,则将内
12、存中数据保留至指定文件中。提醒管理员保留成功。13) void load()功效:从文件中读取职员信息统计及统计条数。输入:确定读取选项字母。处理:提醒管理员确定读取。将文件中数据读取至内存中。提醒管理员读取成功。14) void quit()功效:确定保留过数据后,安全退出系统。输入:确定保留选项字母。确定退出系统选项字母。处理:提醒管理员确定保留。若确定保留,则将内存中数据保留至指定文件中。提醒管理员是否退出系统,若是则退出。15) void main()功效:依据主菜单上各项指令,调用1)至14)各个函数。系统控制图图1所表示。6. 程序分析6.1程序预处理包含加载头文件,定义结构体,宏
13、定义,全局变量,并对她们进行初始化。#include /*输入/输出函数*/#include /*其它说明*/#include /*字符串函数*/#include /*系统操作函数*/#include /*屏幕操作函数*/#define N 20 /*系统统计职员数,可依据不一样企业需要更改*/struct staffinfo char num10; /*工号*/char name9; char sex3; char age3; char edu5; /*学历*/char role5; /*职位*/char salary6; char tel16; /*电话*/char addr30; /*住
14、址*/staN;int n=0; /*实际录入职员信息统计总条数*/6.2主函数void main()关键实现对整个程序运行控制。具体分析可参考图3。/*主函数*/void main()void gotoxy(int x,int y); /*光标定位*/void showtable1(); /*打印表头*/void showtable2(); void enter(); int find(char str30,int t); void creat(); /*录入职员信息*/void display(); /*浏览职员信息*/void search(); void modify(); void
15、delet(); void add(); void order(); void save(); /void load(); /*从文件读取职员信息*/void quit(); /*退出系统*/system(color 3e); enter();while (1) int choice;system(cls);/*清屏*/printf(职员信息管理系统);printf(=主菜单=n);printf(*n);printf( ( 002 1: 录入职员信息 )n);printf( ( 002 2: 浏览职员信息 )n);printf( ( 002 3: 查询所需职员信息 )n);printf( (
16、002 4: 修改原有职员信息 )n);printf( ( 002 5: 删除原有职员信息 )n);printf( ( 002 6: 添加新职员信息 )n);printf( ( 002 7: 给职员信息排序 )n);printf( ( 002 8: 保留职员信息 )n);printf( ( 002 9: 读取职员信息 )n);printf( ( 002 0: 退出系统 )n);printf( *n);do printf(n 004请输入指令(09):);scanf(%d,&choice); /*输入选择数字*/while(choice9);switch(choice)case 1: creat
17、(); break;case 2: display();break;case 3: search();break;case 4: modify();break;case 5: delet();break;case 6: add();break;case 7: order();break;case 8: save();break;case 9: load();break;case 0: quit();break;default: break;6.3光标定位函数void gotoxy(int x,int y)0x80,0y,(0,0)代表左上角。/*光标定位*/void gotoxy(int x,
18、int y) COORD coord;coord.X=x; /*横坐标,表示列数*/coord.Y=y; /*纵坐标,表示行数*/SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); 6.4表头showtable1()和表尾showtable2()用于打印表格头和尾。/*表头*/void showtable1()printf(*);int i;for(i=0;i78;i+)printf(=);printf(*);printf(| 工号 | 姓名 | 性别 | 年纪 | 学历 | 职位 | 工资 | 电话 | 住址 |)
19、;printf(|-+-+-+-+-+-+-+-+-|);/*表尾*/void showtable2()int i;printf(*);for(i=0;i78;i+)printf(=);printf(*);6.5登录界面用于管理员登录,若密码输入正确则进入菜单。/*登录*/void enter()char str1=123;char str220;gotoxy(15,10);printf(欢迎进入职员信息管理系统! n);gotoxy(29,12);printf(004请输入管理员登录密码:);gets(str2);if(strcmp(str1,str2)/*字符串函数strcmp,指若二者相
20、等则返回0*/ system(cls);gotoxy(32,8);printf(004密码输入错误!);gotoxy(32,9);printf(004请重新输入:);fflush(stdin);/*将缓冲区内容传送到stdin中,即清理缓冲区内容*/enter();6.6创建职员统计用于第一次输入职员信息统计。/*创建职员信息*/void creat() /*创建职员信息统计*/int i,r;system(cls); /*清屏*/ printf(nn 004请输入此次所录入职员信息数:);scanf(%d,&r);n+=r; /*r为目前次输入职员信息数,n为录入职员信息数总数*/for(i
21、=0;ir;i+)system(cls);printf(n 004输入第%d位职员信息:n,i+1);printf( 004请输入工号:);scanf(%s,stai.num);printf( 004请输入姓名:);scanf(%s,stai.name);printf( 004请输入性别:);scanf(%s,stai.sex);printf( 004请输入年纪:);scanf(%s,stai.age);printf( 004请输入学历:);scanf(%s,stai.edu);printf( 004请输入职位:);scanf(%s,stai.role);printf( 004请输入工资:);
22、scanf(%s,stai.salary);printf( 004请输入电话:);scanf(%s,stai.tel);printf( 004请输入住址:);scanf(%s,stai.addr);printf(nn 002信息成功录入!n);printf( 004请按任意键返回主菜单:);fflush(stdin); /*清除缓存*/getch(); /*接收任意一个字符*/6.7浏览统计用于查看内存中职员信息统计。/*浏览职员信息*/void display()int i;system(cls);gotoxy(16,2);printf(*全体职员信息*n);gotoxy(0,3);show
23、table1();for(i=0;in;i+)printf(| %-5s| %-7s| %-5s| %-5s| %-5s| %-5s| %-5s| %-9s| %-15s|,stai.num,stai.name,stai.sex,stai.age,stai.edu,stai.role,stai.salary,stai.tel,stai.addr);showtable2();printf(n 004请按任意键返回主菜单:);fflush(stdin);getch();6.8查询统计用于查询职员信息统计,有四种查询方法。/*查询所需职员信息(4种方法)*/void search()int a,t;
24、char str20;system(cls);gotoxy(26,8);printf(=查询职员信息=n);printf(*);gotoxy(19,10);printf( 002 1: 按工号查询 )n);gotoxy(19,11);printf( 002 2: 按姓名查询 )n);gotoxy(19,12);printf( 002 3: 按电话查询 )n);gotoxy(19,13);printf( 002 4: 按工资查询 )n);gotoxy(20,14);printf(*);printf(004请输入您期望查询方法(14):);scanf(%d,&t);system(cls);swit
25、ch(t)case 1:printf(nn 004请输入工号:);break;case 2:printf(nn 004请输入姓名:);break;case 3:printf(nn 004请输入电话:);break;case 4:printf(nn 004请输入工资:);break;scanf(%s,str);a=find(str,t); /*str和stai.*中字符串比较,若一样find()函数返回i值,即找到第i+1条信息和刚输入相同,t表示查询方法*/if(a!=-1)printf(n 002已查到该职员信息,内容为:n);showtable1();printf(| %-5s| %-7s
26、| %-5s| %-5s| %-5s| %-5s| %-5s| %-9s| %-15s|,staa.num,staa.name,staa.sex,staa.age,staa.edu,staa.role,staa.salary,staa.tel,staa.addr);showtable2();else printf(nn 004对不起,文件中没有此职员统计。n);printf( 004请按任意键返回主菜单:);fflush(stdin);getch();6.9查找指定统计用于查找匹配统计,将str100和stai.*中字符串比较,若二者一样返回统计号,若二者不一样返回-1。/*查找指定统计*/i
27、nt find(char str30,int t) /* t表示 1为工号 2为姓名 3为工资 4为电话*/int i;for(i=0;in;i+)if(t=1&strcmp(str,stai.num)=0)|(t=2&strcmp(str,stai.name)=0)|(t=3&strcmp(str,stai.salary)=0)|(t=4&strcmp(str,stai.tel)=0)return(i); /*两字符串若一样,strcmp(str,stai.*返回零值*/return(-1);6.10修改统计用于修改职员信息统计,有两种方法查找匹配统计。/*修改原有职员信息*/void mo
28、dify()int a,i;char str20,e;system(cls);gotoxy(26,8);printf(=修改职员信息=n);gotoxy(20,9);printf(*);gotoxy(19,10);printf( 002 1: 按工号修改 )n);gotoxy(19,11);printf( 002 2: 按姓名修改 )n);gotoxy(20,12);printf(*);gotoxy(24,13);printf(004请输入您期望修改方法(12):);scanf(%d,&i);system(cls);switch(i)case 1:printf(nn 004请输入要修改信息工号
29、:);break;case 2:printf(nn 004请输入要修改信息姓名:);break;scanf(%s,str);a=find(str,i);if(a!=-1)printf(n 004您所要修改职员信息为:n);showtable1();printf(| %-5s| %-7s| %-5s| %-5s| %-5s| %-5s| %-5s| %-9s| %-15s|,staa.num,staa.name,staa.sex,staa.age,staa.edu,staa.role,staa.salary,staa.tel,staa.addr);showtable2();printf( 004
30、确定修改?(Y/N):);fflush(stdin);scanf(%c,&e);if(e=Y|e=y)system(cls);printf(nn 004请输入工号:);scanf(%s,staa.num);printf( 004请输入姓名:);scanf(%s,staa.name);printf( 004请输入性别:);scanf(%s,staa.sex);printf( 004请输入年纪:);scanf(%s,staa.age);printf( 004请输入学历:);scanf(%s,staa.edu);printf( 004请输入职位:);scanf(%s,staa.role);print
31、f( 004请输入工资:);scanf(%s,staa.salary);printf( 004请输入电话:);scanf(%s,staa.tel);printf( 004请输入住址:);scanf(%s,staa.addr);printf(nn 002修改成功!n);printf( 004请按任意键返回主菜单:);fflush(stdin);getch();else if(e=N|e=n)printf( 004修改已取消!n);printf( 004请按任意键返回主菜单:);fflush(stdin);getch();elseprintf( 004选择错误,请按任意键返回主菜单:);fflus
32、h(stdin);getch();else printf(nn 004对不起,文件中没有此职员统计。n);printf( 004请按任意键返回主菜单:);fflush(stdin);getch();6.11删除统计用于删除指定职员信息统计,有两种方法查找匹配统计。/*删除原有职员信息*/void delet()int a,j;char str20,e;system(cls);gotoxy(26,8);printf(=删除职员信息=n);gotoxy(20,9);printf(*);gotoxy(19,10);printf( 002 1: 按工号删除 )n);gotoxy(19,11);prin
33、tf( 002 2: 按姓名删除 )n);gotoxy(20,12);printf(*);gotoxy(24,13);printf(004请输入您期望删除方法(12):);scanf(%d,&j);system(cls);switch(j)case 1:printf(nn 004请输入要删除工号:);break;case 2:printf(nn 004请输入要删除姓名:);break;scanf(%s,str);a=find(str,j);if(a!=-1)printf(n 004您所要删除职员信息为:n);showtable1();printf(| %-5s| %-7s| %-5s| %-5s| %-5s| %-5s| %-5s| %-9s| %-15s|,staa.num,staa.name,staa.sex,staa.age,staa.edu,staa.role,staa.salary,staa.tel,staa.addr);show
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100