版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计链表操作设计链表节点数据为:学号:char num10语文:int chi数学:int math总分:int sum链表设计题:l定义相应的数据结构,设计一个简单的菜单;l创建两个已排序的链表;l输出两个链表;l按序合并两个链表并输出;l合并链表保存到文件中;2)数据库管理系统设计题目:工资管理管理系统从文件读取数据,提供新增、删除、修改和显示等功能,并将修改后 的数据写入一个新的文件。工资单如下:工号:long 4bytes姓名:char 20bytes基本工资:float 4bytes津贴:float 4bytes扣税:float 4bytes实发工资:float 4byte
2、s系统功能模块如下:(1)建立工资表(单独一个执行文件创建数据库);(2)将工资表读入到一个结构体数组中,并计算;(3)菜单实现以下功能: 计算每个职工的扣税;基本工资+津贴的值:小于1500元,扣税为0;小于2000元,扣税为(基本工资+津贴-1500)*5%;大于2000元的,扣税为(基本工资+津贴-1500)*5%+ (基本工资+津贴-2000)*10% 计算职工的实发工资; 显示各职工工资信息; 新增一个职工工资信息; 修改一个职工工资信息;(按工号) 查询职工工资信息(按工号)。(4)修改后的工资表写入到另一个新文件中。链表题源代码:#in clude<stdio.h>#
3、i nclude<malloc.h>#in clude<stri ng.h>#in clude<stdlib.h>#defi ne NULL 0#defi ne Z goto X;#defi ne Z1 goto N;int R=0,g=0;struct stude nt char n ame10;int Chi;int Math;int sum;struct stude nt *n ext;struct stude nt *ss;struct stude nt *build(void)struct stude nt *h,*p,*p1;char x=&qu
4、ot;0",y="-1"int n=0;int i=0,o100;i=n+1;printf("t*输入错误时,重输请按 O'输入完毕按 -T确定*n");p=p1=(struct stude nt *)malloc(sizeof(struct stude nt);X:printf("t请输入第1个学号,注意每个学号的长度要一样长!n");sca nf("%s",p-> name);if(R=1)if(strle n(p->n ame)!=g)printf("tt-学号长度与第
5、一次不同,请重输-nn");Z o0=0;o=strle n(p->n ame);if(strcmp(x,p->n ame)=0)Zprintf("t*请输入语文成绩n");sca nf("%d",&p->Chi);if(p->Chi=O)Zprintf("t*请输入数学成绩n");sca nf("%d",&p->Math);if(p->Math=O)Zp->sum=p->Chi+p->Math;h二NULL;R+;while(1)n二
6、n+1;i 二n+1;if(n二=1)h二p;else p1- >n ext=p;p1=p;p=(struct stude nt *)malloc(sizeof(struct stude nt);N:printf("t请输入第%d个学号,输入完毕按 -1' n",i);sca nf("%s",p-> name);o=strle n(p->n ame);if(strcmp(y,p->n ame)=O)break; if(strcmp(x,p->n ame)=0)Z1 if(o!=o)printf("t*输入的
7、学号长度有误,请重输*n");Z1if(strcmp(p1- >n ame,p->n ame)>0)printf("tt你输入的学号有误,学号按升序输入!n");Z1printf("t* 请输入语文 n");sca nf("%d",&p->Chi);if(p->Chi=0)Z1printf("t*请输入数学成绩n");sca nf("%d",&p->Math);if(p->Math=0)Z1p->sum=p->Chi
8、+p->Math;p1-> next二NULL;return(h);struct stude nt *c(struct stude nt *head,struct stude nt *p2)struct stude nt *h11,*h12,*h2,*p1;p1二head;while(p2!=NULL)h2=p2;p2=p2-> next;h12=p1;while(strcmp(h2-> name,h12->n ame)>0&&(h12->n ext!=NULL)h11=h12;h12=h12-> next;if(strcmp(h
9、2->n ame,h12->n ame)<0)if(head=h12)head=h2;p 仁 head;elseh11-> next二h2;h2-> next=h12;elseh12-> next=h2;h2-> next二NULL;printf("ttn*两个链表已按学号从小到大排序*n");retur n( head);void pri nt(struct stude nt *head)struct stude nt *p=head;if(head!=NULL)printf("nt 学号 语文 数学 总分n"
10、);doprin tf("t%s%5d%5d%5dn",p-> name,p->Chi,p->Math,p->sum);p=p- >n ext;while(p!二NULL);void save(struct stude nt *e)char m="学号语文数学总分"FILE *p;链表.txt","w");fpri ntf(p,"%sn",m);while(e!=NULL)fprin tf(p,"%s%5d%5d%5dn",e-> name,e-&g
11、t;Chi,e->Math,e->sum);e=e-> ne xt;fclose(p);printf("tt数据已保存在d盘链表.txt文件中n");prin tf("ntt*程序运行结束!*n"); void mai n()int m;struct stude nt *s1,*s2,*head;A:doprintf("ttt欢迎进入学生信息链表管理系统nn");printf("ttt1.创建两个链表nttt2.合并输入的两个 链表nttt3.确认完成操作nttt0.退出程序n");prin tf
12、("tt*注意请先创建两个链表后再执行合并任务*n");if(m=0)exit(0);printf("ttt-请输入要操作的序号-n");sca nf("%d",&m);if(m=3)goto B;ss=s1;if(m=1)printf("tt注意:学号按从小到大输入n");printf("tt 请输入第一个链表数据nn");s1=build();printf("t 第一个链表为 n");g=strlen(s1->name);prin t(s1);printf(
13、"tt 请输入第二个链表数据nn");s2=build();printf("t 第二个链表为 n");print(s2);if(m=2)head二c(s1,s2);pri nt(head);if(m!=1 &&m!=2&&m!=0) printf("ttt*输入错误 *n");if(m=1|m=2)printf("t-若继续操作请继续选择相应的序号-n");while(m!=O);B:if(m!=0) printf(" 是否保存到文件? 1,保存;2,取消并退出。nn&qu
14、ot;);sca nf("%d",&m);if(m=1)save(head);if(m=2)exit(0);if(m!=1 &&m!=2)printf(”您输入有误,是否继续操作:nt1.重新创建nt2.重复本次操作其它任意数字退出程序nn");scanf("%d",&m);if(m=1)goto A;if(m=2)goto B;数据库管理题代码:1.创建职工数据代码:#i nclude "stdio.h"#i nclude"stri ng.h"#defi ne X got
15、o E;struct TIo ng int num;char n ame20;float jt;float jb;float ks;float sf;struct T s100;void mai n() int i=0,c;char d="-1"FILE *fp;fp=fope n("d:x.txt","w");pri ntf("ttt欢迎使用职工信息输入系统 nn");printf("tt请分别输入员工的工号姓名基本工资 津贴nnttt请分别输入正确类型的数据n");printf("
16、tt输入完毕后,以0'为终止,重新输入此工号信息请输入-1' nn");for(i=0;i+)c=i+1;E: printf("tt请依次输入第%d个员工的工号、姓名、基本工资、津贴n",c);sea nf("%ld", &s. nu m);if(s. num=O)break;if(s. num=-1)Xsca nf("%s",s. name);if(strcmp(d,s. name)=O)Xsca nf("%f", &s.jb);if(s.jb=-1)X sca nf(&
17、quot;%f", &s.jt);if(s.jt=-1)Xfprin tf(fp,"%ld %s %f %fn",s. num,s. name,s.jb,s.jt);fclose(fp);printf("tt数据已保存在d盘下n");2.职工数据库管理源代码:#i nclude "stdio.h"#i nclude "stri ng.h"#i nclude "math.h"#i nclude "stdlib.h"int i=0;struct GZIo ng
18、int num;char n ame20;float jb;float jt;float ks;float sf;struct GZ s100;void Read() FILE *fp;float M;struct GZ s1;fp=fope n("d:x.txt","r");if(fp=NULL)pri ntf("ttt文件不存在请先建立后再执行本程序n");exit(0); while( fscanf(fp,"%ld %s %f %fn",&s1.num,,&s1.jb,&
19、s1.jt)!二EOF ) s.num 二s1. nu m;s.jb二s1.jb;s.jt二s1.jt;strcpy(s .n ame,s1. name);M=s.jb+s.jt;if(M<=1500)s.ks=0;else if(M<=2000)s.ks=(M-1500)/20;else s.ks=(M-1500)/20+(M-2000)/10;s.sf二M-s.ks;i+;fclose(fp);printf("ttt* 文件读取成功 *n");prin tf("tt*n");void Disp()int c;printf("tt
20、t工号 姓名基本工资 津贴 扣税 实发工资n");for(c=0;c<i;c+)prin tf("ttt%ld %8s %7.3f %7.3f %7.3f %7.3fnn ",sc. nu m,sc. names c.jb,sc.jt,sc.ks,sc.sf);void Appe nd()char b="0"float M;int a,k1;X:printf("tt您正进入职工信息增加系统,1退出;按其它任意数字键继续n");scanf("%d",&k1);if(k1=1)goto LLL;
21、printf("tt请输入要增加职工的工号n ");sca nf("%ld", &s. nu m);if(s. num=0)goto X;printf("tt请输入职工的名字n");sea nf("%s",s .n ame);if(strcmp(b,s .n ame)=0)goto X;printf("tt请输入此职工的基本工资n");sca nf("%f", &s.jb);if(s.jb<0.000001)goto X;printf("tt请
22、输入此职工的津贴n");sca nf("%f", &s.jt);if(s.jt<0.000001)goto X;M=s.jb+s.jt;if(M<=1500)s.ks=0;else if(M<=2000)s.ks=(M-1500)/20;else s.ks=(M-1500)/20+(M-2000)/10;s.sf=M-s.ks;printf("t该职工:ntt职工 名字基本工资津贴扣税 实发工资ntt%ld %8s %6.3f %6.3f %6.3f %6.3fn",s. nu m,s. name,s.jb,s.jt,
23、s.ks,s.sf);i+;do printf("ttt 是否再新增一个职工工资信息?ntt1.是2.否”);sca nf("%d",&a);if(a=1)goto X;else if(a=2)break;else printf("tt 您输入有误,请重新选 择 n");while(1);LLL:;void M k,k1,k2,p=0;float M;char b="0",c="00"W:printf("tt*请输入要修改的职工工号,重输请按“0”,退出请按“-1*nn
24、");sca nf("%ld",&k);if(k=0)goto W; if(k=-1)goto L;for(k1=0;k1<i;k1+)if(sk1. nu m=k)k2=k1;p=1;break;if(p=0)printf("ttt-此职工工号不存在,请重输!-n");goto W;p=0;printf("tt-请输入此职工新的姓名n");sca nf("%s",sk2. name);if(strcmp(sk2. name,b)=0)goto W;printf("tt-请输入此职
25、工新的基本工资n");sca nf("%f", &sk2.jb);if(sk2.jb<0.0000001)goto W;printf("tt-请输入此职工新的津贴n");sca nf("%f", &sk2.jt);if(sk2.jt<0.0000001)goto W;M=sk2.jb+sk2.jt;if(M<=1500)sk2.ks=0;else if(M<=2000)sk2.ks=(M-1500)/20;else sk2.ks=(M-1500)/20+(M-2000)/10;sk2.
26、sf二M-sk2.ks;printf("职工工号%ld修改后为:ntt名字:s 基本工资:6.3f津 贴:%6.3f扣税:%6.3f实发工资:%6.3fn",sk2.num,,sk2.jb,sk2.jt,sk2.ks,sk2.sf);O:printf("tt请确认是否修改正确:1.确认并执行其它任务;2.重新查 找修改n");sca nf("%d",&k1);if(k1=1)printf("tt修改成功,请注意保存数据!n");elseif(k1=2)goto W;else printf(&
27、quot;tt无此选项请重新执行本次操作!n");goto O;L:;void Query()int k,nu mber,flag=0,k1;U:printf("tt*进入查询系统,是否继续? * 2.no ;按其它任意数字键继续。n");scanf("%d",&k1);if(k1=2)goto LL;printf("-请输入要查询职工工号n");sca nf("%d",&n umber);for(k=0;k<i;k+)if(nu mber=sk. nu m)flag=1;print
28、f("要查询的职工信息为:n姓名:%s基本工资:8.3f津 贴:%8.3f扣税:%8.3f实发工资:%8.3fn",,sk.jb,sk.jt,sk.ks,sk.sf);break;if(flag=0)printf("tt 您输入的学号无法找到,是否重新查找?n");doprintf("ttt1.重新查找;2.否。n");scanf("%d",&number);if(nu mber=1)goto U;else if(nu mber=2)break;else printf("ttt-输入
29、有误,请重新选择 n");while(1);else doprintf("tt 是否继续查找? 1.继续。2.否。n");scanf("%d",&number);if(number=1)goto U;else if(nu mber=2)break;else printf("ttt-输入有误,请重新选择 n");while(1);LL:;void Save()int c;char sen50='学号姓名语文数学总分名次n"FILE *fp1;fp1= fope n( "d:y.txt&quo
30、t;,"w");fpri ntf(fp1,"%s",se n);for(c=0;c<i;c+)fprin tf(fp1,"%ld%s %6.3f %6.3f%6.3f %6.3fn",sc. nu m,sc. name,sc .jb,sc.jt,sc.ks,sc.sf);fclose(fp1);printf("tt* 文件已保存至 d 盘下* n ”);pri ntf("tt *n");void mai n()int ch,ff=O,xx=O;pri ntf("tt*欢迎进入职工信息管理系统*nn")doLL: if(xx=0)prin tf("ttt请先读取文件Read a file?',ntttt1.yes 2. no n");else p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级语文工作计划
- 劳动力计划及人员配备
- 2024-2025年中国化肥电商行业市场前景预测及投资战略研究报告
- 大班班级工作计划
- 幼儿园中班班级教育教案模板
- 个人自我介绍集锦15篇
- 市场人员年度工作总结十篇
- 《傅雷家书》读书笔记
- 个人原因离职申请书11篇
- 后备干部培养参考计划范文
- 高宝故障代码-中文
- 重庆市中学2023-2024学年物理八年级第一学期期末学业水平测试试题含解析
- 渗流力学进展与前沿
- 影城防汛紧急避险应急预案
- 中国慢性便秘诊治指南解读
- 2023年山西省普通高中学业水平考试数学试题( 含解析)
- 邻近铁路营业线施工安全监测技术规程 (TB 10314-2021)
- 电力设备典型消防规程通用课件
- 口腔急救知识培训课件
- 税法(第十版)课件:税法概述
- 期末复习(课件)人教PEP版英语五年级上册
评论
0/150
提交评论