文秘专题
当前位置:首页 > 文秘专题 > 列表页

c语言管理系统个人总结

百纳文秘网  发布于:2019-05-27 16:38:28  分类: 文秘专题 手机版

学生信息管理系统c语言程序设计报告(完美)

学生信息管理系统HUNANUNIVERSITY程序设计训练 报 告学生姓名 学生学号 专业班级 指导老师 院 (系 任 长 主 ) 2013 年 5 月 25 日第1页 学生信息管理系统目一录系统功能简介......................................3 .................................3二 本人完成的主要工作三 实训分析............................... ..4四 实训设计...............................5五 实训源程序代码和调试过程.....................7六 实训总结.................................11附录 1................................12附录 2.................................12-22第2页 学生信息管理系统一 系统功能简介.学生信息管理系统 1, 进入主界面:要求输入密码,输入三次错误系统锁定。

2,输入记录:将学生的基本信息包括学号,姓名,性别,地区,分数等数据作为 一个记录写入文件。

3,显示记录:显示学生的各项信息 。

4,增加记录: 增加多个学生的基本信息,位于之前的学生后面。

5,删除记录: 删除学生信息。

6,修改记录:可以修改学生的任何一项基本信息。

7,查找记录:可以根据学生的学号查找并显示出学生的信息。

8,统计记录: 统计全班通过情况和不及格情况。

9,退出系统 经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐 个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。二 本人完成的主要工作学生信息管理系统由我和龚晨同学共同完成。主程序的编写由我们两个共同完 成。

我负责的是: 1、修改记录:可以修改学生的任何一项基本信息。

2、查找记录:可以根据学生的学号查找并显示出学生的信息。

3、统计记录: 统计全班通过情况和不及格情况。

4、退出系统三 实训分析1、用结构化程序设计思想进行 C 环境下程序设计。第3页 学生信息管理系统2、设计一个管理系统,上机编程、调试并通过该管理系统中的各功能模块。

3、设计完成后,每人必须提交程序清单及关于程序设计、维护和使用方面 的图文材料即程序设计说明书各一份。

4、基于结构化程序设计思想和所使用的 C 语言开发环境与开发工具,并运 用“软件工程”和“数据结构”中的有关概念和方法,针对具体设计题目和要求, 分析功能要求,划分功能模块,用链表结构设计功能模块函数,以菜单方式调用 相应功能模块来实现信息和数据处理四 实训设计1、系统功能模块结构图 本图书管理系统理由输入记录,显示记录,增加记录,删除记录,修改 记录,统计数据,查找记录,七个大模块组成,其总体结构图如下:学生信息管理系 统输 入 记 录 模 块显 示 记 录 模 块修 改 记 录 模 块增 加 记 录 模 块删 除 记 录 模 块修 改 记 录 模 块统 计 记 录 模 块查 找 记 录 模 块退 出 系 统2.核心数据结构设计: 1.头文件说明 如: #include<string.h> #include<stdio.h> #include<stdlib.h>第4页 学生信息管理系统#include<conio.h> 2,函数的编写 定义结构类型; 定义全局变量; 定义、编写记录(数据)输入函数; 定义、编写记录(数据)显示函数; 定义、编写记录(数据)增加函数; 定义、编写记录(数据)删除函数; 定义、编写记录(数据)修改函数; 定义、编写记录(数据)统计函数; 定义、编写记录(数据)查找函数; 函数名称 enter() input(); display() add () delet() amend() preside (); fint (); output(); 函数功能 进入函数 输入函数 显示函数 增加函数 删除函数 修改函数 统计函数 查找函数 退出函数3. 核心算法描述(程序流程图)主函数结构流程程序开始初始化、定义主菜单、分支菜单指针数组及变量 读键盘按键的键值第5页 学生信息管理系统判断键值并弹出对应菜单用户按了 1-8 键吗? N Y 根据按键执行菜单选项对应的函数 从被调用函数中返回并转移N退出管理系统五 实训源程序代码和调试过程(包括截图)1.1 进入界面第6页 学生信息管理系统图一输入密码进行身份验证,输入三次则系统锁定。1.2 选择菜单图二 主菜单接界面,选择数字执行相应功能。

1.3 输入信息第7页 学生信息管理系统图三依次输入学生的各项基本信息。1.4 显示信息图四 可以显示录入及增加的各项信息。

1.5 增加信息第8页 学生信息管理系统图五 根据需要添加新的学生信息。

1.6 删除记录图六 删除信息。

1.7 修改记录第9页 学生信息管理系统图 七 可修改任何学生的任何一项纪录。

1.8 统计信息图八对所有的信息进行统计显示不及格人数。1.9 查找信息第 10 页 学生信息管理系统图九根据学号查找出需要的学生信息。六实训结论通过 C 语言实训, 让我加深了对 C 语言的了解,而不只是单单的在课本中学到的 那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己 动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常 会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些 错误可以较快看出来。

这次实训有很大的收获, 让我对 C 语言有了更深的认识,平时在课堂上学到的东 西可以自己动手编写, 将其转化成一些实用的技能。如果是一个程序写完一处错 误也没有, 会有种成就感, 于是兴趣就来了, 兴趣来了, 自然学的东西也就多了, 能把理论变成实际的技能,让我对 C 语言有了浓厚的兴趣和更深层的认识。

C 语言是一个有序的学习,条理很清楚,不是一个零散的知识,实际上所有的课 程都如此,要从整体上把握。不过通过实训我也知道了自己的不足,存在的很多 问题。希望能在以后的学习中,不断提高自己的能力,让问题越来越少。

