C语言实训项目分析及源码

合集下载

c语言实践上机优秀综合设计源代码总结

c语言实践上机优秀综合设计源代码总结

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 前言:提供者:郁哲仅供参考,如有不足之处请见谅++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 题目:MP3system代码如下:#include<stdio.h>#include<string.h>#include<stdlib.h>#define NAME "sunzeng"#define CODE "200810404101"#define END "B Y E B Y E"#define N 5/*用来改变下载歌曲的数目*/#define M 10/*代表MP3中原有歌曲数目*/#define O 10/*用来改变屏保时倒计时的秒数*/#define P 4/*用来改变屏保时输出沙漏图案的高度*/#define Q 3/*关机倒计时的秒数*/#define R 3/*开机倒计时的秒数*/void enter(){int num=1;char name[30],code[20];while(num<=3){printf("Please input your usename:");scanf("%s",name);printf("Please input your code:");scanf("%s",code);if(strlen(name)<=20&&strlen(code)==12)if(strcmp(NAME,name)==0&&strcmp(CODE,code)==0){strcat(name,code);printf("Welcome to %s\n",name);break;}num++;if(num<=3)printf("Error!Please input again!\n");if(num>3)printf("You are not the use of this system!\n");}}struct MP3{char name[50];char lyric[100];double store;};typedef struct{ char name[50];char lyric[100];}SYSTEM;getmusic(SYSTEM *xt){int i=0;printf("Enter music name & lyric : \n");do{gets(xt[i].name);getchar();gets(xt[i].lyric);getchar();i++;}while(i<N);}getsore(SYSTEM *xt){int i,j,k;SYSTEM temp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++)if(strlen(xt[k].lyric)>strlen(xt[j].lyric))k=j;temp=xt[k];xt[k]=xt[i];xt[i]=temp;}}outmusic(SYSTEM *xt){int i;printf("After sorted play the loaded music:\n");for(i=0;i<N;i++){printf("The song name of %d is:%sThe lyric of song is:%s",i,xt[i].name,xt[i].lyric); printf("\n");}}void way(){printf("-----------------------------------------------------\n");printf("| §1 按歌词所占字节大小排列|\n"); printf("| §2 按歌曲所占内存大小排列|\n"); printf("| |\n"); printf("| |\n"); printf("| 请您选择|\n");printf("------------------------------------------------------\n");}void screen1(){printf("-------------------------------------\n");printf("| ************ |\n");printf("| ******** |\n");printf("| **** |\n");printf("| ** |\n");printf("| ** |\n");printf("| ****** |\n");printf("-------------------------------------\n");}void screen2(){printf("-----------------------------------\n");printf("| ***** @@ |\n");printf("| ***** * * |\n");printf("| * * * * |\n");printf("| * * * * |\n");printf("| * * * * |\n");printf("| @ @ * * |\n");printf("| @@ |\n");printf("-----------------------------------\n");}void Pscreen1(){int i;for(i=O;i>=0;i--){system("cls");printf("%d",i);_sleep(1000);}printf("\n");}void Pscreen2(){int i,j,k;for(i=0;i<=P;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=2*(P-i);k++)printf("* * ");printf("\n");}for(i=0;i<=P;i++){for(j=0;j<=P-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("* * ");printf("\n");}}void menu(){printf("---------------------------------------\n");printf("| §1 播放模式|\n");printf("| §2 录音模式|\n");printf("| §3 系统设置|\n");printf("| §4 电子书|\n");printf("| §5 关机|\n");printf("| |\n");printf("| 请您选择|\n");printf("----------------------------------------\n");}void play(){printf("---------------------------------------------------------------------------\n");printf(" PLAYING NOW \n");}{int j,k=12;char e;for(j=0;j<=10;j++){scanf("%c",&e);if(e=='+'){k++;printf("音量%d\n",k);getchar();}if(e=='-'){k--;printf("音量%d\n",k);getchar();}if(e!='+'&&e!='-')break;}}typedef struct{char s[100];double t;} L Y;recording(L Y *p){printf("----------------------\n");printf(" 正在录音\n");scanf("%s",p->s);p->t=strlen(p->s)/4.0;printf("----------------------\n");}void MP3system(){printf("---------------------------------------\n");printf("| §1 下载设置|\n"); printf("| §2 播放模式|\n"); printf("| §3 内存状况|\n"); printf("| §4 屏保设置|\n"); printf("| |\n"); printf("| 请您选择|\n"); printf("----------------------------------------\n");}{printf("-----------------------------------------------------\n");printf("| §1 下载电子书|\n"); printf("| §2 阅读电子书|\n"); printf("| |\n"); printf("| |\n"); printf("| 请您选择|\n");printf("------------------------------------------------------\n");}void Write(){FILE *fpout;char ch;if((fpout=fopen("abc.txt","w"))==NULL){printf("Can not open this file!\n");exit(0);}ch=getchar();while (ch!='@'){fputc(ch,fpout);ch=getchar();}fclose(fpout);}void Read(){FILE *fpin;char ch;if((fpin=fopen("abc.txt","r"))==NULL){printf("Can not open this file!\n");exit(0);}ch=fgetc(fpin);while(ch!=EOF){putchar(ch);ch=fgetc(fpin);}fclose(fpin);}{int i;for(i=Q;i>=0;i--){system("cls");printf("%d",i);_sleep(1000);}printf("\n");}void open(){int i;for(i=R;i>=0;i--){system("cls");printf("%d",i);_sleep(1000);}printf("\n");}int main(){int b,c,d,g,h,j,k,m,n,x,i=5;double str=0.0,st;char y[]={'W','E','L','C','O','M'};char f;SYSTEM xt[N],temp;struct MP3 sys[10]={{"Da yue zai dong ji","Ni de rou qing shi shui,ji du rang wo ai de chen zui.",5.89},{ "Bing yu","Leng leng de bing yu zai lian shang hu luan de pai",5.32},{"Ruo shui san qian","Ruo shui san qian deng dao ni de chu xian",6.54},{"Qing guo qing cheng","Shuo yi qing guo qing cheng bu bian de rong yan",6.81},{"Gu xiang","Tian bian xi yang zhai ci ying zhao wo de lian pang",5.42},{"Lan lian hua","Mei you shen me neng gou zhu dang,wo dui zi you de xiang wang.",7.13}, {"Lv xing","Zhan zai zhe cheng shi de ji jing zhong,rang yi qie xuan xiao zuo yuan.",6.98}, {"Xiao jiu wo","XIng fu kai shi you yu zhao,yuan fen rang wo men ",6.59},{"Jin tian","Pan le hao jiu zhong yu deng dao jin tian,meng le hao jiu zhong yu ba meng shi xian",7.63},{"Cha jian er guo","Shuo le bu xi huan,yi ge hua ti rao zhe wen.",6.41}};struct MP3 cha;L Y a;printf("Please enter this system by your name and code\n");open();getchar();screen1();/*进入时界面*/for(d=0;d<=5;d++)printf("%c ",y[d]);printf("\n");printf("请按任意键进入\n");getchar();menu();/*进入主功能菜单可以选择功能*/for(x=0;x<M;x++)/*使功能菜单可以多次被使用*/{scanf("%d",&c);switch(c){case 1: play();printf("THE %d of song is:%s\n",i,sys[i].name);printf("THE lyric of song is:%s\n",sys[i].lyric);printf(" 音量+ 音量- 上一首< 下一首> \n ");printf(" 请您选择\n");printf("---------------------------------------------------------------------\n");getchar();/*按任意键进入调节功能,先音量调节,后歌曲转换。

