| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 401 人关注过本帖
标题:求教!!一个c语言程序的问题~~
取消只看楼主 加入收藏
青河隐
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2011-4-14
收藏
 问题点数:0 回复次数:1 
求教!!一个c语言程序的问题~~
一、    课程设计的基本要求
根据所学知识,编写指定题目的C语言程序,并规范地完成课程设计报告。通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用(时间函数、绘图函数以及文件的读写操作函数等);复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
具体要求如下:
1、    采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。学生也可根据自己对题目的理解增加新的功能模块(视情况可另外加分)。
2、    系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。
3、    程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)。
4、    编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等);
5、    写出规范的课程设计报告,具体要求见相关说明文档。
二、    课程设计的主要内容
编写一个工资管理系统程序,该程序输入职工工号和应发工资,由系统对其完成的实发工资实现计算。
其中职工信息包括职工号、姓名、性别、应发工资、税金、实发工资等(职工号不重复)。
功能要求及说明:
1)    系统以菜单方式工作
2)    职工基本信息和应发工资的录入功能(用文件保存)
从键盘输入数据,建立磁盘数据文件salary.txt
3)    职工工资信息浏览功能:
从磁盘数据文件读取所有职工工资信息并显示输出到屏幕上;
4)    计算应发工资和查询的功能:
计算公式为:  税金=应发工资*税率;
实发工资=应发工资-税金;
应发工资    税率
<1000         0
1000~4999    5%
5000以上    10%
下面是我写的一个程序,但总是有错,自己改不好,求教!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct staff
{
    char Number[10];
    char Name[10];
    char Sex[10];
    float Dpsalary,Rpsalary,Tax;
};FILE *fp;
 struct staff temp;
void Printf_face()
{
    printf("\n num name sex dps tax rps \n");
    printf("%s%s%s%f%f%f",temp.Number,temp.Name,temp.Sex,temp.Dpsalary,temp.Tax,temp.Rpsalary);
}
 void Increase()
{
    if(fp=fopen("salary","ab+")==NULL)
    {
        printf("cannot open the file!");
        exit(0);
    }
    printf("\n please input the information: \n");
    printf("\n num name sex dps \n");
    scanf("%s%s%s%f",temp.Number,temp.Name,temp.Sex,temp.Dpsalary);
    if(temp.Dpsalary<1000)    temp.Tax=0;
    if((temp.Dpsalary>=1000)&&(temp.Dpsalary<=5000))    temp.Tax=temp.Dpsalary*0.05;
    if(temp.Dpsalary>5000)    temp.Tax=temp.Dpsalary*0.1;
    temp.Rpsalary=temp.Dpsalary-temp.Tax;
    fwrite(&temp.sizeof(struct staff),1,fp);
    fclose(fp);
}
void PrintInformation()
{
    struct staff temp;
    if(fp=fopen("salary","rb")==NULL)
    {
        printf("cannot open the file!");
        exit(0);
    }
    while(fread(&temp.sizeof(struct staff),1,fp)==1)
        Printf_face();
    fclose(fp);
}
void NameSearch()
{
    char inputname[10];
    struct staff temp;
    printf("\n input name :");
    scanf("%s",inputname);
    if(fp=fopen("salary","rb")==NULL)
    {
        printf("cannot open the file!");
        exit(0);
    }
        while(fread(&temp.sizeof(struct staff),1,fp)==0)
    {if(strcmp(temp.Name,inputname)==0)
        Printf_face();
    }
        fclose(fp);
}
void NumberSearch()
{
    char inputnumber[10];
    struct staff temp;
    printf("\n input num :");
        scanf("%s",inputnumber);
        if(fp=fopen("salary","rb")==NULL)
    {
        printf("cannot open the file!");
        exit(0);
    }
        while(fread(&temp.sizeof(struct staff),1,fp)==0)
    {if(strcmp(temp.Number,inputnunber)==0)
        Printf_face();
    }
        fclose(fp);
}
int Search()
{int n;
    while(1)
    {
        printf("\n1.namesearch \n");
        printf("\n2.numsearch\n");
        printf("\n0.back            \n");
        scanf("%d",&n);
        switch(n)
        {
            case 1:NameSearch();break;
            case 2:NumberSearch();break;
            case 0:return 0;break;
        }
    }
}
void Menu()
{
    int i;
    while(1)
    {
        printf("1.input\n");
        printf("2.watch\n");
        printf("3.search\n");
        printf("0.back\n");
           scanf("%d",&i);
        switch(i)
        {
            case 1:Increase();break;
            case 2:PrintInformation();break;
            case3:Search();break;
            case 0:exit(0);break;
        }
    }
}
            int main()
        {
            Menu();
            return 0;
        }


