(各行流程管理)C语言人事管理(附加流程图)
- 格式:doc
- 大小:124.30 KB
- 文档页数:12
第一章C语言及程序设计概述本章要求:了解C语言的特点、C语言与其它高级语言相比有什么异同;了解C程序在PC机上的建立、编译和运行过程;了解C语言程序设计思想的基本篇;重点:①C语言的主要特点;②C语言在PC机上的运行过程及上机操作过程;③常用算法的应用难点:无一、C语言概述C语言是目前国际上在各种计算机运行较为广泛流行的一种高级语言.主要表现为:C语言:适合于作为系统描述语言—-可用来写系统软件。
具有高级语言的特点,又有低级语言(汇编语言)的特点。
C语言:是AT&T贝尔实验室的Dennis Ritchie在1972年发明的。
C语言:是在B语言的基础上发展起来的.(ALGOL 60)C语言:最早开始是用于UNIX操作系统。
(C语言和UNIX是相辅相成的)DBASE 、Microsoft Exel 、 Microsoft Word、PC—DOS等,则是用C语言加上若干汇编子程序编写的。
1983年:——制定的新标准,称为(美国国家标准化协会)ANSI C1987年:—-Turbo C1.0 (Borland) 1988年:TC 1.5(图形和文本窗口)1989年:——Turbo C2。
0 (DOS操作系统、查错、Tiny模式生成com文件)1991年:—-Turbo C++(3.0) 支持windows 3.X说明:Turbo C语言可以在程序的任何地方嵌入汇编代码,提高速度,可以直接使用存储器和寄存器。
二.C语言的特点1.语言简洁、紧凑、使用方便、灵活C语言:——共有32个关键字,9种控制语句;程序书写自由,主要用小写字母表示;2.运算符丰富C语言的运算符包含的范围很广泛,共有34种运算符;即:把括号、赋值、强制类型转换都作为运算符处理3.有丰富的数据类型整型、实型、字符型、数据类型、指针类型、结构体类型、共用体(联合)类型等。
实现复杂的数据结构(链表、树、栈、图)的运算。
4.具有结构化的功能,用函数作为程序模块,实现程序的模块化5.语法限制不太严格,程序设计自由度大.(放宽了语法检查)例:1)对数组下标越界不作检查,由程序编写者自己保证程序的正确;2)整型数据、字符型数据、逻辑型数据可以通用。
C谈话真用步调100例之阳早格格创做第一篇前提取普及真例1利用库函数编写基础隐现步调真例2变量属性真例3运算符取典型真例4闭于步调结构真例5隐现函数直线图真例6二分法选代的应用真例7多变的坐圆体真例8一维整型数组应用(1)真例9一维整型数组应用(2)真例10一维整型数组应用(3)真例11一维整型数组应用(4)真例12二维数组应用(1)——隐现杨辉三角真例13二维数组应用(2)——魔圆阵真例14字符数组应用(1)——逻辑推断真例15字符数组应用(2)——数据模拟真例16二维数组应用——字符比较真例17利用指针举止数据处理真例18指针取字符串真例19利用指针处理二维数组真例20一级指针真例21利用指针传播参数值真例22结构体的应用真例23链表的应用(1)真例24链表的应用(2)真例25链表的应用(3)真例26同用体的应用真例27罗列典型应用真例28位运算购例29义件加稀真例30文献的按记录随机读写第二篇图形取多媒介真例31改变笔墨背景致真例32及本颜色树坐真例33创造表格真例34创造百般的椭圆真例35劣好的透视图形真例36错位窗心真例37能移动的矩形真例38多变的弥补矩形真例39黄乌相间的矩形取圆真例40六叶图案真例41特殊图案真例42国际象棋棋盘真例43创造楼梯真例44使用线典型函数树坐多个汉字真例45乌色群面真例46饼图购例47产品合线图真例48直圆图真例49变大变色的拒形取国真例50多变的弥补多边形真例51流星球真例52小球动向碰碰购倒53多,直线真例54多变的圆取环真例55柔好的球体真例56疏通的小车真例57统计动画消得次数真例58运止的时钟真例59直降飞机真例60演绎“死命游戏”真例61猜猜瞅购例62艺术浑屏购倒63创造火焰真例64动向画造256条分歧颜色的直线真例65黑绿蓝三本色渐变第三篇概括小步调真例66二个矩阵相乘真例67艺术钟真例68家庭财务管造小步调真例69用系统时间真止随机数真例70闪动的多彩圆真例71查看系统有无鼠标真例72圆形光盘取矩形真例73动向渐变图案真例74往返二天间的小车真例75飘扬的黑旗真例76隐现蓝天黑云图形真例77百叶窗第四篇估计机等第考查上机试题(二级)第五篇估计机等第考查上机试题(三级)部分过程图真例1真例2真例3真例5真例6真例7递归函数真例8真例9真例真例真例真例13真例真例真例真例真例printf("%5d",a[i]) a[i]!=0是 可printf("\n") i++真例19真例真例21真例真例真例真例真例真例真例进造变换隐现真86真例878889真例91真例93 真例94定义整型数组变量a[N1][N2],max,min,i,j,row1,row2,column1,column2, (*ap)[4]ap=a row1=row2=column1=column2=0for( i=0; i<N1;i++)for( j=0; j<N1;j++)任性输进字符串搁到二维数组中max=min=a[0][0]for( i=0; i<N1;i++)for( j=0; j<N1;j++)max< *(*(ap+i)+j)T Fmax= *(*(ap+i)+j) ; row1=i;column1=j;min> *(*(ap+i)+j)T Fmin> *(*(ap+i)+j) ;row2=j;column2=j挨印最大值战最小值及它们天圆的止取列真例95真例96真例真例97(2)真例98真例99。
1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2.修改颜色3.注册界面4. 信息保存至文件5.登录界面6.管理员录入信息7. 学生信息录入8.学生成绩录入9.学生课程表录入10.学生信息查询界面11学生信息查询12.学生成绩查询13.学生课表查询三、代码(一个cpp)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include <conio.h>#include"windows.h"#define student_num 1000 /*定义1000个学生*/#define teacher_num 5 /*定义5个老师(管理员)*/int is_my_student(struct student *p,int *size); /*声明返回第i+1个学生的函数*/ int is_my_teacher(struct teacher *p,int *size); /*声明返回第i+1个老师的函数*/ int length_student_name(char *p); /*声明验证用户名函数*/int length_student_password(char *p); /*声明验证密码长度函数*/int length_teacher_name(char *p); /*声明验证用户名函数*/int length_teacher_password(char *p); /*声明验证密码长度函数*/int show_menu_login(); /*声明登录菜单函数*/int show_menu_register(); /*声明注册菜单函数*/int show_teacher_select(); /*声明教师录入菜单函数*/int show_student_select(); /*声明学生查询菜单函数*/int student_register(struct student *ptr_student,int *size); /*声明学生注册函数*/ int teacher_register(struct teacher *ptr_teacher,int *size); /*声明老师注册函数*/ int vaild_student_name(char *p); /*声明验证用户名函数*/int vaild_student_password(char *p); /*声明验证密码函数*/int vaild_teacher_name(char *p); /*声明验证用户名函数*/int vaild_teacher_password(char *p); /*声明验证密码函数*/int vaild_two_password(char *p1,char *p2); /*声明验证两次密码是否相同函数*/ int yes_no_return(); /*声明选择是否返回上一层函数*/void load(); /*声明加载函数*/void register_(int *count1,int *count2); /*声明注册函数*/void display_student(struct student stu); /*声明显示学生信息函数*/void display_teacher(struct teacher tea); /*声明显示老师信息函数*/void student_file1(); /*将保存的学生的账号密码存入文件中*/ void student_file2(); /*将保存的学生的个人信息存入文件中*/ void student_file3(); /*将保存的学生的成绩存入文件中*/void teacher_file(); /*将保存的老师的账号密码存入文件中*/ void input_information(int count); /*声明输入学生信息函数*/void input_score_menu(int count); /*声明输入学生成绩函数*/void color(); /*声明选择窗体颜色函数*/void print_stu_information(int count_stu); /*声明输出账号为num的学生的信息函数*/void print_stu_score(int count_stu); /*声明输出账号为num的学生的成绩函数*/void show_menu(); /*声明初始化界面函数*/void input(); /*声明输入函数*/void menu1(); /*声明教师录入课程表主菜单函数*/void menu2(); /*声明学生查询课程表主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/void add_score(int count); /*声明添加学生成绩函数*/void xiugai_score(int count); /*声明修改学生成绩函数*/void shanchu_score(int count); /*声明删除学生成绩函数*/void chaxun_score(int count); /*声明按要求查询学生成绩函数*/void paixu_score(int count); /*声明学生成绩排序函数*/void tongji_score(int count); /*声明学生成绩统计函数*/float chinese(int count); /*声明计算语文成绩最大值函数*/int chr(int count); /*声明计算语文成绩及格人数的函数*/ float english(int count); /*声明计算英语成绩最大值函数*/int ehr(int count); /*声明计算英语成绩及格人数的函数*/ float math(int count); /*声明计算数学成绩最大值函数*/int mhr(int count); /*声明计算数学成绩及格人数的函数*/ float computer(int count); /*声明计算计算机成绩最大值函数*/int thr(int count); /*声明计算计算机成绩及格人数的函数*/float PE(int count); /*声明计算体育成绩最大值函数*/int phr(int count); /*声明计算体育成绩及格人数的函数*/ float sum_score(int count); /*声明计算总分成绩最大值函数*/ void load_student(int a); /*声明启动学生函数*/void load_teacher(int a); /*声明启动老师函数*/struct student /*学生结构体*/{/*个人信息*/int student_id; /*账号*/char student_name[20]; /*姓名*/char password[16]; /*密码*/int age; /*年龄*/char qq[12]; /*QQ号*/char tel[12]; /*电话*/int grade; /*年级*//*各科成绩*/float chinese; /*语文分数*/float english; /*英语分数*/float math; /*数学分数*/float computer; /*计算机分数*/float PE; /*体育分数*/float sum; /*总分*//*课程表*/char time[10]; /*时间*/char lessonname[20]; /*课程名*/char teacher[20]; /*授课老师*/char classroom[10]; /*教室*/char hours[10]; /*第几节课*/int weeks; /*周时*/};struct teacher /*老师结构体*/ {int teacher_id; /*账号*/char teacher_name[20]; /*姓名*/char password[16]; /*密码*/};struct student our_student[student_num]; struct teacher our_teacher[teacher_num];void main() /*主函数*/{system("color f0"); /*初始化背景颜色*/show_menu(); /*制作人信息简介*/load();}void load() /*启动函数*/{int flag=1; /*控制循环结束的变量*/int a=0,b=0; /*记录已注册的学生的人数a为学生个数b为老师个数*/int *count1=&a,*count2=&b; /*指向学生人数和老师人数的指针*/int correct_student,correct_teacher;color();register_(count1,count2); /*注册学生和老师的帐号*/student_file1();teacher_file();while(flag){switch(show_menu_login()) /*显示登录菜单*/{case 1: /*选择1,进入学生登录*/if(correct_student=is_my_student(our_student,count1)){printf("\n ◆学生登录成功!\n");display_student(our_student[correct_student-1]);printf("\n");printf(" ");system("pause");load_student(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,进入老师登录,即管理员登录*/ if(correct_teacher=is_my_teacher(our_teacher,count2)){printf("\n ◆管理员登录成功!\n");display_teacher(our_teacher[correct_teacher-1]);printf("\n");printf(" ");system("pause");load_teacher(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,退出登录*/system("cls");flag=0;break;default:printf("请正确输入1-3:");system("cls");}}}void load_student(int a) /*启动学生函数*/{int flag=1;system("cls");while(flag){switch(show_student_select()){case 1: /*选择1,学生信息查询*/system("cls");print_stu_information(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩查询*/system("cls");print_stu_score(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表查询*/menu2();printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出查询界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}void load_teacher(int a) /*启动老师函数*/{int flag=1;system("cls");while(flag){switch(show_teacher_select()){case 1: /*选择1,学生信息录入*/input_information(a);system("cls");student_file2();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩录入*/input_score_menu(a);system("cls");student_file3();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表录入*/menu1();printf(" 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出管理界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}int length_student_name(char *p) /*验证用户名是否合法*/ {int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_student_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_student_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_student_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/{if(strcmp(p1,p2)==0)return 1;elsereturn 0;}int student_register(struct student *ptr_student,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==student_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册学生姓名:");fflush(stdin);gets(ptr_student[*size].student_name);if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_name(ptr_student[*size].student_name))){printf(" ◆您输入的姓名无效,学生姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_student[*size].password,password);if(!(length_student_password(ptr_student[*size].password)&&vaild_student_pa ssword(ptr_student[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号!!!",ptr_student[*size].student_id=20150000+*size);return 1;}int is_my_student(struct student *p,int *size) /*如果登录成功则返回第i+1个学生的信息,否则返回0*/{int i;int zhanghao;char mima[18];system("cls");printf("\n\n");printf(" ★请输入您的账号:");scanf("%d",&zhanghao);fflush(stdin);printf("\n");printf(" ★请输入您的密码:");gets(mima);for(i=0;i<*size;i++){if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0)) return i+1;}return 0;}void display_student(struct student stu) /*显示学生信息*/{printf("\n ★您的账号是:%d\n",stu.student_id);}int length_teacher_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_teacher_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_teacher_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_teacher_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==teacher_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册教师姓名:");fflush(stdin);gets(ptr_teacher[*size].teacher_name);if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_na me(ptr_teacher[*size].teacher_name))){printf(" ◆您输入的姓名无效,教师姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");printf("\n");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_teacher[*size].password,password);if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_password(ptr_teacher[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号。
c语言程序设计流程图详解C语言程序设计流程图详解一、引言C语言是一种功能强大的高级程序设计语言,被广泛应用于各个领域。
为了编写出高效、可读性强的程序,程序设计师们往往需要使用流程图来展示程序的设计思路和执行过程。
本文将详细介绍C语言程序设计中流程图的概念、使用方法以及其在程序设计中的重要性。
二、流程图的概念流程图是一种图解工具,用于展示程序的执行过程。
它使用不同的图形符号和线条来表示程序中的各个步骤和处理逻辑,帮助程序设计师更好地理解和实现程序。
通过流程图,我们可以清晰地了解程序的输入、输出、循环和判断等关键部分。
在C语言程序设计中,流程图被广泛用于设计和调试程序。
三、流程图的符号1. 开始/结束符号(圆圈)流程图的开始和结束标志,表示程序的起始和终止。
2. 输入/输出符号(平行四边形)用于表示程序的输入和输出。
3. 处理过程符号(矩形框)表示程序中的各个处理步骤,如变量的赋值、循环和条件判断等。
4. 判断符号(菱形)用于表示程序中的条件判断,根据不同的条件执行不同的处理过程。
5. 连线符号(箭头线)用于连接各个符号,表示程序执行的顺序。
四、流程图的绘制方法1. 确定程序的输入和输出在绘制流程图之前,首先要明确程序的输入和输出是什么,这将有助于后续的流程设计。
2. 划分主要的处理步骤将程序的主要处理逻辑进行划分,可以采用顺序、循环、判断等方式组织程序的执行过程。
3. 绘制流程图根据划分的处理步骤,使用流程图的符号来绘制具体的流程图。
确保流程图的编排合理、清晰易读。
4. 检查和调试流程图完成流程图的绘制后,应仔细检查和调试流程图,确保程序的逻辑正确。
五、流程图在C语言程序设计中的应用1. 顺序结构顺序结构是C语言程序设计中最基本的流程结构,即按照代码的编写顺序依次执行。
通过流程图可以清晰展示程序逻辑的执行流程。
2. 循环结构循环结构在程序设计中经常出现,用于重复执行相同的代码块。
通过流程图可以直观地表示循环的终止条件以及每一次循环的处理过程。
第二章: 改变程序流程算法和流程图2.1.1算法计算机语言只是一种工具。
光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法。
有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作。
因此,设计算法是程序设计的核心。
并非只有“计算”的问题才有算法。
广义地说,为解决一个问题而采取的方法和步骤,称为“算法”。
不要把“计算方法”(computational method)和“算法”(algorithm)这两个词混淆。
前者指的是求数值解的近似方法,后者是指解决问题的一步一步的过程。
在解一个数值计算问题时,除了要选择合适的计算方法外,还要根据这个计算方法写出如何让计算机一步一步执行以求解的算法。
对于计算机外行来说,他们可以只使用别人已设计好的现成算法,只需根据算法的要求给以必要的输入,就能得到输出的结果。
对他们来说,算法如同一个“黑箱子”一样,他们可以不了解“黑箱子”中的结构,只是从外部特性上了解算法的作用,即可方便地使用算法。
但对于程序设计人员来说,必须会设计算法,并且根据算法编写程序。
对同一个问题,可以有不同的解题方法和步骤。
例如,求1+2+3+…+100,可以先进行1+2,再加3,再加4,一直加到100,也可采取100+(1+99)+(2+98)+…+(49+51)+50=100+50+49×100=5050。
还可以有其它的方法。
当然,方法有优劣之分。
有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。
一般说,希望采用方法简单,运算步骤少的方法。
因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。
一个计算问题的解决过程通常包含下面几步:确立所需解决的问题以及最后应达到的要求。
必须保证在任务一开始就对它有详细分析问题构造模型。
在得到一个基本的物理模型后,用数学语言描述它,例如列出选择计算方法。
如定积分求值问题,可以用矩形法、梯形法或辛普生法等不同的方法”,就是研究用什么方法最有效、最近似地实现各种数值计算的,换句话说,计算方法是研究数值计算的近似方法的。
单元一(8)程序设计方法及流程图绘制一、流程图简介1.流程图的基本概念流程图:使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。
流程图是流经一个系统的信息流、观点流或部件流的图形代表。
在企业中,流程图主要用来说明某一过程。
这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。
例如,一张流程图能够成为解释某个零件的制造工序,甚至组织决策制定程序的方式之一。
这些过程的各个阶段均用图形块表示,不同图形块之间以箭头相连,代表它们在系统内的流动方向。
下一步何去何从,要取决于上一步的结果,典型做法是用“是”或“否”的逻辑分支加以判断。
流程图是揭示和掌握封闭系统运动状况的有效方式。
作为诊断工具,它能够辅助决策制定,让管理者清楚地知道,问题可能出在什么地方,从而确定出可供选择的行动方案。
2.常用流程图的种类●数据流程图数据流程图表示求解某一问题的数据通路.同时规定了处理的主要阶段和所用的各种数据媒体。
数据流程图包括:⏹指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体;⏹指明对数据执行的处理的处理符号,这些符号也可指明该处理所用到的机器功能;⏹指明几个处理和(或)数据媒体之间的数据流的流线符号;⏹便于读.写数据流程图的特殊符号.在处理符号的前后都应是数据符号.数据流程图以数据符号开始和结束(除9.4规定的特殊符号外)●程序流程图程序流程图表示程序中的操作顺序.程序流程图包括:⏹指明实际处理操作的处理符号,它包括根据逻辑条件确定要执行的路径的符号;⏹指明控制流的流线符号;⏹便于读.写程序流程图的特殊符号.●系统流程图系统流程图表示系统的操作控制和数据流.。
系统流程图包括:⏹指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体;⏹定义要执行的逻辑路径以及指明对数据执行的操作的处理符号;⏹指明各处理和(或)数据媒体间数据流的流线符号;⏹便于读.写系统流程图的特殊符号.●程序网络图程序网络图表示程序激活路径和程序与相关数据的相互作用。
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第29-30 课时
《C语言程序设计》教案
第31-32 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第37-38 课时
《C语言程序设计》教案
第39-40 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案。
人事考勤管理系统c++课程设计文档一、引言随着信息化的不断深入,各行各业都开始了信息化的转型,越来越多的公司开始使用人事考勤管理系统来有效管理员工,而C++作为一门强大的编程语言,也成为了人事考勤管理系统的重要开发工具。
本文档将介绍一个使用C++开发的人事考勤管理系统,为开发人员和用户提供方便的使用体验。
二、背景人事考勤管理系统是一种管理员工考勤、排班、薪酬等信息的管理工具,通过该系统可以轻松实现员工考勤信息的记录、查询、统计等功能。
随着各行各业日益复杂的员工管理情况,人事考勤管理系统已经成为了企业管理中不可或缺的一部分。
C++作为一种高效、安全、稳定的编程语言,其为人事考勤管理系统的开发提供了非常好的支持。
三、系统架构人事考勤管理系统主要由以下几个模块构成:- 登录模块:提供用户认证、身份验证和权限管理等功能;- 考勤模块:记录员工的考勤信息,包括签到、签退等;- 排班模块:制定员工的排班计划,根据需求自动排班;- 统计模块:统计员工的考勤数据,生成各种报表;- 数据管理模块:管理系统的所有数据,包括员工基本信息、考勤信息、排班信息等。
四、技术实现人事考勤管理系统采用C++语言开发,其主要技术实现如下:- 采用面向对象编程(OOP)思想设计系统架构,将系统的功能模块划分为各个类,使代码结构更清晰、易于维护和扩展;- 采用文件存储模式来管理数据,所有员工的基本信息、考勤信息、排班信息等都保存在数据文件中;- 利用C++标准模板库(STL)实现数据结构,如vector、string等,提高代码的效率和可读性;- 界面方面,采用基于控制台窗口的交互方式,提供友好的使用体验。
五、系统流程1. 登录模块:用户在系统登录窗口输入账号和密码,系统进行身份验证,如果验证成功,则跳转到主菜单页面,否则提示用户验证失败。
2. 功能模块:- 考勤模块:员工在上班和下班时,从考勤终端打卡,自动记录考勤信息,并将信息写入数据文件。
c语言流程图C语言流程图是一种图形化的表示程序运行流程的工具,可以帮助程序员更直观地了解程序的执行过程。
下面是一个简单的C语言流程图示例,总字数为700字。
```plaintext开始:程序开始执行输入:从用户处获取输入信息处理:- 对输入信息进行处理(计算、逻辑判断等)- 判断输入信息是否合法- 如果合法则进入下一步,否则返回输入步骤重新获取输入信息输出:将处理结果输出给用户结束:程序执行结束开始 --> 输入输入 --> 处理处理:- 判断输入信息是否合法- 合法 --> 输出- 不合法 --> 返回输入步骤重新获取输入信息输出 --> 结束```在上述示例中,程序首先从用户处获取输入信息,然后对输入信息进行处理,处理过程包括计算、逻辑判断等操作。
在处理过程中,程序会判断输入信息是否合法,如果合法则将处理结果输出给用户,如果不合法则返回输入步骤重新获取输入信息。
最后,程序执行结束。
这个示例是一个非常简单的流程图,只包含了基本的输入、处理、输出和结束步骤。
实际上,一个完整的C语言程序可能包含更多的步骤和分支、循环等结构。
流程图可以帮助程序员清晰地展示程序的执行流程,有助于编写和调试复杂的程序。
同时,流程图也可以作为程序文档的一部分,方便其他人理解和使用代码。
需要注意的是,流程图仅展示了程序执行的逻辑流程,不包含具体的代码实现。
在实际编写程序时,程序员需要将流程图中的每个步骤转化为具体的C语言代码实现。
以上是一个简单的C语言流程图示例,通过这个示例可以初步了解流程图的作用和基本结构。
在实际编写程序时,可以根据程序的复杂程度和需求来绘制更加详细和完整的流程图。
电子科技大学成都学院程序综合设计论文论文题目学生信息管理系统学生姓名魏国学号1340840625专业机械设计制造及其自动化系(分院)电子工程系授课教师杜娥2015年12月制摘要随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活不可或缺的辅助工具。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已成为人们深刻认识,它已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
现在由于学校规模进一步扩大,学生人数逐渐上升,在学校的学生信息管理中,虽然已经存在许多学生信息管理系统,但由于学校之间的管理差异很信息的不同,各个学校的学生信息管理的要求不一致,这样我们需要根据具体学习的具体要求来开发学生信息管理系统以方便学生管理。
本系统主要对学生各种信息进行处理。
本系统采用C语言编写,设计从实用性出发,设计开发出一个操作简单且符合实际需要的学生信息管理系统。
本文设计出一个可以添加、修改、查询、删除、统计的学生信息管理系统;最后,通过测试分析,力求将学到的只是在学生信息管理系统的得到全面运用,并使系统在实际的操作中能按照设计的要求安全有效的正确运行。
学生信息管理系统是为了实现学校对学生信息管理的系统化、规范化和自动化,从而提高学校管理效率而设计的。
它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成学生信息管理提供了强有力的工具和管理手段。
学生信息管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了学生信息管理的要求。
学生信息管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了学生信息管理计算机化。
关键字:学生信息,管理系统,数据库,C语言编写第一章系统功能和组成模块1.1系统功能学生信息管理系统存放了每个学生的学号,姓名,性别,年龄,出生年月,家庭住址,政治面貌等信息的数据库。
C语言课程设计学生成绩管理系统流程图本文介绍了一个基于C语言的学生成绩管理系统的流程图设计。
该系统可以帮助学校管理学生的成绩信息,包括录入学生成绩、查询学生信息、统计学生成绩等功能。
1. 系统流程图概览graph LRA[开始] --> B(登录系统)B --> C{登录是否成功}C -- 是 --> D(显示菜单)C -- 否 --> BD --> E[输入操作选项]E --> F{选择操作}F -- 1 --> G(录入学生成绩)F -- 2 --> H(查询学生信息)F -- 3 --> I(统计学生成绩)F -- 4 --> J(显示菜单)F -- 5 --> K(退出系统)G --> L[输入学生信息]L --> M[保存学生成绩]M --> N[继续操作]N --> GH --> O[输入学生学号]O --> P[查询学生信息]P --> NI --> Q[统计学生成绩]Q --> R[显示统计结果]R --> NJ --> DK --> S[结束]2. 系统流程图详解2.1. 开始系统开始运行,进入登录界面。
2.2. 登录系统用户输入登录信息,包括用户名和密码。
2.3. 用户登录验证系统对用户输入的用户名和密码进行验证,包括检查用户名是否存在和密码是否匹配等。
•如果登录验证成功,进入显示菜单页面。
•如果登录验证失败,返回登录系统页面,提示用户重新输入。
2.4. 显示菜单系统显示主功能菜单,供用户选择需要执行的操作。
2.5. 输入操作选项用户根据菜单提示,输入相应的操作选项。
2.6. 选择操作系统根据用户输入的操作选项,执行相应的操作。
•如果用户选择录入学生成绩,进入输入学生信息步骤。
•如果用户选择查询学生信息,进入输入学生学号步骤。
•如果用户选择统计学生成绩,进入统计学生成绩步骤。
c 语言程序设计流程图详解介绍常见的流程图符号及流程图的例子。
本章例 1 - 1 的算法的流程图如图 1 - 2 所示。
本章例 1 - 2 的算法的流程图如图 1 - 3 所示。
在流程图中,判断框左边的流程线表示判断条件为真时的流程,右边的流程线表示条件为假时的流程,有时就在其左、右流程线的上方分别标注“真”、“假”或“T、”“F或”“Y、”“N”注“真”、“假”或“T、”“F或”“Y、”“N”另外还规定,流程线是从下往上或从右向左时,必须带箭头,除此以外,都不画箭头,流程线的走向总是从上向下或从左向右。
2. 算法的结构化描述早期的非结构化语言中都有go to 语句,它允许程序从一个地方直接跳转到另一个地方去。
执行这样做的好处是程序设计十分方便灵活,减少了人工复杂度,但其缺点也是十分突出的,一大堆跳转语句使得程序的流程十分复杂紊乱,难以看懂也难以验证程序的正确性,如果有错,排起错来更是十分困难。
这种转来转去的流程图所表达的混乱与复杂,正是软件危机中程序人员处境的一个生动写照。
而结构化程序设计,就是要把这团乱麻理清。
经过研究,人们发现,任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成,因此,我们构造一个算法的时候,也仅以这三种基本结构作为“建筑单元”,遵守三种基本结构的规范,基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部去。
正因为整个算法都是由三种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证,易于纠错,这种方法,就是结构化方法。
遵循这种方法的程序设计,就是结构化程序设计。
相应地,只要规定好三种基本结构的流程图的画法,就可以画出任何算法的流程图。
(1) 顺序结构顺序结构是简单的线性结构,各框按顺序执行。
其流程图的基本形态如图 1 - 4 所示,语句的执行顺序为:A→B→C。
(2) 选择(分支)结构这种结构是对某个给定条件进行判断,条件为真或假时分别执行不同的框的内容。
#include<stdio.h>#include<string.h>#define N 100typedef struct worker{char name[20];long number;int y,m,d;char zhicheng[20];char bumen[20];float salary;}Worker;void Display(){printf("\n\n\n\t\t***************职工管理系统*************\n\n");printf("\t\t\t0.退\t\t 出\n");printf("\t\t\t1.新\t\t 建\n");printf("\t\t\t2.显\t\t 示\n");printf("\t\t\t3.查\t\t 询\n");printf("\t\t\t4.删\t\t 除\n\n");}/*******1.新建**********/void Add( Worker w[],int n){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d: ",i+1);scanf("%s %ld %d %d %d %s %s %f",w[i].name,&w[i].number, &w[i].y,&w[i].m,&w[i].d,w[i].zhicheng,w[i].bumen,&w[i].salary);}}/*******2.显示**********/void Browse( Worker w[],int n ){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d:",i+1);printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);}}/*******3.1查询姓名**********/void SearchName( Worker w[],int n ){char name[20];int i;printf("\t\t\t输入要查询的名字:");scanf("%s",name);for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\t\t\t查无此人!");}/*******3.2查询工号**********/void SearchNumber( Worker w[],int n ){long number;int i,k=0;printf("\t\t\t输入要查询的工号:");scanf("%ld",&number);for( i = 0; i < n; i ++ ){if( w[i].number == number ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\n\t\t\t查无此人!");}/*******3.查询**********/void Search( Worker w[],int n ){int x;printf("\t\t\t选择查询方式(1.姓名/2.工号):");scanf("%d",&x);printf("\n");switch(x){case 1:SearchName(w,n);break;case 2:SearchNumber(w,n);break;}}/*******4.删除**********/void Delete( Worker w[],int n ){char name[20];int i,j;printf("\t\t\t输入要删除的名字:");scanf("%s",name);printf("\n");for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\t\t\t将删除以下信息:\n\n");printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("\t%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i]. m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);for( j = i;j<n-1;j++ ){w[j] = w[j+1];}printf("\t\t\t成功删除!\n\n");return;}}printf("\t\t\t查无此人!");}void Run( Worker w[],int n ){int choice;do{Display();printf("\t\t\t输入你的选择:");scanf("%d",&choice);printf("\n");switch( choice ){case 0:break;case 1:Add(w,n);break;case 2:Browse(w,n);break;case 3:Search(w,n);break;case 4:Delete(w,n);n--;break;}}while(choice);}void main(){int n;Worker w[N];printf("\t输入职员个数:");scanf("%d",&n);Run(w,n);}友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。
题目:某高校主要人员有:在职人员(行政人员,教师,一般员工),退休人员和临时工。
现在需要存储这些人员的人事档案信息,内容包括变好,姓名,性别,年龄,职务,职称,政治面貌,最高学历,任职时间,来院时间,人员类别。
其中人员编号唯一,不能重复。
(1)添加删除功能:能根据学院人事的变动情况,添加删除记录(2)查询功能:能根据编号和姓名进行查询(3)编辑功能(高级):根据查询对相应的记录进行修改并存储(4)统计功能:能根据多种参数进行人员的统计(在职人员,党员人数,女工人数,高学历高学历人员(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息。
(5)排序功能:按照年龄,来院时间进行排序。
(6)保存功能:能对输入的数据进行相应的存储。
程序代码:#include <stdio.h> /*根据实际存放位置修改此路径*//*初始化双链表*/void init(){First=(TEACHER *)malloc(sizeof(TEACHER)); /*为头结点申请空间*/Last=First; /*将尾指针指向头结点*/First->prior=Last; /*设置头结点的前驱指针*/Last->next=First; /*设置头结点的后继指针*/p=First; /*设置当前记录指针为头结点*/}/*创建教师信息循环双链表*/void create(){int unit,flag=0;float temp;TEACHER *info; /*新增结点*/init();for(;;){if(flag==1)break; /*标志为1,不再输入*/clrscr(); /*清屏*/printf("Please enter teacher infomation\n");printf("input @ end enter\n");info=(TEACHER *)malloc(sizeof(TEACHER));/*为新增结点申请空间*/ if(!info) /*没有空间出错处理*/{printf("\nout of memory");exit(0);}printf("No:"); /*开始提示输入*/scanf("%s",info->no);if(info->no[0]=='@')/*输入@结束输入*/{flag=1;break;}printf("Name:");scanf("%s",info->name);printf("Sex:");scanf("%s",info->sex);printf("Profess:");scanf("%s",info->profess);printf("Dept:");scanf("%s",info->dept);printf("Class:");scanf("%s",info->class);printf("Workload:");scanf("%f",&temp);info->workload=temp;if(strcmp(info->profess,"prof"))unit=25; /*教授*/if(strcmp(info->profess,"aprof"))unit=20;/*副教授*/if(strcmp(info->profess,"lect"))unit=15;/*讲师*/if(strcmp(info->profess,"ass"))unit=10;/*助教*/info->lessonf=unit*info->workload;/*根据职称计算代课费*/info->next=Last->next;/*新插入结点插在表末尾*/info->prior=Last; /*新结点的前驱为原来的尾结点*/Last->next=info; /*原来尾结点的后继为新结点*/Last=info; /*新的尾结点为新结点*/First->prior=Last;/*头结点的前驱为尾指针*/}return;}/*显示第一条记录*/void firstr(){if(First==Last)return;clear();p=First->next;print(p);}/*显示最后一条记录*/void lastr(){if(First==Last)return;clear();p=Last;print(p);}/*显示前一条记录*/void priorr(){if(First==Last)return;if(p->prior!=First)p=p->prior;elsep=Last;clear();print(p);}/*显示下一条记录*/void nextr(){if(First==Last)return;if(p==Last)p=First->next;elsep=p->next;clear();print(p);}/*从文件读数据*/void load(){TEACHER *p1;FILE *fp;if((fp=fopen("data.txt","rb"))==NULL){printf("can not open file\n");return;}while(First->next!=First) /*如果当前表不空,删除当前表*/ {p1=First->next;First->next=p1->next;free(p1);}free(First);First=(TEACHER*)malloc(sizeof(TEACHER)); /*创建头结点*/ if(!First){printf("out of memory!\n");return;}Last=First;First->prior=Last;Last->next=First;p=First;while(!feof(fp)) /*当文件不为空时读数据*/{p1=(TEACHER*)malloc(sizeof(TEACHER));if(!p1){printf("out of memory!\n");return;}if(1!=fread(p1,sizeof(TEACHER),1,fp))break; /*读数据*/p1->next=Last->next; /*将新读出的数据链在当前表尾*/ p1->prior=Last;Last->next=p1;Last=Last->next;First->prior=Last;}fclose(fp); /*关闭文件*/}/*保存数据到磁盘文件*/void save(){FILE *fp; /*定义指向文件的指针*/TEACHER *p1; /* 定义移动指针*/if((fp=fopen("data.txt","wb"))==NULL) /*为输出打开一个文本文件,如没有则建立*/{printf("can not open file\n"); /*如不能打开文件,显示提示信息,结束程序*/return; /*返回*/}p1=First; /*移动指针从头指针开始*/while(p1->next!=First) /*如p1不为空*/{fwrite(p1->next,sizeof(TEACHER),1,fp); /*写入一条记录*/p1=p1->next; /*指针后移,处理下一条记录*/}fclose(fp); /*关闭文件*/}/*删除记录*/void delete(){TEACHER *p1;if(First==Last)return;/*表为空*/if(p==First) /*p为头结点*/p=First->next;if(p==Last)/*p为尾结点*/Last=p->prior;p1=p; /*一般情况*/p=p->next;p1->prior->next=p1->next;p1->next->prior=p1->prior;free(p1);}/*输出记录*/void print(TEACHER *p){int x1=70,y1=100;char str[20];outtextxy(x1+110,y1+75, p->no);outtextxy(x1+360,y1+75,p->name);outtextxy(x1+110,y1+105,p->sex);outtextxy(x1+360,y1+105,p->profess);outtextxy(x1+110,y1+135,p->dept);outtextxy(x1+360,y1+135,p->class);sprintf(str,"%f",p->workload);outtextxy(x1+110,y1+165,str);sprintf(str,"%f",p->lessonf);outtextxy(x1+360,y1+165,str);}/*****清除界面显示信息******/void clear(){int x1=70,y1=100,m,n;for(m=0;m<4;m++)for(n=0;n<2;n++){setfillstyle(1,WHITE);/*白色覆盖原有信息*/bar(x1+n*250+100,y1+50+m*30+20,x1+n*250+200,y1+50+m*30+40); }}/*sort排序函数*/void sort(){TEACHER *p0,*p00,*p1,*p11,*templast;if(First->next==First||First->next->next==First)return;p00=First; /*作排好序表的表头和第一个结点*/p0=First->next;p1=p0->next;First->prior=p0;p0->next=First;templast=p0;while(p1!=First) /*当p1没有转回到表头时*/{p11=p1; /*将p11作为待插入结点*/p1=p1->next; /*p1指向下一个待排序结点*/p00=First; /*从头结点开始寻找插入位置*/p0=p00->next; /*p0是p00的后继*/while(p0!=First&&p11->workload>p0->workload){p00=p0;/*当新插入结点比当前表结点大时,指针后移*/p0=p0->next;}if( p0==First)/*如果p0移到了头结点*/{p11->next=p00->next;p11->prior=p00;p00->next=p11;p0->prior=p11;templast=p11;}else /*新插入结点介于p00和p0之间*/ {p11->next=p0;p11->prior=p00;p0->prior=p11;p00->next=p11;}}Last=templast; /*设置尾指针*/p=First; /*设置当前记录指针*/}流程图:。