C语言实训项目分析及源码

C语言实训项目分析及源码

防灾科技学院实习报告书防灾科技学院灾害信息工程系2015年制项目一C语言实习一、实习目的本课程是网络工程专业的一门专业必修课程,是学生学习完C语言程序设计专业基础课程后,进一步学习其他专业课程前必须完成的一项实践教学环节。

本次实习通过1个综合性强、实用性强、趣味性强的应用实例,使学生进一步巩固C语言基本知识,掌握应用程序设计语言描述问题、分析问题和解决问题的方法和思想,为后继的面向对象程序设计、数据结构、Web应用技术、网络工程专业实习、网络工程生产实习、网络工程毕业实习课程等课程打下基础。

通过本课程的学习,使学生进一步明确学习目标、增强学习动力、培养学习兴趣。

二、实习任务概述任务一:员工工资管理系统的设计与实现本系统基于C语言,实现了一个小型的信息管理系统,主要包括以下功能:1.信息的录入:a)首次进入系统,可以添加职工的工号、姓名、基本工资、津贴、员工奖金等数据录入操作。

b)系统再次登录,可以从文件导入信息,也可以对文件内容进行修改,保存退出。

2.删除操作:对离职的员工信息要从系统里删除。

3.显示操作:将结构体中职工信息输出到屏幕上。

4.查询与修改操作:分别按职工工号和职工姓名查询,修改职工信息并保存。

5.统计与排序操作:分别统计所有员工的总工资,实现对总工资的排序。

三、实习所用软件简介VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。

使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

c语言学生成绩管理系统实训报告(含源代码)

c语言学生成绩管理系统实训报告(含源代码)

郑州轻工业学院实训报告实训名称:[130254]C语言程序设计实训姓名: 徐博院(系):软件学院专业班级:网页设计02学号:621413510250指导教师:成绩:时间: 2015年1月5 日至2015年1 月9日一设计项目:学生成绩管理系统二总体设计:1 程序设计组成框图:2:模块功能说明:1 输入功能:输入学生姓名学号及成绩。

2 查看功能:输出姓名学号及各科成绩.3 查询功能:通过学号查询学生姓名及各科成绩。

4 统计功能:统计班级学生及格率,优秀率,各个学生成绩方差等。

5 修改功能:通过输入学号修改指定学生的错误信息.6添加功能:添加学生信息。

7删除功能:通过输入学号输入指定学生信息.8保存功能:将学生信息保存。

9 退出系统。

3:主要函数之间的调用关系及各自功能:主要函数的函数原型void inputscore(void);void savescore(void);void avergescore(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);i.在菜单界面输入1,调用函数inputscore( )实现输入学生成绩信息功能。

ii.在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。

出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算.iii.在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能。

iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生名单。

v.在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能vi.在菜单界面输入6,调用add()函数实现添加学生成绩。

C语言程序设计实训报告

C语言程序设计实训报告

C语言程序设计实训报告一、实训背景介绍本次实训是为了提高学生的C语言编程能力,培养学生解决实际问题的能力,加强学生的动手能力和团队合作能力。

实训内容主要包括C语言的基础知识和常用库函数的使用,以及通过编写实际的小项目来巩固所学知识。

二、实训过程及成果1.实训过程本次实训总共经历了三个阶段:知识学习、编程实践和项目开发。

(1)知识学习阶段:在这个阶段,我们通过教材和课堂上的讲解学习了C语言的基本语法、数据类型、运算符、流程控制语句等基础知识,并学习了常用库函数的使用。

(2)编程实践阶段:在这个阶段,我们通过一系列的编程练习来巩固所学知识。

通过编写简单的程序,我们学会了如何使用C语言的基本语法和常用库函数来解决实际问题。

(3)项目开发阶段:在这个阶段,我们分小组进行项目开发。

每个小组由3-5名学生组成,负责编写一个小型的C语言项目。

项目的内容可以是游戏、学生管理系统、图书管理系统等等。

我们需要在规定的时间内完成项目的需求分析、设计、编码和测试工作,并提交最终的项目成果。

2.实训成果通过本次实训,我掌握了C语言的基本语法和常用库函数的使用,并且通过实际的编程练习和项目开发锻炼了自己的编程能力和解决实际问题的能力。

在项目开发的过程中,我学会了如何进行需求分析和设计,并能够合理地组织代码结构和调试程序。

三、实训心得体会通过这次实训,我深刻地认识到了编程是一项需要耐心和毅力的工作。

在编写代码的过程中,经常会遇到各种各样的问题,需要不断地调试和修改。

同时,编程还需要良好的团队合作能力,只有团队成员之间的密切配合和良好的沟通,才能顺利地完成项目。

通过这次实训,我不仅提高了自己的编程能力,还锻炼了自己的动手能力和团队合作能力。

在以后的学习和工作中,这些经验和能力无疑会给我带来很大的帮助。

我相信,只要持之以恒地继续努力,我一定能够在C语言编程方面有所突破。

四、总结与展望通过这次实训,我对C语言的掌握更加深入,掌握了一些常用的编程技巧和方法。

C语言实训小项目

C语言实训小项目

《C语言的六个实训小项目》源码例程已有 11257 次阅读2007-10-8 11:51|个人分类:C语言编程项目实训一实训内容:1、定义一个数组a[11],用以存放学生的成绩。

2、从键盘输入10个学生成绩3、采用冒泡法,将学生成绩按照从高到低进行排序4、再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组5、将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。

项目实训二实训内容:1、在函数中进行10个学生成绩从高到低排名 sort(int a[10])2、改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名,3、改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式4、根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。

(a:ascending 升,d:descending 降)项目实训三实训内容:1、定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现2、将数组stu[10]的内容输出到屏幕上,要求用指针实现3、将成绩数组按照从高到低进行排序,要求用指针实现4、将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单5、采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)项目实训四实训内容:1、定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2、从键盘输入10个学生的以上内容3、输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩4、输出三门课程的平均分数最高的学生的学号、姓名及其平均分5、将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:number name math Chinese English average 103 tom 90 90 10095101 alice 90 80 7080项目实训五实训内容:1、定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2、从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件3、打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件。

c语言实验报告实验

c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。

二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。

三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。

熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。

2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。

运用 switch 语句进行多分支选择,处理不同的情况。

利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。

3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。

掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。

4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。

实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。

5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。

掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。

6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。

了解共用体的概念和使用场景,比较结构体和共用体的区别。

四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。

c语言课设实验报告-记事本程序(含源码)

c语言课设实验报告-记事本程序(含源码)

C语言课设实验报告[记事本程序]班级:学号:姓名:指导老师:C语言课设实验报告#define key_down 80#define key_up 72#define key_esc 1#define key_alt_f 33#define key_alt_x 45#define key_enter 28#define key_alt_e 18int get_key();void box(int startx,int stary,int high,int width);{int i,key,x,y,l;char *w=NULL,*d=NULL,*s=NULL;FILE *fp;char *menu[]={ "File ", "Edit ","Format","View","Help"};char *red[]={ "F", "E","F","V","H"};char *f[]={ "New ", "Open" , "Save", "Another","Quit alt_x"};char *e[]={"Search","Search next","Replace","Date"};char buf[16*10*2],buf1[16*2];textbackground(3);clrscr();window(1,1,80,1);textbackground(WHITE);textcolor(BLUE);clrscr();window(1,1,80,2);for(i=0, l=0; i <5;i++){x=wherex();y=wherey();textcolor(BLACK);cprintf( " %s ",menu[i]);l=strlen(menu[i]);gotoxy(x,y); x.y等的头文件*//*功能键的扫描码的定义*//* i为循环次数的序数,key为从键盘输入的功能键,x,y 为光标的坐标,l为菜单栏中菜单的字符长度*//*w是存放输入的内容(记录的事情)的指针,*s是存放输入的文件名的指针,*d是存放输入要定时的文件的文件名的指针*/ /*菜单栏中各个菜单的定义*//*菜单栏中菜单开头要标颜色的字母的定义*//* file 子菜单中项目的定义*//*edit子菜单的定义*/ /*缓冲区的定义*//*整个大窗口的背景颜色设置*//*创建菜单栏窗口*/ /*设置菜单栏窗口背景颜色为白色,字体颜色为蓝色*//*利用循环输出menu菜单栏,有多少个菜单循环多少次。

C语言程序设计实验及代码

C语言程序设计实验及代码

C语言程序设计实验及代码随着计算机技术的快速发展,C语言作为一种高效且强大的编程语言,被广泛应用于软件开发、嵌入式系统以及科学计算等领域。

在学习C语言编程的过程中,进行实验并编写相应的代码是非常重要的一部分,可以帮助我们巩固所学的知识并提高编程能力。

本文将介绍几个常见的C语言程序设计实验,并给出相应的代码示例。

一、实验一:Hello, World!实验目的:熟悉C语言编程环境,掌握简单的编译和运行操作。

实验内容:编写一个简单的程序,在屏幕上输出"Hello, World!"。

代码示例:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```二、实验二:求两个整数的和与差实验目的:学习C语言中的基本数据类型和算术运算符的使用。

实验内容:编写一个程序,输入两个整数并计算它们的和与差,然后输出结果。

代码示例:```c#include <stdio.h>int main() {int num1, num2, sum, diff;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;diff = num1 - num2;printf("两数之和:%d\n", sum);printf("两数之差:%d\n", diff);return 0;}```三、实验三:判断一个数是奇数还是偶数实验目的:学习C语言中的分支语句的使用。

实验内容:编写一个程序,输入一个整数,并判断它是奇数还是偶数,然后输出结果。

代码示例:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

