1、六、教师评语目录一、需求分析 1二、程序流程图 3三、核心技术的实现说明及相应程序段 10四、课设总结 15五、参考文献 16六、源程序 16一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为七个模块,其中每一个模块对应一个函数,它们的功能分别是:读取文件信息函数,录入学生信息函数,显示学生信息函数,查询函数(包括对学生工作单位、城市、单位性质的查询)。在这些函数的实现严格按照题目的要求,而前面的三个函数属于附加功能。1、录入学生信息函数 主要实现程序最初运行时学生信息的录入以及其后的运行中学生信息的追加功能;2、显示学生信息函数 主要实现对录入的学生信息进行显示方便下面的调
2、用;3、查询函数 实现的功能是按照要求对学生的信息记录进行查询、调用;4、查询相同单位学生信息函数 按照题目的具体要求实现的是对相同单位学生的信息的调用、查询;5、查询相同城市学生信息函数 按照题目的具体要求实现的是对相同城市学生的信息的调用、查询;6、查询相同性质单位信息函数 按照题目的具体要求实现的是对相同性质单位的信息的调用、查询;7、退出函数 实现的是在程序的一次运行当中循环执行所有功能时根据需要终止程序的执行的功能。每一个学生记录都包含学号、姓名、班级、专业,而每一个学生的单位信息包含单位名称、地点、性质还有签约时间,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息
3、直接写入D盘的student.dat文件中,其它函数每次对学生记录的访问,其数据来源都是student.dat文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、 程序总体结构图 输入1 假真录入学生和单位信息真 输入2 假真 输入3 假输入待查询单位信息 输入4 假输入待查询城市信息真 输入5 假输入待查询性质信息 输入6退出系统2、具体功能框图(1)读取学生信息函数reads() Y N Y (2)录入学生信息和单位信息函数add 读写方式打开D盘studeng.txt文件不成功?真 假写方式打开文件不成功输入追
4、加学生数量n 从文件读出学生数量记录数量赋给k输出文件打开 失败 输入学生数量n文件位置指针重新回到开头将n写入文件返回学生记录总数 n+k写入文件循环变量i=1文件位置指针定位在结尾fseek当i=n时输入信息并写入文件i+=n时 输入学生信息和单位信息并写入文件i+关闭文件(3)显示学生信息和单位信息、签约时间函数定义i,n从文件中读出学生信息、单位信息和签约时间信息输出“ *所有学生信息如下*”输出“序号 学号 姓名 班级 专业 单位 地点 性质 签约时间”i=0;in;i+输出学生所有有信息输入字符串(4)调用相同单位的学生信息danwei循环变量i=0从文件中读取学生数据输出“请输入
5、待查询的单位名称,按回车确认”=nstrcmp(danwei,stui.danwei)=0 假 真 输出学生学生信息 (5)调用相同城市的学生信息chengshi输出“请输入待查询的城市名称,按回车确认” strcmp(chengshi,stui.chengshi)=0假 真 (6)调用相同单位性质的学生信息xingzhi输出“请输入待查询的性质名称,按回车确认” strcmp(xingzhi,stui.xingzhi)=0假 真输出学生学生信息三、核心技术的实现说明及相应程序段本程序主要由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,
6、录入信息函数、显示信息、查询信息函数程序中较为核心的部分,下面分别进行说明。1、录入信息函数 添加信息分为两种情况,其一是在学生文件(student.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的学生信息写入该文件当中;其二是在学生文件(student.txt)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:void add()/*录入学生信息函数*/FILE *fp; int n,i; struct student stu; if(fp=fopen(d:student.txt,r+)!=NULL) printf(
7、请输入要添加的学生数量,按回车键确认:); scanf(%d,&n); fseek(fp,0L,2); for(i=1;=n;i+) printf(n请输入第%d个学生的学号、姓名、班级、专业,用空格分开,并按回车键确认:n,i);%s%s%s%s,stu.num,stu.name,stu.clas,stu.pro);n请输入第%d个学生的单位名称、地点、性质、签约时间,用空格分开,并按回车键确认:,stu.danwei,stu.chengshi,stu.xingzhi,stu.shijian); fprintf(fp,n%s %s %s %s %s %s %s %s,stu.num,stu.
8、name,stu.clas,stu.pro,stu.danwei,stu.chengshi,stu.xingzhi,stu.shijian); elsew=NULL) n请输入第%d个学生的单位名称、地点、性质、签约时间,用空格分开,并按回车键确认: fprintf(fp, fclose(fp);2、 显示学生信息该函数主要是为下面的查询函数提供查询的依据。该函数执行时,首先调用reads函数将文件中的学生信息读出然后输出所有学生信息。具体程序段如下:void show()/*显示所有学生信息函数*/struct student stuN; int i,n; reads(stu,&/*从文件中
9、读出学生信息*/ *所有学生信息如下*n 序号 学号 姓名 班级 专业 单位 地点 性质 签约时间 for(i=0;n%5d%9s%5s%7s%7s%5s%5s%9s%5sn,i+1,stui.num,stui.name,stui.clas,stui.pro,stui.danwei,stui.chengshi,stui.xingzhi,stui.shijian); getch();3、 查询相同单位学生信息函数该函数的核心内容是输入单位名称实现对同一单位学生信息的调用。该函数执行时,首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待查询学生的就业单位,而后按照该单位进行查找,
10、如果文件中存在该学生的数据,就按照调用学生函数的方法调用,否则不输出任何信息。对学生信息的具体调用是在结构体数组中实现的,当学生的信息被找到后,依次在数组的学生记录中寻找相同的信息,这些操作完成后,要调用的学生信息就被调用出来了,也就实现了查询的作用。void danwei()/*学生单位信息查询*/ struct student stuN; char danwei20; int i;n请输入待查询的单位名称,按回车键确认:%s,danwei); if(strcmp(danwei,stui.danwei)=0) printf(n%5s%5s%5s%5sn,stui.num,stui.name,
11、stui.clas,stui.pro);4、查询相同城市学生信息函数该函数的核心内容是输入城市名称实现对学生信息的调用。该函数执行时,首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待查询学生的城市,而后按照该城市进行查找,如果文件中存在该学生的数据,就按照调用学生函数的方法调用,否则不输出任何信息。对学生信息的具体调用是在结构体数组中实现的,当学生的信息被找到后,依次在数组的学生记录中寻找相同元素的信息,这些操作完成后,要调用的学生信息就被调用出来了,也就实现了查询的目的。void chengshi()/*学生就业城市信息查询*/ char chengshi20;n请输入待
12、查询的城市名称,按回车键确认:,chengshi); if(strcmp(chengshi,stui.chengshi)=0) 5、查询相同单位性质学生信息函数该函数的核心内容是输入性质实现对学生信息的调用。该函数执行时,首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待查询单位的性质,而后按照该单位性质进行查找,如果文件中存在该学生的数据,就按照调用学生函数的方法调用,否则不输出任何信息。对学生信息的具体调用是在结构体数组中实现的,当学生的信息被找到后,依次在数组的学生记录中寻找相同单位性质的信息,这些操作完成后,要调用的学生信息就被调用出来,也就实现了查询。void xi
13、ngzhi()/*学生就业单位性质信息的查询*/ char xingzhi20;n请输入待查询的单位性质,按回车键确认:,xingzhi); if(strcmp(xingzhi,stui.xingzhi)=0) 四、课设总结之前在大一就学过了C语言,但是学的不是很好,基本处于模糊的状态,甚至对有些概念一点都不熟悉。但是,在这一周的课设时间里,通过自己查找资料和与同学们进行的探讨,还有老师的指导帮助,使我对C语言的知识有了更细致的理解,并掌握了一定的编程方法,也使我的C语言编程能力有很大的提高。虽然我们学的不是计算机专业,但对我们学机械类的学生来说C语言程序设计确实是一门很有用的学科,与我们的生
14、活学习有紧密的联系。这次课设让我对C语言产生了更深厚的兴趣,也激励我以后对它更深入的学习。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#includestdlib.hconio.hstring.h#define N 20struct studentchar num20; char name10; char clas10; char pro10; char danwei10; char chengshi10; char xingzhi10; char shijian10;stuN;int n;voi
15、d menu();void read(struct student stuN,int *n);void show();void add();void danwei();void chengshi();void xingzhi();void main() int m; while(1) menu();n请输入您要选择的操作序号,按回车键确认:m); switch(m) case 1: add();break; case 2: show(); case 3: danwei(); case 4: chengshi(); case 5: xingzhi(); case 6: exit(0); defa
16、ult:输入错误,请输入列表中存在的序号!n void menu() printf( * 毕业生就业统计系统* n 1 录入学生信息n 2 显示所有学生数据n 3 输入单位名称n 4 输入城市名称n 5 输入单位性质n 6 退出void reads(struct student stuN,int *n) FILE *fp; int i=0;r)=NULL)文件打开失败! return; !feof(fp); fscanf(fp,%s%s%s%s%s%s%s%s,stui.num,stui.name,stui.clas,stui.pro,stui.danwei,stui.chengshi,stui.xingzhi,stui.shijian); *n=i;void danwei()/*学生同一单位信息查询*/ if(strcmp(danwei,stui.danwei)=0) if(strcmp(danwei,stui.danwei)!=0) printf(没有找到该学生信息nvoid chengshi()/*学生同一城市信息查询*/ if(strcmp(chengshi,stui.chengshi)! else void xingzhi()/*学生就业单位同一性质的查询*/
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1