附录 1参考文献[1 ] 刘振安等.C 程序设计课程设计.北京:机械工业出版社,2004.9 [2] 谭浩强等.c 语言程序设计.(第二版).清华大学出版社,2002,.8 [3] 张引等著《C 程序设计设计基础课程设计》浙江大学出版社 2007 [5] 曹哲等 《C 程序设计课程设计》 机械工业出版社 2010.7第 11 页 学生信息管理系统附录 2 源程序代码#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #define N 20 struct student { long num; char name[20]; char sex[2]; char address[20]; int score[3]; int sum; int ave; }; struct student stu[N]; int t=1,pl=0; void enter(); void input(); void display(); void add(); void delet(); void amend(); void preside(); void fint(); void output(); void main() { int password;/*定义学生结构体*/int i; printf("\n\n\n\n\t\t\t 欢迎进入学生信息管理系统\n"); /*初始界面 输入验证密码*/ for(i=1;i<=3;i++) {第 12 页 学生信息管理系统 printf("\n\n\t\t\t 请输入密码:"); scanf("%d",&password); if(password==000000) { enter(); break; } printf("error!please input again!"); } printf("密码输入三次有误!系统锁定!"); } void enter() { int choice,w; char k; system("cls"); printf("\t\t\t 学生信息管理系统\n\n"); printf("\t\t1. 录入.\t2. 显示.\t3. 增项.\t4. 删项.\n\t\t5. 修改.\t6. 统计.\t7. 查找.\t8.退出.\n"); printf("\n 输入序号执行相应功能:"); scanf("%d",&choice); switch(choice) { case 1: input();break; case 2: display(); break; case 3: add();break; case 4: delet();break; case 5: amend();break; case 6: preside(); break; case 7: fint(); break; case 8: output();break; default: w=1; } if(w==1) { printf("输入有误,按任意键重新选怿.\n"); k=getchar(); getch(); enter(); } } void input()第 13 页/*进入主菜单函数*//*学生信息录入的函数*/ 学生信息管理系统 { int x,count=0,i; char w,r[20],o; struct student *p; p=stu; system("cls"); printf("\t\t\t 学生信息的录入.\n"); do { pl++; printf("请输入第%d 个学生的信息.\n\n",t); printf("学号:\n"); scanf("%ld",&p->num); printf("姓名:\n"); scanf("%s",&p->name); printf("\n"); printf("性别:\n"); gets(r); gets(&p->sex); printf("\n"); printf("地区:\n"); scanf("%s",&p->address); printf("\n"); printf("三门成绩:1.语文.2.数学.3.英语.\n"); for(i=0;i<3;i++) scanf("%d",&p->score[i]); p->sum = p->score[0] + p->score[1] + p->score[2]; p->ave = p->sum/3; printf("\n\n 是否要继续输入学生信息,如果是请按 y;不是请按 n.\n"); o=getchar(); w=getchar(); if(w=='y' || w=='Y') { t++; x=1; p++; } else x=0; } while(x==1);第 14 页 学生信息管理系统 if(w=='n' || w=='N') printf("按任意键返回.\n"); getch(); enter(); } void display() {/*显示学生信息*/ int i,j; system("cls"); printf("\t\t\t 学生信息显示.\n\n"); for(j=0;j<t;j++) { printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n","学 号","姓名","性别","地区","语文","数学","英语","平 均分","总分"); printf("%ld\t%s\t%s\t%s\t",stu[j].num, stu[j].name, stu[j].sex,stu[j].address); for(i=0;i<3;i++) printf("%d\t", stu[j].score[i]); printf("%d\t", stu[j].ave); printf("%d\t", stu[j].sum); printf("\n\n"); } printf("\n 按任意键返回.\n"); getch(); enter();} void add() { /*学生信息的增加*/ int i,x; char a, w; struct student *p; p=stu+t; system("cls"); printf("\n\t\t\t 增加学生信息.\n"); do { printf(" 请 输 入 第 %d 个 学 生 的 信 息 .\n\n",t+1); printf("学号:\n"); scanf("%ld",&p->num); printf("\n");第 15 页 学生信息管理系统 printf("姓名:\n"); scanf("%s",p->name); printf("\n"); printf("性别:\n"); scanf("%s",p->sex); printf("\n"); printf("地区:\n"); scanf("%s",p->address); printf("\n"); printf("三门成绩:1.语文.2.数学.3.英语.\n"); for(i=0;i<3;i++) scanf("%d",&p->score[i]); for(i=0;i<3;i++) p->sum = p->score[0] + p->score[1] + p->score[2]; p->ave = p->sum/3; a=getchar(); printf("\n 是否要继续输入学生信息,如果是请按 y;不是请按 n.\n\n"); w=getchar(); p++; t++; if(w=='y'||w=='Y') { x=1; } if(w=='n'||w=='N') { x=0; break; } }while(x==1) ; if(x==0) { printf("\n"); printf("按任意键返回.\n"); getch(); enter(); } } void delet() { long b;第 16 页/*学生信息的删除*/ 学生信息管理系统 int z,j; int r=t; char c,x; struct student *p; system("cls"); printf("\n\t\t\t 删除学生信息\n"); printf(" 请输入要删除学生的学号:\n\n"); scanf("%ld",&b); for(p=stu;p<stu+t;p++) if(p->num==b) break; else r--; if(r==0) { printf(" 你 要 删 除 的 学 生 不 存 在 , 请 按 任 意 键 返 回.\n"); getch(); enter(); } printf("\n 你要删除的学生为:\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s% -8s\n\n","学号","姓名","性别","地区","语文 "," 数学","英语","平均分","总分"); printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p-> sex,p->address); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n 你确定要删除吗?如是请输入 y;不是请 输入 n.\n"); x=getchar(); c=getchar(); if(c=='y'||c=='Y') { for(p=stu;p<stu+t;p++) *p=*(p+1); t--; printf("系统已为你删除信息,请按任意键返 回.\n");第 17 页 学生信息管理系统 getch(); enter(); } if(c=='n'||c=='N') { printf("删除信息取消!按任意键返回.\n"); getch(); enter(); } } void amend() { /*学生信息的修改*/ long j; int i,z,r=t; char c,d,e,f,q,u,l,v,m,k,h1,h2,h3,h4; struct student *p; system("cls"); printf("\n\t\t\t 修改学生信息\n"); printf(" 请输入要修改学生的学号:\n\n"); scanf("%ld",&j); for(p=stu;p<stu+t;p++) if(p->num==j) break; else r--; if(r==0) { printf("你输入的学生不存在,请按任意键返回.\n"); getch(); enter(); } printf("\n 你要修改的学生为:\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s \n\n","学号","姓名","性别","地区","语文 ","数学"," 英语","平均分","总分"); printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->s ex,p->address); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave);第 18 页 学生信息管理系统 printf("%-8d",p->sum); printf("\n\n 是否要修改学号:是请按 y;不是请 按 n.\n\n"); l=getchar(); c=getchar(); if(c=='y'||c=='Y') { printf("请输入正确的学号:\n\n"); scanf("%ld",&p->num); } if(c=='n'||c=='N') z=1; printf("是否要修改姓名:是请按 y;不是请按 n.\n\n"); q=getchar(); d=getchar(); m=getchar(); if(d=='y'||d=='Y') { printf("请输入正确的姓名:\n"); scanf("%s",p->name); u=getchar(); } if(d=='n'||c=='N') z++; printf("\n 是否要修改性别: 是请按 y;不是请按 n.\n\n"); e=getchar(); k=getchar(); if(e=='y'||e=='Y') { printf("请输入正确的性别:\n"); scanf("%s",p->sex); } if(e=='N'||e=='n') z++; printf("\n 是否要修改地区:是请按 y;不是请 按 n.\n\n"); h3=getchar(); h4=getchar(); if(h3=='y'||h3=='Y')第 19 页 学生信息管理系统 { printf("请输入正确的地区:\n"); scanf("%s",p->address); } if(h3=='N'||h3=='n') z++; printf("\n 是否要修改三门成绩: 是请按 y;不是 请按 n.\n\n"); f=getchar(); if(f=='y'||f=='Y') { printf("请输入正确的三门成绩:"); for(i=0;i<3;i++) scanf("%d",&p->score[i]); p->sum = p->score[0] + p->score[1] + p->score[2]; p->ave = p->sum/3; } v=getchar(); if(f=='n'||f=='N') { printf("请按任意键返回.\n"); getch(); enter(); } } void preside() { /*学生信息的统计*/ int i,j,o=0,b=10,r=60; struct student *p; system("cls"); printf("\n\t\t\t 学生信息统计.\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\ n\n","学号","姓名","性别","地区","语文 ","数学"," 英语","平均分","总分"); for(p=stu;p<stu+t;p++) { printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->se x,p->address); for(j=0;j<3;j++)第 20 页 学生信息管理系统 printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n\n"); } printf("\n\n\n"); for(p=stu;p<stu+t;p++) { for(i=0;i<3;i++) if(p->score[i]<r) { b=b-1;o=o+1; printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\ n\n","学号","姓名","性别","地区","语文 ","数学"," 英语","平均分","总分"); printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->se x,p->address); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n\n"); break; } } if(b==10) printf("\n\n 班上所有的人都通过考试.\n\n"); else if(b<10) printf("\n 以上为不及格的同学,全班不及格的人数 为:%d 人.\n\n",o); printf("\n"); printf("统计完成,请按任意键返回.\n"); getch(); enter(); } void fint() {/*查找学生信息*/ int i,j=t; long num_a; struct student *p; char a,b;第 21 页 学生信息管理系统 system("cls"); printf("\n\t\t\t 查找学生信息\n"); printf("\t\t\t 请输入要查找的学生学号:\n"); scanf("%ld",&num_a); for(p=stu;p<stu+t;p++) { j--; if(p->num==num_a) break; if(j==0) { printf("不存在该学生,请按任意键返回.\n\n"); a=getchar(); getch(); enter(); } } printf("\n 你要查找的学生为:\n\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s \n\n","学号","姓名","性别","地区","语文 ","数学"," 英语","平均分","总分"); printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->s ex,p->address); for(i=0;i<3;i++) printf("%-8d",p->score[i]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n\n 查找完成,请按任意键返回."); b=getchar(); getch(); enter(); } void output() {/*退出系统*/ system("cls"); exit(0);}第 22 页 学生信息管理系统第 23 页

