C语言课程设计-工资管理系统

前言

这个程序是博主在大学第一个学期学完C语言后的课程设计,那时刚从一个小白变得会一点点编程,老师就布置了这个课程设计,当时一脸懵这是啥?我在哪?我要干什么?

在这里插入图片描述

但是通过查阅了很多资料以及问了许多人以后,我逐渐开始写我的第一个项目,现在来看这个程序,仍然存在许多问题以及不足,代码略显稚嫩,但是当我学完大学又一门课程C++面向对象编程,以及初学Java以后,我逐渐开始走上编程的学习之路,(现在依旧很菜)学得越深,越多,越发现编程之路的深奥与魅力,才知学无止境。现在接触编程快一年了,再来看这个课设,颇有感慨,因此想来写一写这篇博客。

一、课题内容

设计一个小型工资管理系统,基本实现以下功能:

先来一个效果图:
在这里插入图片描述

(1)输入/添加记录:能够输入、添加多条记录到数据表中。
(2)显示、查询记录:根据用户要求按所给记录关键字显示、查询一个或多个相关记录。
(3)修改记录:能对任意存在的记录进行修改,并能显示修改后的数据。
(4)排序记录:能对记录进行排序,并能显示排序后的相关数据。
在正确、合理的软件功能规划的基础上,进行各功能模块的设计。切忌将多个功能模块混合一起进行调试。

二、具体功能实现及要求

在这里插入图片描述

三、结构化程序设计

结构化技术是软件工程中最成熟的技术之一,它包括结构化分析方法(Structured Analysis)、结构化设计方法(Structured design)和结构化程序设计方法( Structured Programming),简称为SA-SD-SP方法。它的总的指导思想是自顶向下、逐步求精、单入口/单出口,基本原则是抽象和功能的分解。对于较为复杂问题的大型程序开发,应采取“自顶向下、逐步细化和模块化”的设计方法,模块化程序设计是结构化程序设计方法在开发大型程序中的应用。
(1)自顶向下、逐步细化、逐步求精
所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。每个子任务如果仍很复杂,还可以再分解为若干个子任务。如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思。
(2)菜单技术
当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行一遍,最好在每一层,至少在最高几层都设一个“菜单”。为方便用户操作,“菜单”技术已广泛使用在计算机的系统软件中,具体做法是:程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。

四、模块分析

根据各个功能,一个功能便是一个模块。
这些基本的功能就不在此赘述了,这些功能的实现由非常多的方法。

以下是博主觉得可以增添的一些功能:这些也是同一年与我一起写的较好的同学的一些创意,除了老师要求的功能外,一些较为出彩的功能。(博主当时太菜了,最后只得了一个良,这些创意来自其他优秀的同学)(同是编程小白,为什么其他人可以那么强┭┮﹏┭┮)

  1. 登录功能:较为容易实现的一个功能,几行代码的事情,但是写出来就会让人觉得不一样。在主函数里加几行代码,登录成功就实现接下来的功能菜单,错误则重新开始。(就是这么简单,但是我当时没弄这个功能,结果和其他同学一比就low好多了)
  2. 文件保存功能:这里用到了一些C语言里的一些文件操作,这里可以通过查找资料去了解。(这个功能我用了芜湖~)
  3. 删除撤销功能:这个比较秀的一个操作,需要你去思考怎么实现它,有同学有了这个功能,直接拿优哦。
  4. 分平台登录功能:工资管理系统嘛,应该有后台管理与用户查询,题目要求里没这个,但是发挥一下自己的创造力嘛。很遗憾,我当时也没做这个功能。
  5. 报错功能:就输入的时候对其进行判断是否符合要求,但是我当时考虑不周,没有做这个功能。
  6. 窗体颜色变化:通过不同的操作界面给人不同的界面,这个也是可以添彩的地方。
  7. 制表:输出数据实现制表,菜单制表,可以让你的程序更好看

还有很多其他功能啊,就看你愿不愿意去做了,做了拿高分,收获其他同学崇拜目光,不做可能还会没有出彩的地方,像博主一样拿不到优。

代码实现

这是博主自己的代码,所以上面的那些出彩功能我没有~
这里采用了结构体实现
定义结构体:

typedef struct
{
	char number[15];//职工号//
	char name[10];//姓名//
	double basic;//基本工资//
	double post;//职务工资//
	double allow;//津贴//
	double insure1;//医保//
	double insure2;//养老保险//
	double insure3;//失业保险//
	double pub;//公积金//
	double wages,shui,total;//应发工资,税,实发工资// 
}list;
typedef struct
{
	list stu[maxsize];//职工数// 
	int len;
}linklist;
//以上为定义结构体// 

文件保存与读取:

void save(linklist &q)
{
	int j;
	FILE*fp;
	fp=fopen("date.txt","w+");
	for(j=1;j<=q.len;j++)
	{
		fprintf(fp,"%s %s %.2lf %.2lf %.2lf %.2lf% .2lf %.2lf %.2lf %.2lf %.2lf %.2lf\n",q.stu[j].number,q.stu[j].name,q.stu[j].basic,q.stu[j].post,q.stu[j].allow,q.stu[j].insure1,q.stu[j].insure2,q.stu[j].insure3,q.stu[j].pub,q.stu[j].wages,q.stu[j].shui,q.stu[j].total);
    }
    fclose(fp);
}
fp=fopen("date.txt","r");
    		   if(fp==NULL)
    		   {
    		    printf("打开失败\n");
    		    return-1;
			   }
    		   while(!feof(fp))
			   {   
			    fscanf(fp,"%s %s %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf\n",&q.stu[j].number,&q.stu[j].name,&q.stu[j].basic,&q.stu[j].post,&q.stu[j].allow,&q.stu[j].insure1,&q.stu[j].insure2,&q.stu[j].insure3,&q.stu[j].pub,&q.stu[j].wages,&q.stu[j].shui,&q.stu[j].total);
			    j++;
               }
    		   fclose(fp);

后面的各模块就不一一打出来了,我会完整的发一个。

五、总结

虽然这个程序最后只拿了良但是它毕竟是我一个一个敲出来的,第一个项目,所以,很有感情的,希望对初学的兄弟姐妹们有所帮助。码字不易期待您的点赞~
在这里插入图片描述
完整代码免费自取
源代码自取

  • 46
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 75
    评论
评论 75
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值