




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 班级学号: 指导教师: 完成日期: 1 课程设计目的与要求高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、传统的、面向过程的优秀编程语言C语言为基础,学习程序设计的基本概念和方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。课程设计是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。经过该实践环节,培养学生的探索精神和创
2、新能力。通过答辩训练学生的综合表达能力。参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。具体如下:(1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯;(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面:l 程序的总体设计和算法分析。l 程序流程图、函数说明l 源程序代码清单l 测试数据
3、和测试过程记录l 遇到的问题及解决方法分析l 课程设计小结2 问题描述设计一个职工信息管理系统,其中:职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。功能包括:(1)录入员工资料(2)浏览员工资料(3)员工信息查询(4)修改员工资料(5)员工信息排序(6)员工信息删除3总体设计3.1 功能分析系统提供主界面,各种功能操作以独立的函数为基础,通过把职工信息存入到一个结构体中来对职工信息进行管理,同时对操作结果在计算机中做永久保存。3.2 系统使用的主要函数menu(); /*主菜单*/void enter(); /*输入*/browse(); /*浏览*/sear
4、ch(); /*查询*/search1(); /*按职工工号查询*/search2(); /*按职工姓名查询*/modify(); /*修改职工信息*/modify_data(); /*修改职工信息*/void sort(); /*对职工信息进行排序*/void import(); /*对于追加的信息进行保存*/void save(); /*信息的保存*/int load(); /*加载函数*/ void del(); /*职工信息的删除*/3.3 系统使用的主要数据结构struct worker /*定义结构体函数*/ char id50; /*定义工号*/ char name20; /*定
5、义名字*/ char sex10; /*定义性别*/ char age10; /*定义年龄*/ char edu20; /*定义学历*/ char salary10; /*定义工资*/ char address20; /*定义地址*/ char tel20; /*定义电话号码/workerN;4 详细设计4.1 程序总体结构图图4.1主控模块4.2 程序流程图图4.2.1 主菜单系统 图4.2.2员工信息录入模块 图4.2.3员工信息查询模块 图4.2.4员工信息修改模块 图删除员工信息模块 参考文献1吉顺如.C程序设计教程与实验. 北京: 清华大学出版社 , 2011年6月2吉顺如.c程序设
6、计习题集与课程设计指导.北京: 电子工业出版社,2012年9月3谭浩强. c程序设计.第四版.北京: 清华大学出版社, 2010年6月附录 系统源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 50struct worker char id50; char name20; char sex10; char age10; char edu20; char salary10; char address20; char tel20;wor
7、kerN;/定义一个结构体变量worker来存放职工信息menu();/主菜单函数void enter();/录入职工信息函数browse();/浏览职工信息函数search();/查询职工信息函数search1();/按工号查询职工信息函数search2();/按姓名查询职工信息函数modify();/修改职工信息函数modify_data();/修改职工信息函数void sort();/职工信息排序函数void del();/删除职工信息函数void import();/职工信息录入保存函数void save();/职工信息保存函数int load();/加载职工信息函数main() pr
8、intf("t n"); printf(" t 欢迎使用职工信息管理系统 n"); menu(); menu() int n; printf("n n"); printf("t 1.录入员工资料 n"); printf("t 2.浏览员工资料 n"); printf("t 3.员工信息查询 n"); printf("t 4.修改员工记录 n"); printf("t 5.员工信息排序 n"); printf("t 6.删除员工
9、信息 n"); printf("t 7.退出信息系统 n"); printf("请选择对应选项: "); scanf("%d",&n); switch(n) case 1:enter();break; /录入 case 2:browse();break; /浏览 case 3:search();break; /查询 case 4:modify();break; /修改 case 5:sort();break; /排序 case 6:del();break; /删除 case 7:exit(0); /退出 void e
10、nter() /输入模块 int i,n,w; printf("输入多少个职工信息(0-%d):",N-1); scanf("%d",&n); printf("n 请输入职工信息nn"); for(i=0;i<n;i+) printf("工号:");scanf("%s",workeri.id); printf("姓名:");scanf("%s",); printf("性别:");scanf(&quo
11、t; %s",&workeri.sex); printf("年龄:");scanf("%s",&workeri.age); printf("工资:");scanf("%s",workeri.salary); printf("学历:");scanf("%s",&); printf("住址:");scanf("%s",workeri.address); printf("电话:
12、");scanf("%s",workeri.tel); printf("n"); if(i!=0) import(n);/以追加方式保存信息 printf("nnt信息已保存!.nn"); printf("请选择操作:nnt1).浏览全部t2).返回:n"); scanf("%d",&w); if(w=1)browse();/浏览信息 else menu();/返回主菜单browse() /浏览模块 int i,n; n=load();/数据的个数 printf("n
13、t工号 姓名 性别 年龄 工资 学历 地址 电话号码n"); for(i=0;i<n;i+) printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workeri.id,,workeri.sex,workeri.age,workeri.salary,,workeri.address,workeri.tel); printf("t这里有 %d 条记录.n",n); printf("n按任意键返回.n"); getch(); menu();
14、search() /查询模块 int c; do printf("n查询方式=>nn1).工号 2).姓名 "); printf("请选择:n"); scanf("%d",&c); if(c>2|c<1) printf("n没有此选项,请重新输入!n"); getchar(); while(c>2|c<1); switch(c) case 1:search1();break; /按工号查询模块 case 2:search2();break;/按姓名查询模块 search1()
15、/按工号查询模块 int i,n,k,w1=1,w2; struct worker s; n=load(); do k=-1; printf("nn输入要查询的工号! id:"); scanf("%s",s.id); printf("nt工号 姓名 性别 年龄 工资 学历 地址 电话号码n"); for(i=0;i<n;i+) if(strcmp(s.id,workeri.id)=0)/查找要查询的职工编号 k=i; printf("%10s %10s %5s %5s %8s %6s %10s %10sn",
16、workerk.id,,workerk.sex,workerk.age,workerk.salary,,workerk.address,workerk.tel); break; if(k=-1) printf("n无此记录,输入有误!n");printf("n按任意键返回主菜单n");getch(); menu(); if(k!=-1) printf("nn接下来干什么?nt1).查找另一个 2).返回菜单n"); scanf("%d",&w2); switch
17、(w2) case 1:search1();break; case 2:menu();break; while(w2=1); menu();search2() /按姓名查询模块 int i,n,k,w1=1,w2; struct worker s; n=load(); do k=-1; printf("nn请输入你要查询的姓名:n"); scanf("%s",); printf("nt工号 姓名 性别 年龄 工资 学历 地址 电话号码n"); for(i=0;i<n;i+) if(strcmp(,work
18、)=0)/查找要查询的职工姓名 k=i; printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workerk.id,,workerk.sex,workerk.age,workerk.salary,,workerk.address,workerk.tel); if(k=-1) printf("n无此记录,输入有误!n");printf("n按任意键返回主菜单n");getch(); menu(); if(k!=-1) printf(&q
19、uot;nn接下来干什么?nt1).查找另一个 2).返回菜单n"); scanf("%d",&w2); switch(w2) case 1:search2();break; case 2:menu();break; while(w2=1); menu();modify() /修改模块 struct worker s; int i,n,k,w0,w1; n=load(); do k=-1; printf("nt工号 姓名 性别 年龄 工资 学历 地址 电话号码n"); for(i=0;i<n;i+) printf("%1
20、0s %10s %5s %5s %8s %6s %10s %10sn",workeri.id,,workeri.sex,workeri.age,workeri.salary,,workeri.address,workeri.tel); do printf("nn输入要修改的职工工号! 工号:"); scanf("%s",s.id); for(i=0;i<n;i+) if(strcmp(s.id,workeri.id)=0)/查找要修改的数据 k=i; /找到要修改的记录 s=workeri;
21、/把workeri备份,以便恢复 if(k=-1) printf("nn未找到请重新输入:n");while(k=-1); w1=modify_data(k,n); /修改记录并返回保存控制值w1,w1=1表示用户已确认修改 if(w1=1) printf("n操作成功!是否继续修改?nnt1).是 2).否,保存退出n"); scanf("%d",&w0); while(w0=1); menu();modify_data(int i,int n) /修改函数 int c,w1; do printf("n修改选项=&
22、gt;nn 1).工号 2).姓名 3).性别 4).年龄 5).工资 6).学历 7).地址 8).电话 9).取消"); printf("n请选择:n"); scanf("%d",&c); if(c>9|c<1) printf("n选择错误!请重新输入!"); getchar(); while(c>9|c<1); do switch(c) case 1:printf("工号");scanf("%s",workeri.id);break; case 2
23、:printf("姓名:");scanf("%s",);break; case 3:printf("性别:");scanf("%s",workeri.sex);break; case 4:printf("年龄:");scanf("%s",workeri.age);break; case 5:printf("工资:");scanf("%s",workeri.salary);break; case 6:printf(
24、"学历:");scanf("%s",);break; case 7:printf("住址:");scanf("%s",workeri.address);break; case 8:printf("电话:");scanf("%s",workeri.tel);break; case 9:menu();break; printf("nt工号 姓名 性别 年龄 工资 学历 地址 电话号码n"); printf("%10s %10s
25、%5s %5s %8s %6s %10s %10sn",workeri.id,,workeri.sex,workeri.age,workeri.salary,,workeri.address,workeri.tel); printf("n确定?nnt1).是 2).否,重新修改 n"); scanf("%d",&w1); if(w1=1) save(n);/保存职工信息 while(w1=2); return(w1);void sort() /*排序函数*/ int i,j,k; int m
26、=load(); struct worker c; printf("工号排序:1 工资排序:2n"); scanf("%d",&k); switch(k) case 1: for(i=0;i<m-1;i+)/冒泡排序法排序职工工号 for(j=0;j<m-1-i;j+) if(strcmp(workerj.id,workerj+1.id)>0) c=workerj; workerj=workerj+1; workerj+1=c; printf("nt工号 姓名 性别 年龄 工资 学历 地址 电话号码n");
27、for(j=0;j<m;j+) printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workerj.id,,workerj.sex,workerj.age,workerj.salary,,workerj.address,workerj.tel); printf("n按任意键返回.n"); getch(); menu(); case 2: for(i=0;i<m-1;i+)/冒泡排序法排序职工工资 for(j=0;j<m-1-j;j+) if(atoi(
28、workerj.salary)>atoi(workerj+1.salary)/atoi把字符串转换成整型数 c=workerj; workerj=workerj+1; workerj+1=c; printf("nt工号 姓名 性别 年龄 工资 学历 地址 电话号码n"); for(j=0;j<m;j+) printf("%10s %10s %5s %5s %8s %6s %10s %10sn",workerj.id,,workerj.sex,workerj.age,workerj.salary,,
29、workerj.address,workerj.tel); printf("n按任意键返回.n"); getch(); menu(); void del()/删除职工信息 int n,i,c; char id50,name20; FILE *fp; n=load(); printf("按工号删除: 1 n"); printf("按姓名删除: 2 n"); scanf("%d",&c); switch(c) case 1:/按工号删除 if(fp=fopen("worker.txt",&q
30、uot;wb")=NULL) printf("n文件打开错误!n"); exit(0); printf("请输入要删除的员工号:"); scanf("%s",id); for(i=0; i<n;i+) if(strcmp(id,workeri.id)=0) strcpy(workeri.id,"del");/把要删除的工号标记为“del” for(i=0;i<n;i+) if(strcmp(workeri.id,"del")!=0) if(fwrite(&worke
31、ri,sizeof(struct worker),1,fp)!=1)/不删除的内容写入文件 printf("无法输入!n"); printf("保存成功!n"); fclose(fp); browse(); case 2:/按姓名删除职工信息 if(fp=fopen("worker.txt","wb")=NULL) printf("n文件打开错误!n"); exit(0); printf("请输入要删除的姓名:"); scanf("%s",name); for(i=0; i<n;i+)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经纪公司和解协议书
- 购买地皮建房协议书
- 2025水电工私家装修合同样本
- 2025私人劳务合同范本
- 高级审计师考试的有效沟通能力试题及答案
- 护理管理中的风险评估试题及答案
- 高二期末测试卷及答案
- 《2025年起正式实施的事业单位劳动合同解除条例》
- 飞机解剖学及维护要求试题及答案
- 高级会计综合能力试题及答案
- 康复技术考试试题及答案
- 炊事人员考试题及答案
- 《埃菲尔铁塔》课件
- 形象设计概论试题及答案
- (三模)南通市2025届高三第三次调研测试英语试卷(含答案解析)
- 红细胞生成素靶向治疗策略-全面剖析
- 浙江浙达环境科技有限公司年收集、贮存及转运危险废物5000吨的搬迁项目环评报告
- 2025年留置辅警笔试真题及答案
- 不同来源硫酸软骨素的化学结构、抗氧化与降脂活性对比
- 小学政治 (道德与法治)人教部编版二年级下册14 学习有方法教学设计
- 广东省2024-2025学年佛山市普通高中教学质量检测英语试卷及答案(二)高三试卷(佛山二模)
评论
0/150
提交评论