C语言学生管理系统

佛山科学技术学院实验报告实验名称 小型学生信息管理系统 实验项目 编写一学生信息管理系统,用来管理学生基本信息及成绩信息 专业班级 姓名 XXX 学号 指导教师 成绩 日期一、试验目的 本实验为学生提供了一个既动手又动脑,上机实践的机会。学生通过分析和解决该实验,将课本上的 理论知识和实际有机地结合起来,锻炼学生分析、解决较复杂问题的能力,提高学生编写综合系统程序的 能力。

二、实验内容 编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。系统功能模块如下图:显 示 主菜单数据 数据 数据 数据 退出输入修改排序处理查询 统计输出平均分不及格 科 目具体要求为: 1. 建立学生信息,每个学生的信息应包括:学号、姓名、性别、班级、至少 3 门课程的成绩; 2. 数据输入:输入学生的各项信息; 3. 数据修改:根据输入学生的学号可以选择修改该学生的信息; 4. 数据处理:可以选择处理方式为:排序、查询、统计。其中: a) 排序:按学号排序 b) 查询:根据学号查询成绩 c) 统计:可以选择统计各学生的平均成绩或统计所有存在不及格科目的学生; 5. 数据输出:输出学生的相应结果信息; 6. 退出:退出整个学生信息管理系统。

7. 输出结果截屏的第一条记录一定要反映出你自己的真实信息。

