版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、封面作者:PanHon glia ng仅供个人学习课程设计报告学院:天津理工大学华信软件学院专业名称:软件工程课程设计科目 _C 语言课程设计_所在班级:学生学号:学生姓名:指导教师:完成时间:课程设计成绩评定表对课程设计工作过程的简短介绍和自我评价在工程设计中,我认真地翻阅了C 语言学习教材,并在各大 IT 网站(csdn)搜寻源代码。然后就 是不断的改正编辑程序中的错误,不断的改正。体会 到了编程的艰辛。看着编辑的程序完美的运行,心中的喜悦是不言 而喻的。学生签名:2012年6月11日(以下由评定教师填写)质量评价指标(在相应栏目给分,优秀20-25分,良好15-20分,中等10-15分,
2、及格5-10分,不及格0-5分)评价项目评价质量优秀良好中等及格不及格工作量和态度(25分)实验、计算可靠性(25 分)文字和图表质量(25 分)总体评价(25 分)1评定成绩(百分制)目录设计任务与目标.4方案设计与论证.6程序框图或流程图,程序清单与调用关系 .9全部源程序清单 .11程序运行结果测试与分析28结论与心得参考资料311教师工资管理系统一、设计任务与目标任务:教师工资管理系统每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活
3、补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资 =应发工资-合计扣款。A、教师信息处理(1) 输入教师信息(2)插入(修改)教师信息:(3)删除教师信息:(4)浏览教师信息: 提示:具体功能及操作参考题 1。B、教师数据处理:(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房 租、所得税、卫生费、公积金等基本数据。(2)教师实发工资、应发工资、合计扣款计算。 提示:计算规则如题目。(3)教师数据管理 提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4)教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5
4、)教师综合信息输出 提示:输出教师信息到屏幕。案例论证:1. 完成此设计的目的意义 此题目能让我综合的考虑设计一个信息处理系统,要求设计出主函数, 确定调用函数,成员的函数设计。2. 目标教师数据处理:(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房 租、所得税、卫生费、公积金等基本数据。(2)教师实发工资、应发工资、合计扣款计算。 计算规则如题目。(3)教师数据管理 输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4)教师数据查询:输入教师号或其他信息, 即读出所有数据信息, 并显示出来。(5) 教师综合信息输出输出教师信息到屏幕二、方案设计与论证(1)主
5、函数的设计编写主函数的主要任务就是确定调用函数以及控制屏幕显示。定调用的函数根据要求,该系统至少应该实现五种基本功能:输出工作信息,删除工资信息,修改工资信息,查找工资信息,列出所有信息。实现以上任何一种功能都 必须要调用一个函数,根据标识符的定义规则,分别命名为原型 void show_all 。功能 展出所有录入文件参数无返回值无工作方式调用 char name10。float salary 。float allowanee 。float life 。 float tel 。float utilities 。 float rent 。float due 。 float health 。 f
6、loat fund 。 float total 。 float should。float actual 。原型 voidtea_new功能创建新的信息录入参数无返回值无工作方式创建 file原型 void searehmenu。功能查找菜单参数无返回值无工作方式 调用 void seareh_id 。void seareh_name。原型 void searchd 。功能 查找信息 按编号查找参数 无 返回值 整个信息 工作方式 调用 number 原型 void search_name 。功能 查找信息 按姓名查找参数 无返回值 整个信息工作方式 调用 char name原型 void de
7、lete_id功能 删除数据 按编号删除参数 无返回值 无工作方式 调用 id原型 void change_id 。功能 改变数据 按编号改参数 无返回值 整个录入信息工作方式 调用 id(2) 函数的设计 编写函数的目的就是编写一个能实现某种功能的函数供主函数调用函 数设计的主要任务是确定调用的成员函数以及屏幕显示。 确定调用的成员函数。 不同的函数调用的成员函数是不尽相同的,基本上每个函数都有一个 对应的成员函。char name10 。float salary。float allowance。float lifefloat telfloat utilities。float rent 。f
8、loat due 。float health 。3float fund。float total 。float should。float actual。(3)算法实现链表是算法的关键。在添加新的数据时,可以表头插入也可以表尾插 入,这两种插入方法决定了其他成员函数数据的处理。本系统中采取的是 表尾插入的方法。在删除某信息时需要判断数据是在表头,表中还是表 尾,如果删除的是在表中,则需要将删除的前后链表连接起来。统大量运 用了链表的 5 种基本操作:建立链表、链表的插入、删除、输入和查找。三、程序框图或流程图,程序清单与调用关系V#include#include #include #include
9、 /* 教师工资管理系统结构体定义 */ structteacherint number。char name10。float salary。float allowance。float life 。float tel 。float utilities 。float rent。float due。float health。float fund 。float total。float should。float actual。tea500 。int num=0。 FILE *fp 。void mainmenu()。void readfromfile() 。void writetofile() 。void
10、 show_all()。void tea_new ()。void searchmenu()。 voidsearch_id()。 voidsearch_name()。void delete_id()。void change_id()。void main()readfromfile() 。 while(1)mainmenu()。/ 主菜单void mainmenu()char choic。system(cls)。教师工资管理系统*nn)printf(t*n) printf(t 请选择 : n) 。choic=getch()。switch(choic)printf(tWELCOMEn) 。print
11、f(t1 输入教师信息n) 。printf(t2 修改教师信息n) 。printf(t删除教师信息n) 。printf(t4 查询教师信息n) 。printf(t保存并退出n) 。printf(t* *case1:tea_new (。) break。case2:change_id (。) break。case3:delete_id (。) break。case4:searchmenu(。) break。case5:writetofile()。 break。default:mainmenu()。/ 从文件导入void readfromfile()if(fp=fopen(teacher.bin,r
12、b)=NULL)printf(nt 教师工资信息文件不存在 )。if(fp=fopen(teacher.bin,wb)=NULL)printf(nt 建立失败 ) 。exit(0) 。elseprintf(nt 教师工资信息文件已建立 ) printf(nt 按回车键进入主菜单 ) 。 getch()。return。exit(0) 。fseek(fp,0,2)。if(ftell(fp)0)rewind(fp) 。for(num=0 。 !feof(fp) & fread(&teanum,sizeof(struct teacher),1,fp) 。num+)。printf(nt
13、教师工资信息文件导入成功 ) 。printf(nt 文件中无任何记录 )。printf(nt 按回车键进入主菜单 ) 。 getch()。return。/ 写入文件 void writetofile()int i 。if(fp=fopen(teacher.bin,wb)=NULL)printf(nt 打开文件失败 ) 。for(i=0。ivnum。i+)if(fwrite(&teai,sizeof(struct teacher),1,fp)!=1)printf(nt 文件写入错误 !n)。fclose(fp)。printf(nt 教师工资信息文件已保存 )。printf(nt 按任意键
14、退出程序 nt)。exit(0)。/添加记录 void tea_new()printf( 请输入教师号: )。 scanf(%d,&teanum.number)。 printf( 请输入教师姓名 :)。scanf(%s,)。printf( 请输入教师基本工资:)。scanf(%f,&teanum.salary) 。 printf( 请输入教师的津贴: )。scanf(%f,&teanum.allowance) 。 printf( 请输入教师的生活补贴: )scanf(%f,&teanum.life) 。printf( 请输入教师的电话费:
15、)。 scanf(%f,&teanum.tel) 。printf( 请输入教师的水电费: )。 scanf(%f,&teanum.utilities) 。 printf( 请输入教师的房租: )。 scanf(%f,&teanum.rent) 。printf( 请输入教师的所得税: )。 scanf(%f,&teanum.due) 。printf( 请输入教师的卫生费: )。 scanf(%f,&teanum.health) 。printf( 请输入教师的公积金: )。 scanf(%f,&teanum.fund) 。teanum.should
16、=teanum.salary +teanum.allowance +teanum.life。teanum.total=teanum.tel+teanum.utilities+teanum.rent+teanum.due+teanum.health+teanum.fund。teanum.actual=teanum.should-teanum.total。num+。printf(是否继续添加?(Y/N)。if(getch()=y)tea_new (。)return。/ 查询菜单void searchmenu()char choic。system(cls)。printf(nt- - 查询 -) 。p
17、rintf(nt-1 显示所有 -) 。printf(nt-2 按编号查询 - -) 。printf(nt- -3 按姓名查询 -) 。printf(nt- -4 返回主菜单 - -) 。printf(nt 请选择 :n)。choic=getch()。switch(choic) case1:show_all(。) break。 case2:search_id(。) break。case3:search_name() break。 case4:mainmenu(。) break。/ 显示所有void show_all()o(S21=nse9-Jg.& -宦乍urmuE。(一二二e9-J9
18、.& -B甘乍urmuE。(9=.2e J9.& -s亠化史曲乍urmuE(。ueMO_e.曰eJg.& -sft乍urmuEAJQes.曰J9.&-烟HMW乍urmuE。(Eeu.曰e2-=sf媒載乍urmuE。忘qEnuse9-=p&乍urmuE(+土。一 unuv。0 上)04(ognu)七O(=SO=E2SAS。二 u一o(=*吳ur)七dCQSned=)lu2SAS广左=)七 u一dEnuvL土)七。曰-烟H抿俅乍ur)七d。(_eo二二-糕口*44n乍ur)七d。(p_nous.曰-烟H抿归乍ur)七d。(pun二二J9.&-箱更Q乍
19、ur)七d O(_ese9-Jg.& -B曲H乍ur)七d。(npse9-Jg.& -法盲乍ur)七d。 (1U二二宕咚乍ur)七dprintf(nt 文件中无记录 ) 。printf(nt 按回车键回到主菜单 ) 。getch()。return。/ 按编号查询void search_id()int mark=0 。int i,a=0。int id 。printf(nt 请输入编号 :) 。scanf(%d,&id) 。for(i=0。ivnum。i+)if(id=teai.number)printf(nt* 以下是你要查找的教师工资信息 *n)。printf(nt 编
20、号: %d,teai.number)。printf(nt 姓名: %s,)。printf(nt 基本工资 : %.5f,teai.salary)。printf(nt 津贴: %.5f,teai.allowance)。printf(nt 生活补贴 : %.5f,teai.life) 。printf(nt 电话费: %.5f,teai.tel) 。printf(nt 水电费: %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得税: %.5f,teai.due)。printf(nt 卫生费: %.5f,
21、teai.health) 。printf(nt 公积金: %.5f,teai.fund)。printf(nt 应发工资 : %.5f,teai.should) 。printf(nt 合计扣款 : %.5f,teai.total) 。printf(nt 实发工资 : %.5f,teai.actual) 。*、printf(nt 按回车键回到主菜单 )mark+。getch()。return。if(mark=0)printf(nt 没有该编号的信息 ) 。printf(nt 按回车键返回主菜单 ) getch()。return。/ 按姓名查询void search_name()int mark=0
22、 。int i,a=0。char name10。printf( 请输入姓名 :) 。 scanf(%s,name)。for(i=a。ivnum。i+)if(strcmp(,name)=0)printf(nt*printf(nt* 以下是你要查找的教师工资信息 *n) 。printf(nt 编号 : %d,teai.number)。printf(nt 姓名 : %s,)。printf(nt 基本工资 : %.5f,teai.salary) 。printf(nt 津贴: %.5f,teai.allowance) 。printf(nt 生活补贴 : %.5f,te
23、ai.life) 。printf(nt 电话费 : %.5f,teai.tel) 。printf(nt 水电费 : %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得税 : %.5f,teai.due) 。printf(nt 卫生费 : %.5f,teai.health) 。printf(nt 公积金 : %.5f,teai.fund) 。printf(nt 应发工资 : %.5f,teai.should) 。printf(nt 合计扣款 : %.5f,teai.total) 。printf(nt 实发工资 : %
24、.5f,teai.actual) 。*、mark+。if(i+1)num)printf(tn 是否继续查找相同名字的教师信息 :(y/n)if(getch()=y)a=。continue。elsereturn。printf(nt*elseprintf(nt 按回车键返回主菜单 ) 。getch(。)return。if(mark!=0)printf(nt 没有相同姓名的教师信息记录 )printf(nt 按回车键回到主菜单 ) 。getch(。)return。elseprintf(nt 没有相同姓名的教师信息记录 )printf(nt 按回车键回到主菜单 ) 。getch(。)return。/
25、删除菜单void delete_id()int i,j 。int deletemark=0。int id 。printf(nt 情输入要删除的编号 :) 。 scanf(%d,&id) 。if(num=0)printf(nt 对不起,文件中无任何教师工资信息记录 )printf(nt 按回车键回到主菜单 ) 。getch(。)return。for(i=0。ivnum。i+)if(id=teai.number)printf(nt* 以下是你要删除的教师工资信息printf(nt 编号: %d,teai.number)。printf(nt 姓名: %s,)。printf(
26、nt 基本工资 : %.5f,teai.salary)。printf(nt 津贴: %.5f,teai.allowance)。printf(nt 生活补贴 : %.5f,teai.life) 。printf(nt 电话费: %.5f,teai.tel) 。printf(nt 水电费: %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得税: %.5f,teai.due)。printf(nt 卫生费: %.5f,teai.health) 。printf(nt 公积金: %.5f,teai.fund)。printf(nt
27、 应发工资 : %.5f,teai.should)。printf(nt 合计扣款 : %.5f,teai.total) 。printf(nt 实发工资 : %.5f,teai.actual)。 printf(nt 是否删除?(y/n)。if(getch()=y)*n)。for(j=i。jnum-1j+)teaj=teaj+1 。num-。deletemark+。printf(nt 删除成功 ) 。 printf(nt 是否继续删除 ?(y/n) 。 if(getch()=y) delete_id(。) return。elsereturn。continue。if(deletemark=0)pri
28、ntf(nt 没有该教师的记录 ) 。 printf(nt 是否继续删除 ?(y/n) 。 if(getch()=y) delete_id()。/ 修改菜单void change_id()int a=0,findmark=0 。int i 。int id 。printf(nt 请输入要修改教师的编号 :)scanf(%d,&id) 。for(i=a。ivnum。i+)if(id=teai.number)printf(nt* 以下是你要删除的教师工资信息findmark+。printf(nt 编号: %d,teai.number)。printf(nt 姓名: %s,)。
29、printf(nt 基本工资 : %.5f,teai.salary)。printf(nt津贴: %.5f,teai.allowance)。printf(nt 生活补贴 : %.5f,teai.life) 。printf(nt 电话费: %.5f,teai.tel)。printf(nt 水电费: %.5f,teai.utilities) 。printf(nt 房租: %.5f,teai.rent) 。printf(nt 所得税: %.5f,teai.due)。printf(nt 卫生费: %.5f,teai.health)。printf(nt 公积金: %.5f,teai.fund) 。prin
30、tf(nt 应发工资 : %.5f,teai.should)。printf(nt 合计扣款 : %.5f,teai.total) 。printf(nt 实发工资 : %.5f,teai.actual)。i=i。break。else continue。*n) 。printf(nt 请重新输入以下信息 :n)。printf( 请输入教师号: )。scanf(%d,&teanum.number)。printf( 请输入教师姓名 :)。scanf(%s,)。printf( 请输入教师基本工资:)。scanf(%f,&teanum.salary) 。printf(请
31、输入教师的津贴: )。 scanf(%f,&teanum.allowance) 。 printf( 请输入教师的生活补贴: )。 scanf(%f,&teanum.life) 。 printf( 请输入教师的电话费: )。 scanf(%f,&teanum.tel) 。 printf( 请输入教师的水电费: )。 scanf(%f,&teanum.utilities) 。 printf( 请输入教师的房租:)。scanf(%f,&teanum.rent) 。printf( 请输入教师的所得税:)。scanf(%f,&teanum.due) 。 p
32、rintf( 请输入教师的卫生费: )。scanf(%f,&teanum.health) 。 printf( 请输入教师的公积金: )。scanf(%f,&teanum.fund) 。 teanum.should =teanum.salary+teanum.allowance +teanum.life。teanum.total=teanum.tel+teanum.utilities+teanum.rent+teanum.due+teanum.health+teanum.fund。teanum.actual=teanum.should-teanum.total。 printf(n
33、t 以下是你修改后的教师工资信息 :n) 。findmark+。printf(nt_。)printf(nt 编号 : %d,teai.number) 。printf(nt 姓名 : %s,)。printf(nt 基本工资 : %.5f,teai.salary) 。printf(nt 津贴: %.5f,teai.allowance) 。printf(nt 生活补贴 : %.5f,teai.life) 。printf(nt 电话费 : %.5f,teai.tel) 。printf(nt 水电费 : %.5f,teai.utilities) 。printf(nt 房租: %.5f,
34、teai.rent) 。printf(nt 所得税 : %.5f,teai.due) 。printf(nt 卫生费 : %.5f,teai.health) 。printf(nt 公积金 : %.5f,teai.fund) 。printf(nt 应发工资 : %.5f,teai.should) 。printf(nt 合计扣款 : %.5f,teai.total) 。printf(nt 实发工资 : %.5f,teai.actual) 。printf(nt_ 。)printf(nt 按回车键回到主菜单 ) 。 getch()。return。五、程序运行结果测试与分析进入页面输入输出修改查询六、结论
35、与心得设计量很大,也很繁杂,整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数。链表的建立实现输入信息功能,链表是算法的关键。在 添加新的数据时,可以表头插入也可以表尾插入,这两种插入方法决定了其他 成员函数数据的处理。因为第一做如此大的编程, 对其的不适应是不言而喻的。 能找到的资料有 限,哪怕是将其融合都要耗费巨大的时间和精力。原来编程真的是需要熬夜 的。因为在那时的思路不一定到了下一天还那么清晰。虽然是一次小小的编程工程,却让我感受颇深。编程工作不光挑战的是知识 的储备,更多的是挑战耐力。谭浩强等编著北京:清华大学出版社机械工业出版社 158-169 页八.特别鸣谢CSDN IT 社区版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整 理。版权为潘宏亮个人所有This article in el
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医药研发转包协议书
- 全过程技术入股合同
- 胆囊癌护理试题及答案
- 高血压治疗与护理策略
- 地铁盾构隧道下穿热力管沟沉降安全评估报告
- 2026学年江西省九江市五年级语文期末通关高频考点卷(详细参考解析)详细答案和解析
- 2026年全国教师资格之小学教育学教育心理学考试专项特训题附答案
- 高级技师护理员:护理操作规范与标准
- 2026学年浙江省杭州市四年级语文期末自测创新思维题附答案详细答案和解析
- 洗车服务公司洗车项目成本控制管理制度
- 中国竹编艺术智慧树知到期末考试答案章节答案2024年浙江广厦建设职业技术大学
- (正式版)HGT 20656-2024 化工供暖通风与空气调节详细设计内容和深度规定
- 丢车包赔协议
- (完整版)小学二年级英语阅读理解
- 电除尘器工作原理
- 项目地下室顶板回顶专项施工方案图文稿
- 2023-2024学年湖北省宜昌市小学语文六年级期末评估题附参考答案和详细解析
- 大班幼儿自主建构游戏《乐建望淮塔》 课件
- GB/T 4547-1991玻璃容器抗热震性和热震耐久性试验方法
- GB/T 18882.1-2002离子型稀土矿混合稀土氧化物化学分析方法草酸盐重量法测定稀土总量
- FZ/T 07019-2021针织印染面料单位产品能源消耗限额
评论
0/150
提交评论