ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:19.01KB ,
资源ID:2523628      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2523628.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计.docx

1、C语言课程设计C语言课程设计链表操作设计链表节点数据为: 学号: char num10 语文: int chi 数学: int math 总分: int sum链表设计题:l 定义相应的数据结构,设计一个简单的菜单;l 创建两个已排序的链表;l 输出两个链表;l 按序合并两个链表并输出;l 合并链表保存到文件中;2)数据库管理系统设计题目:工资管理管理系统从文件读取数据,提供新增、删除、修改和显示等功能,并将修改后的数据写入一个新的文件。工资单如下:工号:long 4bytes姓名:char 20bytes基本工资:float 4bytes津贴:float 4bytes扣税:float 4by

2、tes实发工资:float 4bytes系统功能模块如下:(1) 建立工资表(单独一个执行文件创建数据库);(2) 将工资表读入到一个结构体数组中,并计算;(3) 菜单实现以下功能:计算每个职工的扣税;基本工资+津贴的值:小于1500元,扣税为0;小于2000元,扣税为(基本工资+津贴-1500)*5%;大于2000元的,扣税为(基本工资+津贴-1500)*5%+(基本工资+津贴-2000)*10%计算职工的实发工资;显示各职工工资信息;新增一个职工工资信息;修改一个职工工资信息;(按工号)查询职工工资信息(按工号)。(4) 修改后的工资表写入到另一个新文件中。链表题源代码:#include#

3、include#include#include#define NULL 0#define Z goto X; #define Z1 goto N;int R=0,g=0;struct student char name10;int Chi;int Math;int sum;struct student *next;struct student *ss;struct student *build(void)struct student *h,*p,*p1;char x=0,y=-1;int n=0;int i=0,o100;i=n+1;printf(t*输入错误时,重输请按0;输入完毕按-1确定