三、程序组织结构图、函数调用关系图 四、程序清单#include<stdio.h> #include<iostream.h> #include<string.h> struct student { char num[10]; char name[10]; char sex[4]; char clas[20]; int yw,sx,yy; float ave; }stu[100]; int i,j; void InputData() { char x; while(1) { printf("\t 学号:"); scanf("%s",stu[i].num); printf("\t 姓名:"); scanf("%s",stu[i].name); printf("\t 性别:"); scanf("%s",stu[i].sex); printf("\t 班级:"); scanf("%s",stu[i].clas); printf("\t 语文:"); scanf("%d",&stu[i].yw); printf("\t 数学:"); scanf("%d",&stu[i].sx); printf("\t 英语:"); scanf("%d",&stu[i].yy); stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/3.0); i++; printf("\t 是否继续输入数据(Y.N)");cin>>x; if(x=='n'||x=='N') break; } } void EditData() { int count=0; char str[10]; printf("\n 请输入学生学号:"); cin>>str; while (count<i) { if(strcmp(str,stu[count].num)==0) { printf("学号 姓名 性别 英语\n");班级语文 数学printf("----------------------------------------------------------------\n"); printf("%-11s",stu[count].num); printf("%-13s",stu[count].name); printf("%-8s",stu[count].sex); printf("%-16s",stu[count].clas); printf("%-6d",stu[count].yw); printf("%-6d",stu[count].sx); printf("%-4d",stu[count].yy); printf("\n"); printf("----------------------------------------------------------------\n"); break; } count++; } if(count>=i) printf("\n 查无此人"); else { printf("\n\t 修改数据:\n"); printf("\t 学号:"); scanf("%s",stu[i].num); printf("\t 姓名:"); scanf("%s",stu[i].name); printf("\t 性别:"); scanf("%s",stu[i].sex); printf("\t 班级:"); scanf("%s",stu[i].clas); printf("\t 语文:"); scanf("%d",&stu[i].yw); printf("\t 数学:"); scanf("%d",&stu[i].sx); printf("\t 英语:"); scanf("%d",&stu[i].yy); stu[count].ave=float((stu[count].yw+stu[count].sx+stu[count].yy)/3.0); } } void sx() { struct student temp; int a,b,c; for(a=0;a<i-1;a++) { c=a; for(b=a+1;b<i;b++) if(stu[b].ave>stu[c].ave) c=b; temp=stu[b]; stu[b]=stu[c]; stu[c]=temp; } printf("排序后结果为:\n"); printf("学号 姓名 性别 班级 语文 数学 英语\n"); printf("----------------------------------------------------------------\n"); for(c=0;c<i;c++) { printf("%-11s",stu[c].num); printf("%-13s",stu[c].name); printf("%-8s",stu[c].sex); printf("%-16s",stu[c].clas); printf("%-6d",stu[c].yw); printf("%-6d",stu[c].sx); printf("%-4d",stu[c].yy); printf("\n"); } printf("----------------------------------------------------------------\n"); } void cx() { int count=0; char str[10]; printf("\n 请输入要查询的学生学号:"); cin>>str; while (count<i) { if(strcmp(str,stu[count].num)==0) { printf("学号 姓名 英语\n");性别班级语文 数学printf("----------------------------------------------------------------\n"); printf("%-11s",stu[count].num); printf("%-13s",stu[count].name); printf("%-8s",stu[count].sex); printf("%-16s",stu[count].clas); printf("%-6d",stu[count].yw); printf("%-6d",stu[count].sx); printf("%-4d",stu[count].yy); printf("\n"); printf("----------------------------------------------------------------\n"); break; } count++; } if(count>=i) printf("\n 无该学号学生"); else { printf("\n"); } } void tjpjf() { int count=0; stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/3.0); printf("学号 姓名 平均分 \n"); printf("--------------------------------------------------\n"); for(j=0;j<i;j++) while(count<i) { for(j=0;j<i;j++) { printf("%-21s",stu[count].num); printf("%-21s",stu[count].name); printf("%-6.2f",stu[count].ave); count++; printf("\n");} } printf("--------------------------------------------------\n"); } void tjbhgrs() { int j,count=0; printf("有不及格科目的学生是:\n"); printf("学号 姓名 性别 班级 语文 数学 英语\n"); printf("----------------------------------------------------------------\n"); for(j=0;j<i;j++) { if(stu[j].yw<60||stu[j].sx<60||stu[j].yy<60) {printf("%-11s",stu[count].num); printf("%-13s",stu[count].name); printf("%-8s",stu[count].sex); printf("%-16s",stu[count].clas); printf("%-6d",stu[count].yw); printf("%-6d",stu[count].sx); printf("%-4d",stu[count].yy); printf("\n"); } count++; } printf("----------------------------------------------------------------\n"); } void tj() { char x; while(1) { printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t 1.统计平均分 2.统计不及格学生信息 3.返回 \n"); printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\n\t 请选择具体的统计内容:"); cin>>x; printf("\n"); switch(x) { case '1':tjpjf();break; case '2':tjbhgrs();break; case '3':break; } if(x=='3') break; printf("\n"); }} void DataProc() { char x; while(1) { printf("\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t 处 理 数 据 \n"); printf("\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t \n"); printf("\t 1.按学号排序 \n"); printf("\t 2.查询 \n"); printf("\t 3.统计 \n"); printf("\t 4.返回主菜单 \n"); printf("\t \n"); printf("\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\n\t 请选择具体的处理内容:"); cin>>x; printf("\n"); switch(x) { case '1':sx();break; case '2':cx();break; case '3':tj();break; case '4':break; } if(x=='4') break; printf("\n"); } } void DataOutput() { int count=0; printf("学号 \n");姓名性别班级语文数学英语printf("----------------------------------------------------------------\n"); while(count<i) { printf("%-11s",stu[count].num); printf("%-13s",stu[count].name); printf("%-8s",stu[count].sex); printf("%-16s",stu[count].clas); printf("%-6d",stu[count].yw); printf("%-6d",stu[count].sx); printf("%-6d",stu[count].yy); count++; printf("\n"); } printf("----------------------------------------------------------------\n"); } void main() { char x; while(1) { printf("\t********************************************\n"); printf("\t* *\n"); printf("\t* 学 生 信 息 管 理 系 统 *\n"); printf("\t*------------------------------------------*\n"); printf("\t* 1.输入数据 *\n"); printf("\t* 2.修改数据 *\n"); printf("\t* 3.处理数据 *\n"); printf("\t* 4.输出数据 *\n"); printf("\t* 5.退出 *\n"); printf("\t* *\n"); printf("\t********************************************\n"); printf("\n\t 请选择需要进行的操作:"); cin>>x; printf("\n"); switch (x) { case '1':InputData();break; case '2':EditData();break; case '3':DataProc();break; case '4':DataOutput();break; case '5':printf("谢谢使用!\n");break; } if(x=='s') break; printf("\n"); } }五、运行结果 六、实验总结(调试分析、体会、致谢) 从这一次的综合实验中,我感触很深 可以这么说,为了这个实验花费比较的功夫。就我个人来说,其实我很害怕与电脑,程序有关的东西,可 能因为一直以来很少接触电脑吧,对于相关的东西比较难理解。很认真去学,还是感觉很吃力。每次上课或做 实验,发现自己在这方面很跟上大家的脚步。比如说,我去做了题,但是不能理解,也记不住。但是,这次的 综合实验二做起来相对之前,我发现自己有了进步。从开始着手做,我就发现这个实验所需要的知识在前面的实验已经做过了。特别是综合实验一。 我是像做实验一那样去完成这个实验的。首先把整个函数的结构,关系图先写出来。在把程序写 出来时,先写主函数,然后把第一层函数的空函数写出来,调试主函数与第一层的空函数。第二 步就是按照主菜单的顺序,把第一层函数写出来,输入数据的函数很快就写好,调试也没有任何 问题。在写修改数据的函数就没那么容易,我参照了老师的程序,但是很奇怪,调试没问题,可 当我输入数据后,进行第二的修改数据时,出现的数据一直是学号为 1 的学生的数据。我找了一 天是哪的问题,却完全没头绪,然后我就求助舍友了,舍友帮我看了很久,她也找不到。等我返 回去看流程图,才发现原来少了“if(strcmp(str,stu[count].num)==0)”这条件。接下来就是处 理数据的函数,我个人感觉这里,既简单又比较难的。这个函数里面又包含里按学号排序,查询, 统计这三个函数,而统计里面又有统计平均分及统计不及格学生信息两个函数。像之前一样,我 先把第三层函数写好,再写第四层的。按学号排序那个因为刚好老师讲到相关的那节课很认真听 了;做起来虽然有点磕磕碰碰,它的程序调试完全没问题。在调试查询的时候,我犯了一个特别 低级的错误,在没有把上一次的运行窗口关掉就编译,运行,发现程序连接有错误。我第一反应 以为代码出错,就一在代码上找错,但找不到,当我目光放到电脑的任务栏,才恍然大悟,没有 把上次运行后的窗口关掉。并且,这种错误在做综合实验过程中犯了不止一次。这也提醒着我对 于 C 语言很不熟练。做统计的函数时我花费了比较长的时间。其实统计里面的两个函数相对来讲 不是特别难,但是因为前面的都忘了,所以在调试老是出错。后来,函数写出来了,编译,运行 也没出错,可是统计出来的平均分就是不正确。看了又看,都找不到哪里有问题。我又去求助了 问一个同学,找不到,又回来问舍友了。终于发现了,原来在输入数据那个求平均值那里,我把 stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/3.0); 写成了 stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy/3.0));也就是括号放错地方了。

