1、. .科技大学本科生课程设计说明书题 目:C语言课程设计 人员管理系统学生XX:武飞学 号:1376807331专 业:计算机科学与技术班 级:2021-3指导教师:王丽颖. .word.zl. .科技大学课程设计任务书课程名称C语言课程设计设计题目 人员管理系统指导教师王丽颖时间2021.12.312021.1.4 一、教学要求1. 稳固和加深学生对C语言课程的根本知识的理解和掌握2. 掌握C语言编程和程序调试的根本技能3. 利用C语言进展根本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,
2、独立完成,题目选定后不可更换。人员管理系统现有一批人员的数椐,要求输入计算机并存放在存中,然后增加假设干个新人员的记录,并可输出人员清单,实现文件存盘和读入文件进展修改的功能。人员的根本信息包括XX,性别,年龄,XX号和简历80个字符以。要求设计菜单来调用其各功能模块:v 新建文件、翻开文件v 输入记录、输出记录v 查询记录至少具有两种查询方式,例如以XX查询和以XX号查询v 修改、插入和删除记录v 保存文件、退出三、设计要求及成果1. 分析课程设计题目的功能需求可选用数组或链表实现,可多人最多3人协作完成一个题目2. 写出详细设计说明至少包括功能实现分析和模块流程图3. 编写程序代码,调试程
3、序使其能正确运行代码书写要规,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告请严格按照模板进展排版四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告打印稿及电子稿五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,那么所有雷同的所有人均判为不及格。. .word.zl. .目 录科技大学课程设计任务书I
4、第一章需求分析31.1引言31.2任务概述31.3数据描述31.4功能需求3第二章概要设计42.1总体设计42.2数据类型设计或数据构造设计42.3接口设计52.4运行界面设计5第三章详细设计63.1输入模块设计63.2输出模块设计73.3查找模块设计73.4保存及读取模块设计9第四章测试分析114.1测试程序执行情况11第五章用户手册可选145.1使用说明145.2运行说明14第六章课程设计总结15附录:程序代码16参考文献24. .word.zl. .第一章 需求分析1.1 引言随着管理人数的增加,手动管理人员将会显得不方便。这时就需要使用软件来实施人性化的管理。1.2 任务概述做一个程序
5、对人员信息实现:新建文件、翻开文件、输入记录、输出记录、查询记录、修改、插入和删除记录、保存文件、退出功能1.3 数据描述l 采用构造体来储存人员信息。l 人员信息包括XX、性别、年龄、XX号、个人简历。l XX长度输入时不能超过10。l 性别输入时只能输入时一个字符w/m。l XX长度输入时不能超过20 。l 个人简历长度输入时不能超过120。1.4 功能需求l 新建文件、翻开文件l 输入记录、输出记录l 查询记录至少具有两种查询方式,例如以XX查询和以XX号查询l 修改、插入和删除记录l 保存文件、退出第二章 概要设计2.1 总体设计1.更新人员信息2.XX号查找3.XX查找4.修改信息5
6、.插入信息开场6.删除信息7.输出信息8.保存信息9.读取文件0.退出2.2 数据类型设计或数据构造设计typedef struct studentchar nameM; /XXchar sex; /性别int year; /年龄char num20; /XX号char jian120;/个人简历stu; /构造体储存2.3 接口设计 表2.1:函数列表函数名函数格式 函数功能menuint menu(void)用户菜单readint read(stu st)添加人员信息xieruvoid xieru(stu st,int n)写信息到文件duquint duqu(stu st);从文件读取信
7、息printvoid print(stu st,int n)输出信息到屏幕shenfenzhengvoid shenfenzheng(stu st,int n)按XX查找信息xingmingvoid xingming(stu st,int n)按XX查找xiugaivoid xiugai(stu st,int n)修改信息charuint charu(stu st,int n)插入信息shanchuvoid shanchu(stu st,int n)删除信息2.4 运行界面设计. .word.zl. .第三章 详细设计3.1 输入模块设计开场int read(stu st)输出提示信息int
8、i=-1;system( cls ); 输入XXprintf(tt*n);printf(tt* 1.更新成员信息 *n);printf(tt*n);Y判断XX是否小于0。doi+;printf(请输入XX:n);Nscanf(%s,&sti.name);if(atoi(sti.name)=0)输入性别输入年龄printf(请输入性别(w/m):n);输入XX号scanf( %c,&sti.sex);输入简历printf(请输入年龄:n);scanf(%d,&sti.year);printf(请输入XX号:n);scanf(%s,&sti.num);printf(请输入简历:n);完毕scanf
9、(%s,&sti.jian);printf(n编号%d数据添加成功!n,i+1);printf(输入XX为负数完毕输入!n);printf(n) ;elsebreak;while(sti.num0);printf(n-n);printf(数据更新成功!n);system(pause); /按任意键继续return i;3.2 输出模块设计void print(stu st,int n)int i;system( cls ); /清屏printf(n-n);printf(编号tXXt性别t年龄tXX号tt简介n);for(i=0;in;i+)printf(%dt%st%ct%dt%-24s%sn
10、,i+1,sti.name,sti.sex,sti.year,sti.num,sti.jian);开场提示信息提示信息3.3 查找模块设计输入XX输入XXvoid shenfenzheng(stu st,int n)N是否符合char x20;int i;Ysystem( cls );输出信息printf(tt*n);printf(tt* 2.XX号查找 *n);printf(tt*n);完毕printf(输入你要查询的XX号:);scanf(%s,x); for(i=0;in;i+)if(strcmp(sti.num,x)=0)printf(XXt性别t年龄tXX号tt简介n);printf
11、(%st%ct%dt%st%sn,sti.name,sti.sex,sti.year,sti.num,sti.jian);printf(n-n);system(pause);return;printf(未找到!);printf(n-n);system(pause);开场void xingming(stu st,int n)提示信息char x10;int i;输入XXsystem( cls );printf(tt*n);是否符合printf(tt* 3.XX查找 *n);Nprintf(tt*n);printf(输入你要查询的XX:);Y输出信息scanf(%s,x);f or(i=0;in;
12、i+)if(strcmp(sti.name,x)=0)完毕printf(XXt性别t年龄tXX号tt简介n);printf(%st %ct%dt%st%sn,sti.name,sti.sex,sti.year,sti.num,sti.jian);printf(n-n);printf(按键返回!);getchar(); /*按任意健*/getchar();return;printf(未找到!);printf(n-n);system(pause);开场3.4 保存及读取模块设计void xieru(stu st,int n)成功翻开FILE *fp;NYif(fp=fopen(ren.txt,w)
13、=NULL)保存文件printf(保存文件失败!n);return; 关闭文件fwrite(st,sizeof(stu),n,fp);printf(保存成功!n);fclose(fp);返回system(pause); 开场int duqu(stu st)FILE *fp;翻开成功int i;if(fp=fopen(ren.txt,r)=NULL)NY读取文件printf(文件不存在!翻开失败!n);return 0;关闭文件for(i=0;!feof(fp);i+)返回人数fread(&sti,sizeof(stu),1,fp);fclose(fp);返回printf(读取成功!n);sys
14、tem(pause);return i-1;. .word.zl. .第四章 测试分析4.1 测试程序执行情况. .word.zl. .第五章 用户手册可选5.1 使用说明运行程序会显示菜单根据菜单输入编号实现相应功能;1.更新人员信息 2.XX号查找 3.XX查找4.修改信息 5.插入信息 6.删除信息7.输出信息 8.保存文件 9.读取文件0.退出5.2 运行说明只有退出程序时。保存文件。下次运行按读取。才能读取成功!更新人员信息会覆盖到当前的人员信息。需要注意。. .word.zl. .第六章 课程设计总结全部模块化设计。未定义全局变量做干扰。采用构造体。缺乏之处,XX长度未做限定,有些
15、缺乏。需要改善的有数据存储方式。改成链式存可能会更佳。还可以进一步优化程序使其实现分级菜单。实现真正意义上的新建文件,读取文件。所遇到的问题是如何给每个数据的储存文件取不同名字。如何把每个文件名读取进来。通这次的课程设计,我们对C语言这门课程有了深一步的理解。它是计算机程序设计的重要理论技术根底,在我们计算机专业的学习中占据十分重要的地位,同时也使我们知道要学习这门课程,仅学习书本上的知识是不够的,还要有较高的实践能力。因为我们学习知识就是为了实践,而只有实践多编写程序才能更好的理解与掌握书本上的东西。通过本课题,进一步熟悉了C语言的根本东西。我们还要学会分析题目的与未知,学会中合起来考虑问题
16、,在逐步的展开思想,特别是碰到大问题时要细细的分解成为许多小的问题来解决。同时我还学到了课外的知识,碰到难题是不要逃避,而是要迎难而上,反复的实验调试结果后,再错的根底上做修改。谈到错是成功之母,说明我们在莫一件事上要屡次吸取经历教训。这次课程设计,让我对于以往上课不理解、不太清楚的问题,通过亲身实践弄懂了许多,同时因为程序是在教师及同学的帮主下完成的,当中有很多程序都是几个同学一起讨论出来的,让我体会到了集体的力量是无限的,当然更让我坚决了以后要好好掌握C语言这一门课程的决心!. .word.zl. .附录:程序代码#include#include#include/字符串操作 #define
17、 N 30 /人数 #define M 10 /名字长度 typedef struct studentchar nameM;char sex;int year;char num20;char jian120;stu;int menu(void);/用户菜单 int read(stu st);/添加人员信息 void xieru(stu st,int n);/写入信息到文件 int duqu(stu st);/从文件读取信息void print(stu st,int n);/输出信息 void shenfenzheng(stu st,int n);/按XX查找信息void xingming(st
18、u st,int n);/按XX查找 void xiugai(stu st,int n);/修改信息 int charu(stu st,int n);/插入信息 void shanchu(stu st,int n);/删除信息 main()int a,n;stu renN;system(color 0A);/修改颜色 while(1)system( cls );/清屏 printf(n);printf(n);printf(n);printf(t*人员管理系统*n);printf(t* *n);printf(t* 1.更新人员信息 2.XX号查找 3.XX查找 *n);printf(t* 4.修
19、改信息 5.插入信息 6.删除信息 *n);printf(t* 7.输出信息 8.保存文件 9.读取文件 *n);printf(t* 0.退出 *n);printf(t*n);a=menu();switch(a)case 1:n=read(ren);break;case 2:shenfenzheng(ren,n);break;case 3:xingming(ren,n);break;case 4:xiugai(ren,n);break;case 5:n=charu(ren,n);break;case 6:shanchu(ren,n);n-;break;case 7:print(ren,n);p
20、rintf(n-n); system(pause);break;case 8:xieru(ren,n);break;case 9:n=duqu(ren);break;case 0: system( cls );printf(nnn);printf(t*n);printf(t* *n);printf(t* *n);printf(t* 谢谢使用! *n);printf(t* *n);printf(t* *n);printf(t*n);exit(0); /exitcode当code为0时正常退出。非0时出现某种错误后退 default:printf(输入错误!请输入0-9的数字!n);system(
21、pause);break;return 0;int menu(void)/用户菜单 int a;printf(nt输入你的选择(0-9): bb);scanf(%d,&a);return a;void xieru(stu st,int n)FILE *fp;if(fp=fopen(ren.txt,w)=NULL)printf(保存文件失败!n);return; fwrite(st,sizeof(stu),n,fp);printf(保存成功!n);fclose(fp);system(pause); int duqu(stu st)FILE *fp;int i;if(fp=fopen(ren.tx
22、t,r)=NULL)printf(文件不存在!翻开失败!n);return 0;for(i=0;!feof(fp);i+)fread(&sti,sizeof(stu),1,fp);fclose(fp);printf(读取成功!n);system(pause);return i-1;int read(stu st)int i=-1;system( cls ); printf(tt*n);printf(tt* 1.更新成员信息 *n);printf(tt*n);doi+;printf(请输入XX:n);scanf(%s,&sti.name);if(atoi(sti.name)=0)printf(请
23、输入性别(w/m):n);scanf( %c,&sti.sex);printf(请输入年龄:n);scanf(%d,&sti.year);printf(请输入XX号:n);scanf(%s,&sti.num);printf(请输入简历:n);scanf(%s,&sti.jian);printf(n编号%d数据添加成功!n,i+1);printf(输入XX为负数完毕输入!n);printf(n) ;elsebreak;while(sti.num0);printf(n-n);printf(数据更新成功!n);system(pause); return i;void print(stu st,int
24、 n)int i;system( cls );printf(n-n);printf(编号tXXt性别t年龄tXX号tt简介n);for(i=0;in;i+)printf(%dt%st%ct%dt%-24s%sn,i+1,sti.name,sti.sex,sti.year,sti.num,sti.jian);void shenfenzheng(stu st,int n)char x20;int i;system( cls );printf(tt*n);printf(tt* 2.XX号查找 *n);printf(tt*n);printf(输入你要查询的XX号:);scanf(%s,x); for(
25、i=0;in;i+)if(strcmp(sti.num,x)=0)printf(XXt性别t年龄tXX号tt简介n);printf(%st%ct%dt%st%sn,sti.name,sti.sex,sti.year,sti.num,sti.jian);printf(n-n);system(pause);return;printf(未找到!);printf(n-n);system(pause);void xingming(stu st,int n)char x10;int i;system( cls );printf(tt*n);printf(tt* 3.XX查找 *n);printf(tt*n);printf(输入你要查询的XX:);scanf(%s,x); for(i=0;i=0)printf(请输入性别(w/m):n);s