先谢过!!!高手们可以给个自己写的。c或c++写的都可以,刚来,没啥分不好意思啊~~
搜索更多相关主题的帖子: c语言 C语言 时间 
2011-04-14 11:15
青河隐
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2011-4-14
收藏
得分:0 
唉~~没人回  只好自己慢慢编,好不容易写了个答题符合要求的,自己发,自己结吧~~~不给力啊~~~
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct staff
{
    int Number;
    char Name[10];
    char Sex[10];
    float Dpsalary,Rpsalary,Tax;
}  temp[100];
 FILE *fp;
 int sum=0;
 int find_name(char inputname[10])
 {
     int i;
     for(i-0;i<sum;i++)
     if((strcmp(temp[i].Name,inputname))==0)
     return i;
     return -1;
 }
 
int find_num(int number)
{
    int i;
    for(i=0;i<sum;i++)
    if(temp[i].Number==number)
    return i;
    return -1;
}
 void Increase()
{
    if((fp=fopen("c:\\salary.txt","a"))==NULL)
    {
        printf("cannot open the file!");
        exit(1);
    }
    printf("\n please input the information\n");
    printf("\n 职工号 姓名 性别 应发工资\n");
    scanf("%d%s%s%f",&temp[sum].Number,temp[sum].Name,temp[sum].Sex,&temp[sum].Dpsalary);
    if(find_num(temp[sum].Number)>=0)
    printf("该职工号已存在,请检查!\n");
    else
    {
        if(temp[sum].Dpsalary<1000)    temp[sum].Tax=0;
        if((temp[sum].Dpsalary>=1000)&&(temp[sum].Dpsalary<=5000))
        temp[sum].Tax=temp[sum].Dpsalary*0.05;
        if(temp[sum].Dpsalary>5000)
        temp[sum].Tax=temp[sum].Dpsalary*0.1;
        temp[sum].Rpsalary=temp[sum].Dpsalary-temp[sum].Tax;
        fprintf(fp,"%10s%10d%10s%15f",temp[sum].Name,temp[sum].Number,temp[sum].Sex,temp[sum].Dpsalary);
         sum++;
        fprintf(fp,"%15f%15f\n",temp[sum].Tax,temp[sum].Rpsalary);
     }
    fclose(fp);
      
}
void PrintInformation()
{
    char ch;
    if((fp=fopen("c:\\salary.txt","r"))==NULL)
    {
        printf("cannot open the file!");
        exit(1);
    }
    while((ch=fgetc(fp))!=EOF)
    fputc(ch,stdout);
        printf("\n");
    fclose(fp);
}
void NameSearch()
{
    char inputname[10];
    int i;
    printf("\n 请输入姓名 :");
    scanf("%s",inputname);
    i=find_name(inputname);
    if(i>=0)
         {
            printf("职工号:%d\n",temp[i].Number);
            printf("姓名:%s\n",temp[i].Name);
            printf("性别:%s\n",temp[i].Sex);
            printf("应发工资:%f\n",temp[i].Dpsalary);
            printf("税:%f\n",temp[i].Tax);
            printf("实发工资:%f\n",temp[i].Rpsalary);
            
            }
    else
    printf("name not found\n");
                fclose(fp);
}
void NumberSearch()
{
    int inputnumber,i;
    printf("\n 请输入职工号:");
    scanf("%d",&inputnumber);
    i=find_num(inputnumber);
    if(i>=0)
     {
            printf("职工号:%d\n",temp[i].Number);
            printf("姓名:%s\n",temp[i].Name);
            printf("性别:%s\n",temp[i].Sex);
            printf("应发工资:%f\n",temp[i].Dpsalary);
            printf("税:%f\n",temp[i].Tax);
            printf("实发工资:%f\n",temp[i].Rpsalary);
            fclose(fp);
      }
    else
    printf("number not found.\n");
        fclose(fp);
}
int Search()
{int n;
    while(1)
    {
        printf("\n1.按姓名查找 \n");
        printf("\n2.按职工号查找\n");
                printf("\n0.返回          \n");
        scanf("%d",&n);
        switch(n)
        {
            case 1:NameSearch();break;
            case 2:NumberSearch();break;
            case 0:return 0;break;
        }
    }
}
void Menu()
{
    char i;
    while(1)
    {
        printf("1.添加职工信息\n");
        printf("2.浏览职工信息\n");
        printf("3.查找职工信息\n");
        printf("0.返回\n");
           scanf("%d",&i);
        switch(i)
        {
            case 1:Increase();break;
            case 2:PrintInformation();break;
            case 3:Search();break;
            case 0:exit(0);break;
            default:
            break;
        }
    }
}
int main()
{
   
    Menu();
    return 0;
}
2011-04-24 11:20
快速回复:求教!!一个c语言程序的问题~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045115 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved