求教!!一个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++写的都可以,刚来,没啥分不好意思啊~~