到这里为止,我已经完成了整个系统,开始全面调试,随便输了几组数据,一步一步往下进 行操作,整个系统运行正常。我很开心,至少在自己努力和老师,同学的帮助下完成整个实验。

在这里,我从心里深深表示,感谢在我有困难时 ,文娴和王瑶对我的帮助,感谢老师在课上的耐 心指导,让我对学习 C 语言有了兴趣与动力。我在完成这个系统后,我更加认识到:没什么是学 不会的,只在于你自己去不去努力学,我很后悔之前遇到一点小困难就放弃的行为,不过,我不 会再如此轻易放弃了,遇到困难要迎难而上。

在这里,再一次对老师和同学表示真心的感谢!

c语言程序设计

一、 课程设计目的 通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固 《C 语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。

学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

为后续各门计算机课程的学习打下坚实基础。

为毕业设计和以后工作打下必要基础。

二、课程设计内容 针对某企业的员工,对其信息进行系统的管理。

三、需求分析 对所开发系统功能、性能的描述,想要实现的目标。

此系统可对该厂员工进行信息的录入,修改,删除,添加,查询,排序,统计, 打印等功能。用户可通过提示选择进入某一功能界面,然后进行对员工的信息管 理。每一功能模块都充分为用户考虑,编排详细。使用户可以方便快捷的了解员 工信息,及时有效的对员工进行信息的管理。

四、概要设计 1.系统结构图(功能模块图) 对系统进行分析,给出系统结构图; 分析:此系统,为方便客户输入,以及使程序清晰化,因而本人采用模块法, 将每一功能模块化,使程序中各函数间调用更加明了。以下为系统模 块图。

2.功能模块说明 对各个模块进行功能的描述。

录入模块:输入该厂现有员工信息并保存与文件中,方便日后进行排序,更 新,统计,打印等操作。

输出模块:将所有员工信息,或所需员工信息输出于屏幕上,用于打印或查 询员工信息。

更新模块:此模块又分为删除,添加,修改三个模块。

删除模块:对已退休或离开该厂的员工进行删除操作。

添加模块:添加新入厂的员工信息并保存起来。

修改模块:找到该员工并,选择所要修改的选项。

排序模块:本程序只对员工年龄进行从小到大排序。

查询模块:此模块分为按姓名,年龄,工作查询。

姓名查询模块:输入要查找的姓名,找到就输出其信息。找不到则输出 无此人。

年龄查询模块:输入要查找的年龄,找到就输出其信息。找不到则输出无 此人。

工作查询模块:输入要查找的工作,找到就输出其信息。找不到则输出 无此人。

统计模块:此模块分为,统计年龄,性别和工作。

统计年龄:输入要统计的年龄,查找并输出,若无此年龄则输出暂无此 年龄员工。

统计性别:输入要统计的性别,查找并输出,若无此性别则输出暂无此 性别员工。

统计工作:输入要统计的工作,查找并输出,若无此工作则输出暂无此工作 员工。

保存模块:将现有信息保存于文件中,以防丢失。

系统模块图王氏企业员工 信息管理系统输入 i 的值,进入相应模块录 入 模 块输 出 模 块更 新 模 块查 询 模 块排 序 模 块统 计 模 块保 存 模 块退 出 系 统添 加 员 工 信 息删 除 员 工 信 息修 改 员 工 信 息按 姓 名 查 询按 年 龄 查 寻按 工 作 查 询按 年 龄 排 序按 年 龄 统 计按 性 别 统 计按 工 作 统 计按任意键返回主界面五、详细设计及运行结果 流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。

主函数:开始输入 i判断 i 值i=1录 入 模 块i=6输 出 模 块i=2更 新 模 块i=3 i=4查 询 模 块 排 序 模 块i=5统 计 模 块i=0退 出 系 统输出模块: 否开始i=0录入模块:开始打开文件是保存模块 打开文件 结束 i=0 i<n i=0否是 否i<n 输出员工信息是i++ 输入员工信息i++ 关闭文件关闭文件结束 排序模块:开始更新模块:开始i=0输入 ij=i+1判断 i 值i 的年龄大于 j 的 年龄否 i=1添 加 模 块i=3修 改 模 块i=2 i=0删 除 模 块是交换 i 与 j 的信息退 出 系 统j=j+1否j>n否 是i=i+1i=0是返回主界面否i>n-1是输出信息结束结束 查询模块:开始统计模块:开始输入 i输入 i判断 i 值判断 i 值i=1 i=3姓 名 查 询 工 作 查 询i=2年 龄 查 询i=0退 出 系 统i=1 i=2统 计 年 龄 统 计 性 别i=3i=0统 计 工 作 退 出 系 统否i=0 是 返回主界面否i=0 是 返回主界面结束结束六、调试情况,设计技巧及体会 1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。

自我评价:本人自我觉得此系统还不错,程序简洁明了,功能齐全,而且充分 从用户的角度进行编排, 易于执行。

经本人多次调试终于出现 0 个错误与警告, 而且从未有过死循环,用户一旦输错,立即会有提示,此程序相当的健壮。

因本人定义了全局变量,使操作更加简单易行,使用了结构体数组,避开链表 那样的复杂操作。但不足之处便是没有链表那样节省内存。如有机会下次可能 会用链表。

2、在设计过程中的感受。

在把字符一个个敲上屏幕时,坐在那一动不动相当的枯燥,一想到过会儿就能 看到自己亲自编的程序,就只能忍吧 。当看到模块一个个运行后与预料中的 完全一样时,郁闷的心情立马被一种成就感替代。就想赶紧编完看看自己的杰 作。然而也会遇到自己解决不了的问题,就只能去求老师了。 这次最大的感受就是当你竭尽全力的干一件事时,就没有能挡住你的困难。

七、参考文献 C 语言课本。

八、附录:源代码 #include<stdio.h> #include<string.h> #define MAX 100 char filename[20]; /*文件名*/ FILE *fp; int n; /*当前该厂人数*/ struct date /*时间结构体*/ { int year; int mouth; int day; }; struct person /*员工信息结构体*/ { char name[10]; /*姓名*/ int age; /*年龄*/ char job[10]; /*工作*/ char sex[10]; /*性别*/ char address[20]; /*地址*/ char phone[10]; /*电话*/ struct date in_time; /*入厂时间*/ }t,worker[MAX]; /*录入模块*/ void input() {int i; clrscr(); printf("\n\n 请输入文件名\n"); scanf("%s",filename); printf("开始输入员工的信息\n"); printf("\n 请输入现有员工人数\n"); scanf("%d",&n); if((fp=fopen(filename,"w"))==NULL) { printf("不能建立!\n"); exit(); } for(i=0;i<n;i++) { printf("第%d 个人的信息:\n",i+1); printf("姓名\n"); scanf("%s",worker[i].name); printf("年龄\n"); scanf("%d",&worker[i].age); printf("工作\n"); scanf("%s",worker[i].job); printf("性别\n"); scanf("%s",worker[i].sex); printf("地址\n"); scanf("%s",worker[i].address); printf("电话\n"); scanf("%s",worker[i].phone); printf("入厂年\n"); scanf("%d",&worker[i].in_time.year); printf("入厂月\n"); scanf("%d",&worker[i].in_time.mouth); printf("入厂日\n"); scanf("%d",&worker[i].in_time.day); } printf("录入完毕,按任意键返回主菜单\n"); getch(); for(i=0;i<n;i++) fprintf(fp,"%s %d %s %s %s %s %d-%d-%d\n",worker[i].name,worker[i].age,w orker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker [i].in_time.mouth,worker[i].in_time.day); fclose(fp); } /*输出模块*/ void output() { int i; if((fp=fopen(filename,"r"))==NULL) { printf(" 暂时未有任何信息,请按任意键返回主菜单进行信息录入\n"); getch(); exit(); } clrscr(); printf(" 该厂的员工信息:\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); for(i=0;i<n;i++) { fscanf(fp,"%s %d %s %s %s %s %d-%d-%d",worker[i].name,&worker[i].age,worker[i].j ob,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.year,&worker[i].in _time.mouth,&worker[i].in_time.day); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } fclose(fp); printf(" 输出完毕,按任意键返回主菜单\n"); getch(); } /*保存模块*/ void save() {int i; if((fp=fopen(filename,"w"))==NULL) { printf("\n 不能打开该文件!"); exit(); } for(i=0;i<n;i++)/*打开文件*/fprintf(fp,"%s %d %s %s %s %s %d-%d-%d\n",worker[i].name,worker[i].age,w orker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker [i].in_time.mouth,worker[i].in_time.day); fclose(fp); } /*读取信息*/ void read_message() { int i; printf("输入文件名\n"); scanf("%s",filename); printf("\n 请输入现有员工人数\n"); scanf("%d",&n); if((fp=fopen(filename,"r"))==NULL) { printf(" 暂时未有任何信息,请按任意键返回主菜单进行信息录入\n"); getch(); } for(i=0;i<n;i++) fscanf(fp,"%s %d %s %s %s %s %d-%d-%d",worker[i].name,&worker[i].age,worker[i].job ,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.year,&worker[i].in_ti me.mouth,&worker[i].in_time.day); fclose(fp); } /*修改模块*/ void modify() { int i,flag,choice; char ch,namekey[10]; flag=0; clrscr(); printf(" 开始修改\n"); do { printf("请输入要修改的员工姓名\n"); scanf("%s",namekey); for(i=0;i<n;i++) { if(strcmp(worker[i].name,namekey)==0) { printf("是否修改此人(y/n)\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); getchar(); /*接收回车*/ ch=getchar(); if(ch=='y') { printf(" ****您要修改那一项?***\n\n"); printf(" ***1,姓名***\n\n"); printf(" ***2,年龄***\n\n"); printf(" ***3,工作***\n\n"); printf(" ***4,性别***\n\n"); printf(" ***5,地址***\n\n"); printf(" ***6,电话***\n\n"); printf(" ***7,入厂年***\n\n"); printf(" ***8,入厂月***\n\n"); printf(" ***9,入厂日***\n\n"); printf(" 请选择(1-9)\n"); scanf("%d",&choice); switch(choice) { case 1: printf("输入修改后的姓名\n"); scanf("%s",worker[i].name); break; case 2: printf("输入修改后的年龄\n"); scanf("%d",&worker[i].age); break; case 3: printf("输入修改后的工作\n"); scanf("%s",worker[i].job); break; case 4: printf("输入修改后的性别\n"); scanf("%s",worker[i].sex); break; case 5: printf("输入修改后的地址\n"); scanf("%s",worker[i].address); break; case 6: printf("输入修改后的电话\n"); scanf("%s",worker[i].phone); break; case 7: printf("输入修改后的入厂年\n"); scanf("%d",&worker[i].in_time.year); break; case 8: printf("输入修改后的入厂月\n"); scanf("%d",&worker[i].in_time.mouth); break; case 9: printf("输入修改后的入厂日\n"); scanf("%d",&worker[i].in_time.day); break; } printf("修改后的信息\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } else break; } else if(i==n) printf("此人不存在\n"); } printf("\n 是否继续输入(y/n)\n"); getchar(); /*接收回车*/ ch=getchar(); if(ch=='y') { printf("继续\n"); flag=1; } else flag=0; }while(flag==1); printf("修改完毕,按任意键返回主菜单\n") ; getch(); } /*添加模块*/ void add() { int i,flag=0; char ch; clrscr(); printf("\n 开始添加新员工\n"); printf(" *----------------------------------*\n\n"); do { i=n; printf("\n 请输入添加职工的信息 ( 姓名 , 年龄 , 工作 , 性别 , 地址 , 电话 , 入厂时 间)\n"); printf("姓名\n"); scanf("%s",worker[i].name); printf("年龄\n"); scanf("%d", &worker[i].age); printf("工作\n"); scanf("%s",worker[i].job); printf(" 性别\n"); scanf("%s",worker[i].sex); printf("地址\n"); scanf("%s",worker[i].address); printf("电话\n"); scanf(" %s",worker[i].phone); printf("入厂年\n"); scanf("%d",&worker[i].in_time.year); printf("入厂月\n"); scanf("%d",&worker[i].in_time.mouth); printf("入厂日\n"); scanf("%d",&worker[i].in_time.day); n++; printf("\n 添加成功!是否继续输入(y/n)\n"); getchar(); /*接收回车*/ ch=getchar(); if(ch=='y') { printf("继续\n"); flag=1; } else flag=0; }while(flag==1); printf("添加完毕,按任意键返回主菜单\n") ; getch(); } /*删除模块*/ void del() { int i,flag; char ch,namekey[10]; flag=0; clrscr(); printf("开始删除\n"); do { printf("请输入要删除员工的名字\n"); scanf("%s",namekey); for(i=0;i<n;i++) if(strcmp(worker[i].name,namekey)==0) /*查找此人*/ { printf("是否删除此人(y/n)\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); getchar(); /*接收回车*/ ch=getchar(); if(ch=='y') { for(;i<n;i++) worker[i]=worker[i+1]; n--; } else break; } else if(i==n) printf("此人不存在\n"); printf("\n 是否继续输入(y/n)\n"); getchar(); /*接收回车*/ ch=getchar(); if(ch=='y') { printf("继续\n"); flag=1; } else flag=0; }while(flag==1); printf("操作完毕,按任意键返回主菜单\n") ; getch(); } /*更新模块*/ void renew() { int i; do {clrscr(); printf("\n\n\n ****更新员工信息****\n\n"); printf(" 按 1,添加员工信息\n\n"); printf(" 按 2,删除员工信息\n\n"); printf(" 按 3,修改员工信息\n\n"); printf(" 按 0,返回主菜单\n"); printf(" 请选择(0-3)\n"); scanf("%d",&i); switch(i) { case 1: add(); break; case 2: del(); break; case 3: modify(); break; case 0: break; } }while(i!=0); save(); } /*按姓名查找*/ void name_cha() { int i,j; char namekey[10]; j=0; clrscr(); printf(" 输入要查询的员工姓名\n"); scanf("%s",namekey); for(i=0;i<n;i++) if(strcmp(worker[i].name,namekey)==0) /*查找此人*/ { printf("---------员工信息------\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } else j++; if(j==n) printf("此人不存在\n"); printf("按任意键返回主菜单\n"); getch(); } /*按年龄查找*/ void age_cha() { int i,j; int agekey; j=0; clrscr(); printf(" 输入要查询员工的年龄\n"); scanf("%d",&agekey); for(i=0;i<n;i++) if(worker[i].age==agekey) { printf("-------员工信息------\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } else j++; if(j==n) printf("此人不存在\n"); printf("按任意键返回主菜单\n"); getch(); } /*按工作查找*/ void job_cha() { int i,j; char jobkey[10]; j=0; clrscr(); printf("输入要查询的员工职务\n"); scanf("%s",jobkey); for(i=0;i<n;i++) if(strcmp(worker[i].job,jobkey)==0) { printf("-------员工信息------\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } else j++; if(j==n) printf("此人不存在\n"); printf("按任意键返回主菜单\n"); getch(); } /*查询模块*/ void inquire() { int i; do { clrscr(); printf("\n\n\n ****查询员工信息*****\n\n"); printf(" ****1,按姓名查询*****\n\n"); printf(" ****2,按年龄查询*****\n\n"); printf(" ****3,按工作查询*****\n\n"); printf(" ****0,返回主菜单\n"); printf(" 请选择(0-3)\n"); scanf("%d",&i); switch(i) { case 1: name_cha();break; case 2: age_cha(); break; case 3: job_cha();break; case 0: break; } }while(i!=0); } /*排列模块*/ void line() { int i,j; clrscr(); printf("-------按年龄排序-------\n\n"); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(worker[i].age>worker[j].age) { t=worker[i]; worker[i]=worker[j]; worker[j]=t; } printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); for(i=0;i<n;i++) printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); printf("按任意键返回主菜单\n"); getch(); } /*按年龄统计*/ void count_age() { int i,j; int agekey; j=0; clrscr(); printf(" 输入要统计员工的年龄\n"); scanf("%d",&agekey); for(i=0;i<n;i++) if(worker[i].age==agekey) { printf("-------员工信息------\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } else j++; if(j==n) printf("暂无该年龄段员工\n"); printf("按任意键返回主菜单\n"); getch(); } /*按职务统计*/ void count_job() { int i,j; char jobkey[10]; j=0; clrscr(); printf("输入要统计的员工职务\n"); scanf("%s",jobkey); for(i=0;i<n;i++) if(strcmp(worker[i].job,jobkey)==0) { printf("-------员工信息------\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } else j++; if(j==n) printf("暂无该职务或该职务暂时无人\n"); printf("按任意键返回主菜单\n"); getch(); } /*按性别统计*/ void count_sex() { int i,j; char sexkey[10]; j=0; clrscr(); printf("输入要统计的员工性别\n"); scanf("%s",sexkey); for(i=0;i<n;i++) if(strcmp(worker[i].sex,sexkey)==0) { printf("-------员工信息------\n"); printf("姓名\t 年龄\t 工作\t 性别\t 地址\t 电话\t 入厂时间 \n"); printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d \n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].p hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day); } else j++; if(j==n) printf("暂无该性别员工\n"); printf("按任意键返回主菜单\n"); getch(); } /*统计模块*/ void count() { int i; do { clrscr(); printf("\n\n\n ****统计员工信息****\n\n"); printf(" 按 1,统计某年龄职工\n\n"); printf(" 按 2,统计某职务员工\n\n"); printf(" 按 3,统计某性别职工\n\n"); printf(" 按 0,返回主菜单\n\n"); printf(" 请选择(0-3):\n"); scanf("%d",&i); switch(i) { case 1: count_age(); break; case 2: count_job(); break; case 3: count_sex(); break; case 0: break; } }while(i!=0); } /*主函数*/ main() { int choice; read_message(); do { clrscr(); printf("\n\n *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*\n"); printf(" #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n"); printf(" * *\n"); printf(" #----------------欢迎进入王氏企业员工管理系统-----------------#\n"); printf(" * *\n"); printf(" #----------------------按 1,录入员工信息----------------------#\n"); printf(" * *\n"); printf(" #----------------------按 2,更新员工信息----------------------#\n"); printf(" * *\n"); printf(" #----------------------按 3,查询员工信息----------------------#\n"); printf(" * *\n"); printf(" #----------------------按 4,排列员工信息----------------------#\n"); printf(" * *\n"); printf(" #----------------------按 5,统计员工信息----------------------#\n"); printf(" * *\n"); printf(" #----------------------按 6,输出员工信息----------------------#\n"); printf(" * *\n"); printf(" #-----------------------按 0,退出系统-------------------------#\n"); printf(" * *\n"); printf(" #*#*#*#*#*#*# 制作者:王增 QQ : 815604901 *#*#*#*#\n"); printf(" #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n"); scanf("%d",&choice); switch(choice) { case 1: input(); break; case 2: renew(); break; case 3: inquire(); break; case 4: line(); break; case 5: count(); break; case 6: output(); break; case 0: break; } }while(choice!=0); save(); printf("现有员工数:%d\n",n); printf("\n 以上信息已保存!文件名为:%s\n",filename); }

本文已影响