4、*n);p=p1=(struct student *)malloc(sizeof(struct student);X:printf(t请输入第1个学号,注意每个学号的长度要一样长!n); scanf(%s,p-name); if(R=1) if(strlen(p-name)!=g) printf(tt-学号长度与第一次不同,请重输-nn);Z o0=0;o=strlen(p-name); if(strcmp(x,p-name)=0)Zprintf(t*请输入语文成绩n); scanf(%d,&p-Chi);if(p-Chi=0)Z printf(t*请输入数学成绩n); scanf(%d,&p

5、-Math);if(p-Math=0)Zp-sum=p-Chi+p-Math; h=NULL;R+;while(1)n=n+1;i=n+1;if(n=1)h=p;else p1-next=p;p1=p;p=(struct student *)malloc(sizeof(struct student);N:printf(t请输入第%d个学号,输入完毕按-1n,i); scanf(%s,p-name);o=strlen(p-name); if(strcmp(y,p-name)=0)break; if(strcmp(x,p-name)=0)Z1 if(o!=o)printf(t*输入的学号长度有误,

6、请重输*n);Z1 if(strcmp(p1-name,p-name)0)printf(tt你输入的学号有误,学号按升序输入!n);Z1printf(t*请输入语文n);scanf(%d,&p-Chi);if(p-Chi=0)Z1printf(t*请输入数学成绩n); scanf(%d,&p-Math);if(p-Math=0)Z1p-sum=p-Chi+p-Math;p1-next=NULL;return(h);struct student *c(struct student *head,struct student *p2)struct student *h11,*h12,*h2,*p1;

7、p1=head;while(p2!=NULL)h2=p2;p2=p2-next;h12=p1; while(strcmp(h2-name,h12-name)0&(h12-next!=NULL) h11=h12;h12=h12-next; if(strcmp(h2-name,h12-name)next=h2; h2-next=h12; elseh12-next=h2;h2-next=NULL; printf(ttn*两个链表已按学号从小到大排序*n);return(head); void print(struct student *head)struct student *p=head;if(h

8、ead!=NULL)printf(nt学号 语文 数学 总分n);doprintf(t%s%5d%5d%5dn,p-name,p-Chi,p-Math,p-sum);p=p-next;while(p!=NULL);void save(struct student *e)char m=学号 语文 数学 总分; FILE *p; p=fopen(d:链表.txt,w);fprintf(p,%sn,m); while(e!=NULL) fprintf(p,%s%5d%5d%5dn,e-name,e-Chi,e-Math,e-sum);e=e-next; fclose(p); printf(tt数据已

9、保存在d盘链表.txt文件中n);printf(ntt*程序运行结束!*n);void main()int m;struct student *s1,*s2,*head;A:doprintf(ttt欢迎进入学生信息链表管理系统nn); printf(ttt1.创建两个链表nttt2.合并输入的两个链表nttt3.确认完成操作nttt0.退出程序n);printf(tt*注意请先创建两个链表后再执行合并任务*n);if(m=0)exit(0); printf(ttt-请输入要操作的序号-n);scanf(%d,&m);if(m=3)goto B;ss=s1;if(m=1)printf(tt注意:

10、学号按从小到大输入n); printf(tt请输入第一个链表数据nn);s1=build();printf(t第一个链表为n);g=strlen(s1-name);print(s1);printf(tt请输入第二个链表数据nn);s2=build();printf(t第二个链表为n);print(s2);if(m=2)head=c(s1,s2);print(head);if(m!=1&m!=2&m!=0) printf(ttt*输入错误*n);if(m=1|m=2)printf(t-若继续操作请继续选择相应的序号-n);while(m!=0);B:if(m!=0) printf( 是否保存到文

11、件?1,保存;2,取消并退出。nn);scanf(%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. 创建职工数据代码:#include stdio.h#includestring.h#define X goto E;struct Tlong int num;char name20;float jt;float jb;float

12、 ks;float sf;struct T s100;void main() int i=0,c;char d=-1; FILE *fp; fp=fopen(d:x.txt,w);printf(ttt欢迎使用职工信息输入系统nn);printf(tt请分别输入员工的工号 姓名基本工资 津贴nnttt请分别输入正确类型的数据n);printf(tt输入完毕后,以0为终止,重新输入此工号信息请输入-1nn); for(i=0;i+) c=i+1;E: printf(tt请依次输入第%d个员工的工号、姓名、基本工资、津贴n,c); scanf(%ld,&s.num);if(s.num=0)break

13、;if(s.num=-1)Xscanf(%s,s.name);if(strcmp(d,s.name)=0)X scanf(%f,&s.jb);if(s.jb=-1)X scanf(%f,&s.jt);if(s.jt=-1)X fprintf(fp,%ld %s %f %fn,s.num,s.name,s.jb,s.jt); fclose(fp); printf(tt数据已保存在d盘下n);2. 职工数据库管理源代码:#include stdio.h#include string.h#include math.h#include stdlib.hint i=0;struct GZlong int

14、 num;char name20;float jb;float jt;float ks;float sf;struct GZ s100;void Read() FILE *fp;float M;struct GZ s1;fp=fopen(d:x.txt,r);if(fp=NULL)printf(ttt文件不存在请先建立后再执行本程序n);exit(0); while( fscanf(fp,%ld %s %f %fn,&s1.num,s1.name,&s1.jb,&s1.jt)!=EOF) s.num=s1.num;s.jb=s1.jb;s.jt=s1.jt;strcpy(s.name,s1.n

15、ame);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);printf(tt*n);void Disp()int c;printf(ttt工号 姓名 基本工资 津贴 扣税 实发工资n);for(c=0;ci;c+)printf(ttt%ld %8s %7.3f %7.3f %7.3f %7.3fnn,sc.num,sc.name,sc.jb,sc.jt,s

16、c.ks,sc.sf);void Append()char b=0;float M;int a,k1;X:printf(tt您正进入职工信息增加系统,1.退出;按其它任意数字键继续n);scanf(%d,&k1);if(k1=1)goto LLL;printf(tt请输入要增加职工的工号n );scanf(%ld,&s.num);if(s.num=0)goto X; printf(tt请输入职工的名字n); scanf(%s,s.name);if(strcmp(b,s.name)=0)goto X; printf(tt请输入此职工的基本工资n);scanf(%f,&s.jb);if(s.jb0

17、.000001)goto X;printf(tt请输入此职工的津贴n);scanf(%f,&s.jt);if(s.jt0.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.num,s.name,s.jb,s.jt,s.ks,s.sf);i+;do print

18、f(ttt是否再新增一个职工工资信息?ntt1.是 2.否);scanf(%d,&a);if(a=1)goto X;else if(a=2)break;else printf(tt您输入有误,请重新选择n);while(1);LLL:;void Modify()int k,k1,k2,p=0;float M;char b=0,c=00;W:printf(tt*请输入要修改的职工工号,重输请按“0”,退出请按“-1”*nn); scanf(%ld,&k);if(k=0)goto W; if(k=-1)goto L;for(k1=0;k1i;k1+)if(sk1.num=k)k2=k1;p=1;b

19、reak;if(p=0)printf(ttt-此职工工号不存在,请重输!-n);goto W;p=0; printf(tt-请输入此职工新的姓名n);scanf(%s,sk2.name);if(strcmp(sk2.name,b)=0)goto W;printf(tt-请输入此职工新的基本工资n);scanf(%f,&sk2.jb);if(sk2.jb0.0000001)goto W;printf(tt-请输入此职工新的津贴n);scanf(%f,&sk2.jt);if(sk2.jt0.0000001)goto W;M=sk2.jb+sk2.jt;if(M=1500)sk2.ks=0;else

20、 if(M=2000)sk2.ks=(M-1500)/20;else sk2.ks=(M-1500)/20+(M-2000)/10; sk2.sf=M-sk2.ks;printf(职工工号%ld 修改后为:ntt名字:%s 基本工资:%6.3f 津贴:%6.3f 扣税:%6.3f 实发工资:%6.3fn,sk2.num,sk2.name,sk2.jb,sk2.jt,sk2.ks,sk2.sf);O:printf(tt请确认是否修改正确:1.确认并执行其它任务;2.重新查找修改n); scanf(%d,&k1); if(k1=1)printf(tt修改成功,请注意保存数据!n); else if

21、(k1=2)goto W; else printf(tt无此选项请重新执行本次操作!n);goto O;L:;void Query()int k,number,flag=0,k1;U:printf(tt*进入查询系统,是否继续?* 2.no ;按其它任意数字键继续。n);scanf(%d,&k1);if(k1=2)goto LL;printf(-请输入要查询职工工号n);scanf(%d,&number);for(k=0;ki;k+)if(number=sk.num)flag=1;printf(要查询的职工信息为:n姓名:%s 基本工资:%8.3f 津贴:%8.3f 扣税:%8.3f 实发工资

22、:%8.3fn,sk.name,sk.jb,sk.jt,sk.ks,sk.sf);break;if(flag=0)printf(tt您输入的学号无法找到,是否重新查找?n);doprintf(ttt1.重新查找;2.否。n);scanf(%d,&number);if(number=1)goto U;else if(number=2)break;else printf(ttt-输入有误,请重新选择n);while(1);else doprintf(tt是否继续查找?1.继续。2.否。n);scanf(%d,&number);if(number=1)goto U;else if(number=2)

23、break;else printf(ttt-输入有误,请重新选择n);while(1);LL:;void Save()int c;char sen50=学号 姓名 语文 数学 总分 名次n;FILE *fp1; fp1=fopen(d:y.txt,w);fprintf(fp1,%s,sen);for(c=0;ci;c+)fprintf(fp1,%ld %s %6.3f %6.3f%6.3f %6.3fn,sc.num,sc.name,sc.jb,sc.jt,sc.ks,sc.sf);fclose(fp1);printf(tt *文件已保存至d盘下*n);printf(tt*n);void ma

24、in()int ch,ff=0,xx=0;printf(tt*欢迎进入职工信息管理系统*nn);doLL: if(xx=0)printf(ttt请先读取文件 Read a file?ntttt1.yes 2.no n);else printf(ttt 是否继续操作?nttt 1.no and exit; 2.yes n); scanf(%d,&ch);if(ch=1&xx!=0)exit(0); if(ch=2) break;else if(ch=1)Read();ff=1; else printf(tt您输入有误,请重输!n);goto LL; xx+;while(1);if(ff=1)me

25、:printf(ttt 请输入要操作的序号: n); printf(ttt1.显示所有职工的信息n); printf(ttt2.新增职工的信息n); printf(ttt3.修改职工的基本信息n); printf(ttt4.查询职工的信息n); printf(ttt0.退出管理系统nn); printf(ttt请选择(04)间的序号操作);scanf(%d,&ch);switch(ch) case 1:Disp();break; case 2:Append();break; case 3:Query();break; case 4:Modify();break; case 0:WW:printf(tt是否保存? 1.是 2.否并退出 3.重新选择操作n);scanf(%d,&ch);if(ch=2)exit(0); else if(ch=1)Save();printf(tt是否继续其它操作?1.是 2.否n); scanf(%d,&ch); if(ch=2)exit(0);else goto me; else if(ch=3)goto me; else printf(ttt 无此选择,请重选!n);goto WW;if(ch4)printf(nnnttplease choose again!nn);goto me;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2