防灾科技学院实习报告书防灾科技学院灾害信息工程系2015年制项目一C语言实习一、实习目的本课程是网络工程专业的一门专业必修课程,是学生学习完C语言程序设计专业基础课程后,进一步学习其他专业课程前必须完成的一项实践教学环节。

本次实习通过1个综合性强、实用性强、趣味性强的应用实例,使学生进一步巩固C语言基本知识,掌握应用程序设计语言描述问题、分析问题和解决问题的方法和思想,为后继的面向对象程序设计、数据结构、Web应用技术、网络工程专业实习、网络工程生产实习、网络工程毕业实习课程等课程打下基础。

通过本课程的学习,使学生进一步明确学习目标、增强学习动力、培养学习兴趣。

二、实习任务概述任务一:员工工资管理系统的设计与实现本系统基于C语言,实现了一个小型的信息管理系统,主要包括以下功能:1.信息的录入:a)首次进入系统,可以添加职工的工号、姓名、基本工资、津贴、员工奖金等数据录入操作。

b)系统再次登录,可以从文件导入信息,也可以对文件内容进行修改,保存退出。

2.删除操作:对离职的员工信息要从系统里删除。

3.显示操作:将结构体中职工信息输出到屏幕上。

4.查询与修改操作:分别按职工工号和职工姓名查询,修改职工信息并保存。

5.统计与排序操作:分别统计所有员工的总工资,实现对总工资的排序。

三、实习所用软件简介VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。

使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。

这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

四、参考文献[1] 韩莹.C语言实训教程[M].北京交通大学出版社,2013.[2] 李新良.教学测评系统的应用与研究[J].湖南人文科技学院学报,2012(6):73-77.[3] 张高煜.C语言程序设计实训.中国水利水电出版社,2011.8.[4] 白帆.C语言开发实例详解.电子工业出版社,2012.5.[5] 王为青.C语言实战105例.北京:人民邮电出版社,2011.[6]明日科技编著.C语言项目案例分析.北京:清华大学出版社,2012.五、实习日程安排六、实习内容及步骤任务1 员工工资管理系统(C语言模块)1.1 系统开发思路(需求分析)随着计算机技术的发展,企业管理越来越趋于自动化,而工资管理是企业管理的重要的组成部分,它与企业的财务管理、人才管理有着密切的联系。

由于企业员工工资结构存在一定的规律性,工资放在时间上和操作上存在的一定的重复性,这使得企业事业单位工资管理计算机的实现成为了可能。

1.2 数据结构设计struct Worker{char workernum[10];char workername[20];int basicwage;int allowance;int Bonus;int totalwage;}Worker_Infor[100];1.3 系统设计与实现1.3.1系统功能结构图及流程图图1-1员工工资管理系统参考模块图.1.3.2 主要函数设计void Input_Infor() 函数功能:员工信息的录入void Print_Worker(int i)函数功能:员工工资的显示void delet_worker() 函数功能:删除员工信息int Search_Name() 函数功能:姓名查询int Search_Num() 函数功能:工号查询int Search_Worker() 函数功能:查询主函数,调用姓名/工号查询void Modify_Worker() 函数功能:修改员工信息void Cal_Wages() 函数功能:计算总工资void Sort_Wage() 函数功能:对员工工资排序int Save_Infor() 函数功能:文件写操作void Up_Infor() 函数功能:读文件void Input_worker(int i) 函数功能:添加新的员工信息void main() 函数功能:主函数选择进入界面1.3.3 系统功能设计与实现下面分别对该模块中的具体功能进行详细描述,主要功能实现的代码相应功能实现的界面截图。

