echalious 发布留言 2008-7-16 17:43 明天进行学校的C语言答辩了,有问题想问大家,在线等题目是职工薪金系统 我编了一个程序~~可是点查找的时侯 职工列表总是闪一下 就没了 不知道怎么回事 代码入下,请大家看下,谢谢各位了 #include /*标准输入输出函数库*/ #include /*标准库函数*/ #include /*字符串函数*/ #define HEADER1 "------职工薪资管理系统--------- \n" #define HEADER2 "| 职工号| 姓名 |基本工资| \n" #define HEADER3 "|--------|-----------|--------| \n" #define FORMAT "|%8s|%10s |%8.2f| \n" #define DATA tp.name,tp; /*职工编号*/ char name[15]; /*姓名*/ float jbgz; /*基本工资*/ }ZGGZ; void menu() /*主菜单*/ { system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/ printf(" 职工薪酬系统 \n"); printf("********************菜单********************\n"); printf("* 1.查询记录 2.修改记录 *\n"); printf("* 3.删除记录 4.插入记录 *\n"); printf("* 5.排序记录 0.退出系统 *\n"); printf("********************************************\n"); } void printheader() /*格式化输出表头*/ { printf(HEADER1); printf(HEADER2); printf(HEADER3); }
void Display(ZGGZ tp[],int n) /*显示*/ { int i=0; printheader(); /*输出表格头部*/ while(i { printf(FORMAT,DATA); i++; printf(HEADER3); } } void Qur(ZGGZ tp[],int n) /*查找记录*/ { int i,flag=-1; char find[10]; /*保存待查找姓名字符串*/ printf("请输入要查的职工号:\n"); /*提示信息*/ scanf("%s",find); for(i=0;i { if(strcmp(find,tp.num,tp[flag].name,tp[flag].jbgz); printf(END); } else printf("没有找到符合要求的记录!"); }
void Modify(ZGGZ tp[],int n) /*修改记录*/ { int i,flag=-1; char find[10]; printf("请输入要修改的员工号:"); /*提示信息*/ scanf("%s",find); for(i=0;i { if(strcmp(find,tp.num,tp[flag].name,tp[flag].jbgz); /*如成立,输出职工姓名,基本工资*/ scanf("%s%f",tp[flag].name,&tp[flag].jbgz); /*输入待职工姓名,基本工资*/ printf(FORMAT,tp[flag].num,tp[flag].name,tp[flag].jbgz); /*输出待职工编号,职工姓名,基本工资*/ Display(tp,n); } else printf("没有找到符合要求的记录!\n"); } void Del(ZGGZ tp[],int n) /*删除记录*/ { int i,flag=-1; char find[10]; /*定义原有记录*/ char newnum[10]; /*定义要删除记录的编号*/ Display(tp,n); printf("请输入要删除的职工号:\n"); /*提示信息*/ scanf("%s",find); for(i=0;i { if(strcmp(find,tp.num,tp.name,tp.jbgz=tp,int n) /*插入记录*/ { int i,flag=-1; char newnum[10];/**/ char find[10]; Display(tp,n); printf("请输入要插入的职工号的前一个号码:\n"); /*提示信息*/ scanf("%s",find); for(i=0;i { if(strcmp(find,tp.num,tp.name,tp.jbgz=tp.num,tp[flag+1].name,&tp[flag+1].jbgz); /*输入待插入的职工编号,姓名,基本工资*/ Display(tp,n); /*显示*/ } void Sort(ZGGZ tp[],int n) /*以职工的基本工资数降序的顺序排序记录*/ { int i,j,k; ZGGZ t; /*临时变量做交换数据用*/ Display(tp,n); for(i=1;i { for(j=0,k=0;k if(tp[j].jbgz { t=tp[j];tp[j]=tp[j+1];tp[j+1]=t; /*进行交换*/ } } Display(tp,n); } void main() /******主函数开始*******/ { int select; /*保存选择结果变量*/ ZGGZ gz[N]={{"001","苏风",100},{"002","焉国臣",3001},{"003","魏泽楷",3002},{"004","张
震",3003},{"005","陈蕴成",3004},{"006" ,"李健",3005} }; /*定义ZGGZ结构体*/ while(1) { menu(); printf(" 请输入0~6的数字:\n"); /*显示提示信息*/ scanf("\n%d",&select); /*调用主菜单函数,返回值整数作开关语句的条件*/ switch(select) { case 0:printf("您即将退出本系统,欢迎使用!\n");exit(0); case 1:Qur(gz,N);break; /*查找记录*/ case 2:Modify(gz,N);break; /*修改记录*/ case 3:Del(gz,N);break; /*删除记录*/ case 4:Insert(gz,N);break; /*插入记录*/ case 5:Sort(gz,N);break; /*排序记录*/ default:printf("您的输入有误!");break; /*按键有误,停止*/ } } }ddd121 发布留言 2008-7-16 21:25 - -好长 手上正好没有编译软件 回头下一个 你看看是不是回车字符没有吸收掉之类的问题?xuanzilie 发布留言 2008-7-16 22:06 问题在menu函数里那个清屏的命令 把它注释掉再试试看xuanzilie 发布留言 2008-7-16 22:07 另外主函数写成int main()好点 规范
页: [1] 特别说明:如网页特效代码中有引用图片文件等,请自己下载到本地调试! |