XX大学《程序设计基础》课程大作业总结报告大作业名称小型工资管理系统学院 XXXXXXXX 班级 XXXXXXXXXX学生姓名 XXX 学号 XXXXXXXXXX任课教师 XXX 成绩日期一、系统的设计思想(简要叙述自己在编写该系统时的思路)首先,定义一个Employee结构体用来存储员工信息,定义一个数组存储员工信息。
输入函数通过定义一个结构体来存储输入的信息,一个员工信息输入完成之后添加到数组中;输出函数就是对数组的遍历打印;排序采用冒泡排序去进行排序;修改函数通过对比员工编号查找到员工,然后进行修改;同样的,查询函数就是遍历进行字符比较。
二、程序中自己定义的结构体数据类型struct Employee{char nun[20];char name[20];char gender[10];char department[20];double basicWage;double performanceWage;double bonus;double payable;};三、程序中所有自己定义的函数之间的调用关系图(用函数名作为实体画出它们之间的调用关系)四、程序运行结果屏幕截图(注意,每个功能至少有一个截图)1、系统一级菜单截图2、“数据输入”功能的截图(截图中必须包含自已的真实姓名及班级)3、“数据修改”功能截图4、“数据处理”功能截图(1)“数据处理”功能子菜单截图(2)“查询”功能截图(3)“排序”功能截图按照工号排序5、“数据输出”功能截图6、自己新增功能的截图,并在截图下面做一定的说明。
有多个新增功能的,可自己复制下面的序号增加内容。
(1)按照应发工资降序输出(2)按照基本工资占应发工资的比例升序输出(3)计算该公司本月员工工资总支出五、总结(调试程序的心得体会、发现的问题以及是如何解决的,学习本课程的收获等,不少于300字)在完成大作业的过程中,我发现很多知识并不像平时书本上面说的那样。
我发现了很多问题和困难,但是我没有放弃,我知道学会编程是一件很有成就感的事情。
在我碰到问题以后,我先翻阅了我的笔记,再结合课本内容,仔细思考之后我发现我自己还是不太能理解自己的问题所在,因此我及时请教了我同学,他耐心指导,最终帮我解决了我的问题。
我从他那里学到了很多,我觉得学习编程应该更多地注重实践动手能力。
这次实验,我遇到的问题有,怎么把输入的信息存储到数组中,对于数组的使用我有了更深层的理解。
我还了解到应该如何把数组当做指针来使用,以及如何实现冒泡排序。
在做大作业前,一定要将课本上的知识吃透,因为这是编程的基础,否则,在老师讲解时就会听不懂,这将使你在编程时的难度加大,浪费做实验的宝贵时间.实验过程中培养了我在实践中研究问题,分析问题和解决问题的能力以及培养了探索的精神。
附C语言程序#include<stdio.h>#include<string.h>#pragma warning(disable:4996)void Input(struct Employee e[]);void Modify(struct Employee e[], int c);void Process(struct Employee e[], int c);void Sort(struct Employee e[], int c);void Find(struct Employee e[], int c);void Print(struct Employee e[], int c);//按照应发工资降序输出void payableSort(struct Employee s[], int c);//按照基本工资占应发工资的比例升序输出void basicWageSort(struct Employee s[], int c);//计算该公司本月员工工资总支出void Sum(struct Employee s[], int c);void Menu();struct Employee{char nun[20];char name[20];char gender[10];char department[20];double basicWage;double performanceWage;double bonus;double payable;};int c;struct Employee employee[100];void Input(struct Employee s[]){int e;for (e = 0; e < 100000; e++){printf("请输入第%d个员工的工号<输入0结束>: ", e + 1);scanf("%s", s[e].nun);if (strcmp(s[e].nun, "0") == 0)break;printf("请输入第%d个员工的姓名: ", e + 1);scanf("%s", s[e].name);printf("请输入第%d个员工的性别: ", e + 1);scanf("%s", s[e].gender);printf("请输入第%d个员工的部门: ", e + 1);scanf("%s", &s[e].department);printf("请输入第%d个员工的基本工资: ", e + 1);scanf("%lf", &s[e].basicWage);printf("请输入第%d个员工的绩效工资: ", e + 1);scanf("%lf", &s[e].performanceWage);printf("请输入第%d个员工的奖金: ", e + 1);scanf("%lf", &s[e].bonus);s[e].payable = s[e].basicWage + s[e].performanceWage + s[e].bonus;}c = e;}void Modify(struct Employee e[], int c){char f[20];int g, h;printf("请输入需要修改信息的学生的学号: ");scanf("%s", f);for (g = 0; g < c; g++){if (strcmp(e[g].nun, f) == 0){while (g >= 0){printf("\n******************************\n 1.工号\t2.姓名\t3.性别\t4.部门\n 5.基本工资\t6.绩效工资\t7.奖金\t8.退出修改\n*****************************************\n");scanf("%d", &h);switch (h){case 1:printf("请输入该员工的新工号: ");scanf("%s", e[g].nun);break;case 2:printf("请输入该员工的新姓名: ");scanf("%s", e[g].name);break;case 3:printf("请重新输入该员工的正确性别: ");scanf("%s", e[g].gender);break;case 4:printf("请重新输入该员工的部门: ");scanf("%s", &e[g].department);break;case 5:printf("请重新输入该员工的基本工资: ");scanf("%lf", &e[g].basicWage);break;case 6:printf("请重新输入该员工的绩效工资: ");scanf("%lf", &e[g].performanceWage);break;case 7:printf("请重新输入该员工的奖金,");scanf("%lf", &e[g].bonus);break;case 8:Menu();break;}e[g].payable = e[g].basicWage + e[g].bonus + e[g].performanceWage;if (h != 8){printf("修改后的信息为: \n工号姓名性别部门基本工资绩效工资奖金应发工资\n");printf("---------------------------------------------------------------------\n");printf("% s\t% s\t% s\t% s\t % .1f\t % .1f\t % .1f\t % .1f\n", e[g].nun, e[g].name, e[g].gender, e[g].department, e[g].basicWage, e[g].performanceWage, e[g].bonus, e[g].payable);}}break;}}if (g == c)printf("无该工号员工记录! \n");}void Process(struct Employee e[], int c){int l = 1;while (1 > 0){printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n 1: 按工号排序\t2: 查询\n 3: 返回主菜单\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n请选择具体的处理内容<1~3>: ");scanf("%d", &l);getchar();if (l == 1)Sort(e, c);if (l == 2)Find(e, c);if (l == 3)break;}}void Sort(struct Employee s[], int c){int i, j;struct Employee k;for (i = 0; i < c - 1; i++)for (j = 0; j < c - i - 1; j++)if (strcmp(s[j].nun, s[j + 1].nun) > 0){k = s[j];s[j] = s[j + 1];s[j + 1] = k;}printf("排序后结果为: \n工号\t姓名\t性别\t部门\t基本工资\t绩效工资\t奖金\n------------------------------------\n");for (i = 0; i < c; i++)printf("%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\n", s[i].nun, s[i].name, s[i].gender, s[i].department, s[i].basicWage, s[i].performanceWage, s[i].bonus);}void Find(struct Employee e[], int c){int g;char m[20];printf("请输入要查询的员工的工号: ");scanf("%s", m);for (g = 0; g < c; g++)if (strcmp(e[g].nun, m) == 0){printf("查找员工的信息为: \n工号\t\t姓名\t性别\t部门\t基本工资\t绩效工资\t奖金\t应发工资\n");printf("--------------------------------------------------------");printf("\n% s\t% s\t% s\t% s\t % .1f\t % .1f\t % .1f\t % .1f\n", e[g].nun, e[g].name, e[g].gender, e[g].department, e[g].basicWage, e[g].performanceWage, e[g].bonus, e[g].payable);break;}if (g == c)printf("无该学号学生记录! \n");}void Print(struct Employee e[], int c){int g;printf("系统员工信息为: \n工号姓名性别部门基本工资绩效工资奖金应发工资\n");printf("---------------------------------------------------------------------------\n");for (g = 0; g < c; g++)printf("% s\t% s\t% s\t% s\t % .1f\t % .1f\t % .1f\t % .1f\n", e[g].nun, e[g].name, e[g].gender, e[g].department, e[g].basicWage, e[g].performanceWage, e[g].bonus, e[g].payable);}//按照应发工资降序输出void payableSort(struct Employee s[], int c){int i, j;struct Employee k;for (i = 0; i < c - 1; i++)for (j = 0; j < c - i - 1; j++)if (s[j].payable < s[j + 1].payable){k = s[j];s[j] = s[j + 1];s[j + 1] = k;}printf("按照应发工资降序输出信息为: \n工号姓名性别部门基本工资绩效工资奖金应发工资\n");printf("---------------------------------------------------------------------------\n");for (i = 0; i < c; i++)printf("% s\t% s\t% s\t% s\t % .1f\t % .1f\t % .1f\t % .1f\n", s[i].nun, s[i].name, s[i].gender, s[i].department, s[i].basicWage, s[i].performanceWage, s[i].bonus, s[i].payable);}//按照基本工资占应发工资的比例升序输出void basicWageSort(struct Employee s[], int c){int i, j;struct Employee k;for (i = 0; i < c - 1; i++)for (j = 0; j < c - i - 1; j++)if ((s[j].basicWage / s[j].payable) > (s[j + 1].basicWage / s[j + 1].payable)){k = s[j];s[j] = s[j + 1];s[j + 1] = k;}printf("按照基本工资占应发工资的比例升序输出信息为: \n工号姓名性别部门基本工资绩效工资奖金应发工资\n");printf("---------------------------------------------------------------------------\n");for (i = 0; i < c; i++)printf("% s\t% s\t% s\t% s\t % .1f\t % .1f\t % .1f\t % .1f\n", s[i].nun, s[i].name, s[i].gender, s[i].department, s[i].basicWage, s[i].performanceWage, s[i].bonus, s[i].payable);}//计算该公司本月员工工资总支出void Sum(struct Employee s[], int c){double sum = 0;for (int i = 0; i < c; i++)sum += s[i].payable;printf("本月公司员工工资总支出%lf元\n", sum);}//主菜单功能void Menu(){int b = 0;while (1){printf("\n*****************员工薪资管理系统************************************\n");printf("0.退出系统\t2.修改数据\t4.输出数据\t6.基本工资占应发工资的比例升序\n");printf("1.输入数据\t3.处理数据\t5.应发工资降序\t7.本月公司员工工资总支出\n");printf("********************************************************************* **\n请选择:");scanf("%d", &b);switch (b){case 1:Input(employee);break;case 2:Modify(employee, c);break;case 3:Process(employee, c);break;case 4:Print(employee, c);break;case 5:payableSort(employee, c);break;case 6:basicWageSort(employee, c);break;case 7:Sum(employee, c);break;}}printf("谢谢使用!\n");}int main(){Menu();return 0;}11。