1.---------------------------------------//主函数void main(){int c,t=1,i;Up_Infor();printf("输入员工数量:");scanf("%d",&n);while(t){printf("#######################################################\n"); printf ("## 欢迎进入职工工资管理系统: ##\n");printf ("## 1.录入员工信息 ##\n"); printf ("## 2.职工总工资进行排序 ##\n"); printf ("## 3.文件保存到硬盘上 ##\n"); printf ("## 4.查询员工信息 ##\n"); printf ("## 5.修改员工信息 ##\n"); printf ("## 6.查看所有员工信息 ##\n"); printf ("## 7.添加员工信息 ##\n"); printf ("## 8.删除员工信息 ##\n"); printf ("## 9.退出程序 ##\n"); printf("## ##\n"); printf ("## 请选择对应的编号(1—7) ##\n"); printf ("#######################################################\n");scanf("%d",&c);getchar();if (c<1||10<c){printf ("\t输入错误,请重新输入:\n");continue ;} switch(c){case 1:Input_Infor();Cal_Wages();break;case 2:Sort_Wage();break;case 3:Save_Infor();printf ("\t按任意键继续!\n");getchar();break;case 4:Search_Worker();break;case 5:Modify_Worker();break;case 6:for (i=0;i<n;i++)Print_Worker(i);break;case 7:Input_worker(i);break;case 8:delet_worker();break;case 9:t=0;printf ("\t谢谢使用!\n");printf ("\t按任意键返回!");break;}}}图1-32.----------------------------------------//读文件void Up_Infor(){int i;FILE *pk;pk=fopen("D:\\worker.txt","at+");for (i=0;i<100;i++){fscanf(pk,"%-10s%-8s\t%-10d%-10d%-10d%-10d\t\n",Worker_Infor[i ].workernum,Worker_Infor[i].workername,Worker_Infor[i].basicwage, Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].t otalwage);if (strcmp(Worker_Infor[i].workernum,"stop")==0)break;}fclose(pk);}3.------------------------------//员工信息的录入void Input_Infor(){char c;int i;if (n==0)i=0;else i=n-1;printf ("\t请输入职工工资信息!\n");while (1){printf ("\t请输入第%d位职工编号:",i+1);//gets(Worker_Infor[i].workernum);scanf("%s",Worker_Infor[i].workernum);getchar();printf ("\t工号为%s职工的姓名:",Worker_Infor[i].workernum);gets(Worker_Infor[i].workername);printf ("\t%s职工基本工资:",Worker_Infor[i].workername);while(1){scanf("%d",&Worker_Infor[i].basicwage);if (Worker_Infor[i].basicwage>=0)break;else printf ("\t输入错误,请重试!");}printf ("\t%s职工的津贴:",Worker_Infor[i].workername);while(1){scanf("%d",&Worker_Infor[i].allowance);if (Worker_Infor[i].allowance>=0)break;else printf ("\t输入错误,重新输入:");}printf ("\t%s职工的奖金:",Worker_Infor[i].workername);while(1){scanf("%d",&Worker_Infor[i].Bonus);if (Worker_Infor[i].Bonus>=0)break;else printf ("\t输入错误,重新输入:");}i++;n=i;getchar();printf ("\n是否继续输入:(Y/N )或者 (y/n):");scanf ("%c",&c);if (c=='n'||c=='N')break;}}图1-44.-----------------------------------//对员工工资排序void Sort_Wage(){int i,j;int Worker_temp;Cal_Wages();for (i=0;i<n;i++){for (j=i+1;j<n;j++)if (Worker_Infor[j].totalwage<= Worker_Infor[i].totalwage){Worker_temp=Worker_Infor[i].totalwage;Worker_Infor[i].totalwage=Worker_Infor[j].totalwage;Worker_Infor[j].totalwage=Worker_temp;}}for (i=0;i<n;i++)printf("%-10s%-8s\t%-10d%-10d%-10d%-10d\t\n",Worker_Infor[i].workernum, Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor [i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);}图1-55.---------------//文件写操作,文件保存到硬盘上int Save_Infor(){int i;FILE *pk;Cal_Wages();if ((pk=fopen("D:\\worker.txt","wr+"))==NULL){printf ("文件打开失败!");return 0;}for (i=0;i<n;i++){fprintf(pk,"%-10s%-8s\t%-10d%-10d%-10d%-10d\t\n",Worker_Infor[ i].workernum,Worker_Infor[i].workername,Worker_Infor[i].basicwage ,Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i]. totalwage);}fclose(pk);printf ("文件保存成功!");return 1;}图1-66.-----------------//查询员工信息int Search_Worker(){int i,m;printf ("请选择查询方式:\n1.按姓名查找\n2.按员工工号查找\n3.退出\n");scanf ("%d",&m);switch(m){case 1:i=Search_Name();return i ;break;case 2:i=Search_Num();return i ;break;case 3:return -1;}}6.1--------------------------------//姓名查询int Search_Name(){int i;char name[20];printf ("请输入要查询的姓名:");scanf ("%s",name);for (i=0;i<n;i++){if (strcmp(name,Worker_Infor[i].workername)==0){printf("%-10s%-8s\t%-10d%-10d%-10d%-10d\t\n",Worker_Infor[i].workernum, Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor [i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);return i;break;}}if (i==n){printf ("没有找到该员工!\n");return -1;}//else return i;}图1-76.2---------------------------//按工号查询int Search_Num(){int i;char num[20];printf ("请输入要查询的工号:");scanf ("%s",num);for (i=0;i<n;i++){if (strcmp(num,Worker_Infor[i].workernum)==0){printf("%-10s%-8s\t%-10d%-10d%-10d%-10d\t\n",Worker_Infor[i].workernum, Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor [i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);return i;break;}}if (i==n){printf ("没有找到该员工!\n");return -1;}//else return i;}图1-87.--------------------------//修改员工信息void Modify_Worker(){int i,m;printf ("请查询您要修改的员工:\n");i=Search_Worker();getchar();printf("#######################################################\n");printf ("## 请选择您要修改的内容: ##\n");printf ("## 1.员工号 ##\n");printf("## 2.员工姓名 ##\n");printf ("## 3.员工的基本工资 ##\n");printf ("## 4.员工的津贴 ##\n");printf("## 5.员工的奖金 ##\n");printf("## 6.退出 ##\n");printf("#######################################################\n");scanf ("%d",&m);switch(m){case 1:printf ("请输入新的员工号:");scanf ("%s",&Worker_Infor[i].workernum);break;case 2:printf ("请输入新的员工名:");scanf ("%s",&Worker_Infor[i].workername);break;case 3:printf ("请输入新的员工基本工资:");scanf ("%d",&Worker_Infor[i].basicwage);break;case 4:printf ("请输入新的员工津贴:");scanf("%d",&Worker_Infor[i].allowance);break;case 5:printf ("请输入新的员工奖金:");scanf ("%d",&Worker_Infor[i].Bonus);break;case 6:return;}printf ("修改后的员工的基本信息为:\n");Print_Worker(i);}图1-98.---------------//查看所有员工信息void Print_Worker(int i){printf("%-10s%-8s\t%-10d%-10d%-10d%-10d\t\n",Worker_Infor[i].workernum, Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor [i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);}图1-109.-------------------//添加新的员工信息void Input_worker(int i){char c;printf("\t请输入职工工资信息:\n");while(1){printf("\t第%d位职工的编号:",n+1);gets(Worker_Infor[i].workernum);printf("\t工号为%s职工的姓名:",Worker_Infor[n].workernum);gets(Worker_Infor[n].workername);printf("\t%s职工的基本工资:",Worker_Infor[n].workername);while(1){scanf("%d",&Worker_Infor[n].basicwage);if(Worker_Infor[n].basicwage>=0)break;else printf("\t输入错误请重试:");}printf("\t%s职工的津贴:",Worker_Infor[n].workername);while(1){scanf("%d",&Worker_Infor[n].allowance);if(Worker_Infor[n].allowance>=0)break;else printf("\t输入错误请重试:");}printf("\t%s职工的奖金:",Worker_Infor[n].workername);while(1){scanf("%d",&Worker_Infor[n].Bonus);if(Worker_Infor[n].Bonus>=0)break;else printf("\t输入错误请重试:");}i++;n++;getchar();printf("是否想要输入下一个员工信息(Y/N):");scanf("%c",&c);if(c=='N'||c=='n')break;getchar();}}图1-11图1-1210.----------------//删除员工信息void delet_worker(){int i,k=0;char name[20];printf("输入需要删除的员工姓名:");scanf("%s",name);for(i=0;i<n-1;i++){if(strcmp(name,Worker_Infor[i].workername)==0);break;} while(1){strcpy(Worker_Infor[i].workername,Worker_Infor[i+1].workername );strcpy(Worker_Infor[i].workernum,Worker_Infor[i].workernum);Worker_Infor[i].allowance=Worker_Infor[i].allowance;Worker_Infor[i].basicwage=Worker_Infor[i+1].basicwage;Worker_Infor[i].Bonus=Worker_Infor[i+1].Bonus;Worker_Infor[i].totalwage=Worker_Infor[i+1].totalwage;Print_Worker(i);i++;if(i==n-1)break;}}图1-13图1-141.4 结论1.4.1 本次实习取得的成绩第一次接触到这样多的代码的书写,不仅锻炼了自己的编程能力,而且学会了坚持的精神。

相关文档
最新文档