1、C 语言程序设计姓名: 学号: 班级: 学院: 1C 语言程序设计实践课程要求一、课程综述利用 C 语言的编程知识和编程技巧,完成具有一定难度、一定编程量的课程设计题目,从而掌握高级编程语言的知识和编程技术,掌握程序设计的思想和方法,具备利用计算机求解实际问题的能力。为 C+等编程技术的学习奠定必要的实践基础。二、课程目标1、通过本课程的实践,培养自学、独立思考、分析和解决问题的能力。2、通过对需求的分析,确立方案,编制程序与调试程序,初步掌握 C 程序设计的方法。3、能熟练调试程序,完成课题任务。4、根据个人的设计调试过程,撰写设计报告。三、课程内容设计职工信息管理系统软件,满足以下要求:1
2、. 可以在 DOS 命令行下完成下列操作:a) 可录入职工信息:工号(若工号已存在则提示) 、姓名(拼音字母)、电话(含 0开头号码) ,并显示是否操作成功;b) 可删除指定工号的信息,并显示是否操作成功;c) 可修改指定工号的各项信息,并显示是否操作成功; d) 可查询指定工号的信息,操作后输出信息到屏幕;e) 可输出全部职工信息到屏幕;f) 所有职工信息存储到文本文件,程序再次打开时自动读取文本文件中的信息;2. 软件的设计必须满足以下要求:a) 必须使用附录规定的程序流程、函数名称、调用关系和数据结构与定义名称;b) 软件至少包含.c 和.h 文件共 3 个以上;流程与模块2数据结构 1
3、.职工信息详细内容使用 malloc 开辟的结构体类型数据存储struct workerchar number20; char name20; 写入内存中的职工信息到文件write()读取文件中的职工信息到内存read()程序结束main()程序入口main()录入(修改内存中数据)input()显示菜单接受指令menu()查询(读取内存中数据)lookup()修改(修改内存中数据)modify()删除(修改内存中数据)delete()输出全部(读取内存中数据)view()3char tel20;2.索引使用一维指针数组存储 worker *index10000 (人数 10000) 四、信息
4、描述职工信息包括职工号、姓名、电话等。五、解决方案1、首先进行需求分析,搞清楚系统功能和任务;2、然后在总体设计中确定模块结构、划分功能模块,将软件功能需求分配给所划分的最index0index1index2index3index4worker * index 100002000206021200000000002000201101zhangsan031578955552060201102lisi031578966662120201103wangwu031578977774单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3、在详细设计中,为每个模块确定采用的
5、算法,选择适当的工具表达算法的过程(流程图)来描述模块的详细过程。确定每一模块采用的数据结构和模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口;4、根据分析编写 C 语言代码。六、进度安排1、 分析设计阶段。在老师的指导下自主学习和钻研问题,明确设计要求,找出现实方法。按照需求分析、总体设计、详细设计几个步骤进行。2、 编码调试阶段。根据设计分析方案编写 C 语言代码,然后调试该代码,实现课题要求的功能。3、 总结报告阶段。总结设计工作,写出课程设计说明书,包括需求分析、总体设计、详细设计、编码、测试的步骤和内容。4、 考核阶段。七、写课程设计总结课程设计报告要求总结报
6、告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结和参考资料等。八、参考资料C 程序设计(第三版) 谭浩强 著 清华大学出版社C 程序设计题解与上机指导(第三版 ) 谭浩强 编著 清华大学出版社九程序设计如下1 主函数主函数设计要简洁,只提供部分函数的调用。其中各功能模块用菜单方式选择.2 录入(修改内存中数据) 录入所用的职工信息。3 删除(修改内存中数据) 根据职工号删除职工信息。4 修改(修改内存中数据) 根据职工号查找修改职工信息。5 查询(读取内存中数据) 根据职工号查询职工信息。56.数据输出 将所有职工信息输出到屏幕上。7.运行与测试报告
7、:三 后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。这次课程设计让我掌握了许多的有用知识。首先我能够熟练的应用软件 Microsoft Visual C+ 6.0 了。再就是我能够根据自己的需要设计程序,这将对我以后的生活有非常重要的影响。同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。在设计中,我遇到了不少的困难,比如不能清晰的建立设计模块,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。还有就是起初我设计的程序总是有错误,我细心的修改,不断的改进,最终我做出了自己非常理想的程序!附录:源程序清单#include #include #in
8、clude void main();void input();void read();void write();void menu();void delet();void modify();void lookup();void view(); int count;struct workerchar number20; char name20; char tel20;6*index10000; /.h 文件#include“1.h“void main()char a;int t,b;read();menu();doprintf(“选择操作步骤(1-5):“);scanf(“%d“,switch(
9、t)case 1:printf(“n“);input();break;case 2:printf(“n“);delet();break;case 3:printf(“n“);modify();break;case 4:printf(“n“);lookup();break;case 5:printf(“n“);view();break;default :break; printf(“n“);printf(“继续操作按 1,退出按 0n“);scanf(“ %c“,if(a=1)menu(); b=1;else b=0;while(b=1);write(); /.c1 文件# include“1.
10、h“void read() FILE *fp;int i;7count=-1;if(fp=fopen(“zhigong.txt“,“r“)=NULL) /p346printf(“cannot open filen“);exit(0);for(i=0;i=1count=n;for (i;in;i+) b=0;indexi=(struct worker *)malloc(sizeof(struct worker);printf(“请输入第%d 个职工工号:“,i+1);scanf(“%s“,(*indexi).number);for (a=0;ai;a+)if(strcmp(*indexa).nu
11、mber,(*indexi).number)=0)printf(“-该记录已存在,请重新输入-n.“);i=i-1;b=1;if (b=1) continue;printf(“输入职工姓名:“);scanf(“%s“,(*indexi).name);printf(“输入职工电话:“);scanf(“%s“,(*indexi).tel);printf(“录入成功!n“) ;printf(“继续录入按 1,不再录入按 0n“);scanf(“%d“,switch (t)case 0:break;case 1:input();break;default :break;else9 printf(“无法
12、录入“);void delet() int i,j,b,t;char number20;printf(“输入要删除职工的工号:“);scanf(“%s“,for(i=0,b=1;bi+)if(strcmp(*indexi).number,number)=0) printf(“n 已找到此号,原始记录为:n“);printf(“%-20s%-20s%sn“,(*indexi).number,(*indexi).name,(*indexi).tel);b=0;if(b=0) free(indexi-1);for(j=i-1;jcount;j+)indexj=indexj+1;count=count
13、-1;elseprintf(“n 没有此号n“);printf(“继续删除按 1,不再删除按 2n“);scanf(“%d“,switch(t)case 1:delet();break;case 2:break; default:break;10void modify() char number20;char name20;char tel20;int i,b,c,t;printf(“输入要修改的职工的工号:“);scanf(“%s“,number);for(i=0,b=1;bi+)if(strcmp(*indexi).number,number)=0)printf(“n 已找到此号,原始记录
14、为:n“);printf(“%-20s%-20s%-20sn“,(*indexi).number,(*indexi).name,(*indexi).tel);printf(“n 需要修改的项n 1.工号 2.姓名 3.电话“);printf(“请输入要修改的项的序号(1-3):n“);scanf(“%d“,switch(c)case 1:printf(“工号改为:“);scanf(“%s“,number);strcpy(*indexi).number,number);break;case 2:printf(“姓名改为:“);scanf(“%s“,name);strcpy(*indexi).na
15、me,name);break;case 3:printf(“电话改为:“);scanf(“%s“,tel);strcpy(*indexi).tel,tel);break; b=0;if(b=1)printf(“n 没有此号!n“);printf(“继续修改请按 1,不再修改按 0n“);11scanf(“%d“,switch(t)case 1:modify();break;case 0:break; default:break;void lookup() char number20;int i,b,n,t;n=count;printf(“请输入要查找的工号:n“);scanf(“%s“,num
16、ber);for(i=0,b=1;bi+) if(strcmp(*indexi).number,number)=0)printf(“n 已找到此号,原始记录为:n“);printf(“%-20s%-20s%-20sn“,(*indexi).number,(*indexi).name,(*indexi).tel);b=0;if(b=1)printf(“n 查无此号n“);printf(“继续查询按 1,不再查询按 0n“);scanf(“%d“,switch(t)case 1:lookup();break;case 0:break; default:break;void view() 12int i;printf(“n“);for(i=0;icount;i+)printf(“%-20s%-20s%-20sn“,(*indexi).number,(*indexi).name,(*indexi).tel); /.c2 文件