




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 任 务 书课程名称 C语言课程设计 课 题 班级档案管理系 目录1. 设计目的2. 总体设计3. 详细设计4. 调试与测试:5. 总结与体会6评分 附:源程序清单和执行1设计目的a)了解和掌握c语言面向对象程序设计的基本过程。b)进一步熟悉C语言的特点。c)学会总体规划一个程序,从各个部分把一个程序完成好。d)能够使自己的程序实现一定的功能,对C+产生一种浓厚的兴趣。e)培养耐心,遇困难不退缩。f)了解团队精神的重要性,团结合作。 加深对C语言课程所学知识的理解,进一步巩固C语言讲法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。 在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,以及文件的读写操作等。2总体设计 主 菜 单 界 面学生档案管理土木工程*班 *1.录入学生信息2.显示学生信息3.查询学生信息4.删除学生信息5.添加学生信息6.修改学生信息7退出7*谢谢使用* 信息录入1按学号查询 2按姓名查询3按性别查询 4按年龄查询3.详细设计本程序由一个Voidmain(),一个Voidinput(),一个VoidSave(),一个Voiddisplay(),一个VoidDelete() ,一个Void add和一个VoidSearch()共七个主要函数来实现该程序的编程的。其中在主函数Voidmain()中调用其他六个函数,通过Switch语句来实现调用进入各个函数,进入主菜单通过录入函数录入学生信息,并自动保存在cstudent.txt中。学生信息输入应用了结构数组,学生信息主要包括姓名,学号,性别,年龄以及备注。其中年龄为整型,其他为字符型。调用函数时,学生信息运用了指针数组,如voidModfiy(structstudent*arr,intn)在VoidDelete()调用函数中,当boolflag=ture是该学生不存在,即已被删除。在Voidsearch()调用函数中,当boolflag=ture是该学生存在,即已被查询到。当flag=false时则说明没有该学生信息。在查询系统中,有四种查询方式,分别是按姓名查询,按学号查询,按性别查询和按年龄查询。四种查询方式用Switch语句连接起来,进入每种查询方式要输入所需信息才能进入。该程序最大的特点是Switch连接各调用函数和各查询方式以及结构数组的运用,将各函数有序的连接起来。各个调用函数功能的实现如下:1)信息的录入主要运用循环语句将各个学生信息依次输入2)信息的显示也是用循环语句将各个学生信息显示出来。3)信息的保存是将信息重写到保存到的文件位置,其中信息保存在c:student.text4)信息的删除是运用字符串复印函数,将空格复印到信息字符上达到删除效果。5)信息的修改是输入学号用循环语句将需修改的信息显示出来,然后再输入新的信息6)信息的查询是通过Switch语句将查询方式连接起来,并在各个查询方式中用循环语句将要查询的信息显示出来。4调试与测试 初步调试的结果出现问题较多,经过多次修正和调试解决了许多问题,调试完成后进入主菜单按1录入学生信息,录入学生信息后可以通过提示按学号,姓名,性别,年龄进行查询。还能按5添加学生信息,按6修改学生信息,按7退出。5心得与体会终于可以松口气了,经过一个思考,查资料,写源程序,上机调试,现在终于告一段落了。看到自己的劳动成果,心中不免有些惊喜,没想到自己还能独立完成初次的课程设计。这种课程设计是枯燥无味的,但对C语言这门程序语言的掌握却有非常大的作用.。从开始对题目的分析,就注定摆在我这样一个对C语言了解不多的新手面前的是一段艰难的旅程.但最终很庆幸的是我居然能够坚持下来,而且完成了设计工作。 C语言是很难学的,这也许是因人而异,但对我来说确实是一个障碍。如今要自己完成一个课程设计,无疑是对自己的一个挑战.先是上网查找有关的资料,分析题目所需的数据,要用到哪些函数等等,星期二上网初步调试,将函数用些结构和语句连接起来,做这个工作时,又将书本翻阅了一遍,重新获得许多东西。如带参函数的特点,以及一些语句的运用及特点等等。将工作分配到每块是我完成这个设计的主要方法,然而将每块都完成看起来比较轻松,但实际操作起来却是比较麻烦的。由于平时对C语言知识的积累较为匮乏,(这可能是最主要的原因了),所以操作起来真是寸步难行,没办法,只有拿出课本找到相应的知识点,临阵磨枪.费了一番功夫,再上机调试时就是最痛苦的时候了,错误一大堆,要一个一个的修改。经过几翻调试修改之后终于可以执行了,那时还兴奋了好长时间呢!然而执行出来的结果是不令人满意的,界面不美观不说,最重要的是输入太烦琐,而且受到的限制太多,如只能以某种方式输入,且个数受限制。于是又发费了大量时间去修改,终于比较满意了,但也到了星期五了,也就是答辩的时间。答辩的时候我才发现还有好多知识是我不会的,老师问了我一些问题,我回答出来的却不多,我体会到我还要很努力的学习,在C语言的学习上我还有很长的一段路要走。今天不管怎样把这个设计作出来是件很高兴的事情,不过能够把这个设计顺利完成要归功于我的指导老师,帮了我很多忙,也让我发现了我有好多欠缺的地方,真的很感谢你们,谢谢! 但不管怎么样,我还是完成了这个设计。虽说累了点,但我想这对我们进一步掌握C语言,并为下学期的计算机二级考试是有很大的帮助的.。能够编出程序,其实本身就是对自己的一种肯定,是对自己前面一段时间学习语言综合水平的一个检阅.当然完成后的兴喜,只有经历过了才能体会到。而我体会到了.课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。源程序#include #include #include #include #define N 100struct student int num; char name10; char sex; int age; char xueli30; char beizhu50; char addr30; long int tel;st100; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_name();void search_sex();void search_age();void modify(); /*定义各函数*/void menu() /*菜单函数*/ printf( 土木工程n); printf(n); printf( *班 *n); printf(n); printf( *学生档案管理*n); printf( 1.录入学生信息); printf( 2.显示学生信息n); printf( 3.查询学生信息); printf( 4.删除学生信息n); printf( 5.添加学生信息); printf( 6.修改学生信息n); printf( 7.退出n); printf( *谢谢使用*n); printf(n); printf(n); void main() menu(); /*调用菜单函数*/ int n,flag; char a; do printf(请选择你需要操作的步骤(1-7):n); scanf(%d,&n); if(n=1&n=7) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); while(flag=1) switch(n) case 1:printf( 输入学生信息n);printf(n);input();break; case 2:printf( 显示学生信息n);printf(n);display();break; case 3:printf( 按学号查询学生信息n);printf(n);search();break; case 4:printf( 删除学生信息n);printf(n);del();break; case 5:printf( 添加学生信息n);printf(n);add();break; case 6:printf( 修改学生信息n);printf(n);modify();break; case 7:exit(0);break; default :break; getchar(); printf(n); printf(是否继续进行(y or n):n); scanf(%c,&a); if(a=y) flag=1; system(cls); /*清屏*/ menu(); /*调用菜单函数*/ printf(请再次选择你需要操作的步骤(1-7):n); scanf(%d,&n); printf(n); else exit(0); void input() /*录入函数*/ int i,m; printf(请输入需要创建信息的学生人数(1-100):n); scanf(%d,&m); for (i=0;im;i+) printf(请输入学号: ); srand(int)time(0); sti.num=rand()%10000+20000000; if(sti.num!=sti-1.num) printf(%8d ,sti.num); printf(n); printf(请输入姓名: ); scanf(%s,); getchar(); printf(请输入性别(f-女 m-男): ); scanf(%c,&sti.sex); printf(请输入年龄: ); scanf(%d,&sti.age); printf(请输入备注: ); scanf(%s,&sti.beizhu); printf(n); printf(n创建完毕!n); save(m);void save(int m) /*保存文件函数*/ int i; FILE*fp; if (fp=fopen(c:student.txt,wb)=NULL) printf (cannot open filen); exit(0); for (i=0;im;i+) /*将内存中学生的信息输出到磁盘文件中去*/ if (fwrite(&sti,sizeof(struct student),1,fp)!=1) printf(file write errorn); fclose(fp);int load() /*导入函数*/ FILE*fp; int i=0; if(fp=fopen(c:student.txt,rb)=NULL) printf (cannot open filen); exit(0); else do fread(&sti,sizeof(struct student),1,fp); i+; while(feof(fp)=0); fclose(fp); return(i-1);void display() /*显示函数*/ int i; int m=load(); printf(n 学号t姓名t性别t年龄 t备注 n); for(i=0;im;i+) /*m为输入部分的学生人数*/ printf(n %dt%st%ct%dt%st%st%st%ldn,sti.num,,sti.sex,sti.age,sti.xueli,sti.beizhu,sti.addr,sti.tel); void del() /*删除函数*/ int m=load(); int i,j,n,t,flag; char name20; printf(n 原来的学生信息:n); display(); /* 调用显示函数*/ printf(n); printf(请输入要删除的学生的姓名:n); scanf(%s,name); for(flag=1,i=0;flag&im;i+) if(strcmp(,name)=0) printf(n已找到此人,原始记录为:n); printf(n学号t姓名t性别t年龄t备注 n); printf(n%dt%st%ct%dt%st%st%st%ldn,sti.num,,sti.sex,sti.age,sti.xueli,sti.beizhu,sti.addr,sti.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) /*如果删除,则其他的信息都往上移一行*/ for(j=i;jm-1;j+) strcpy(,stj+1.name); stj.num=stj+1.num; stj.sex=stj+1.sex; stj.age=stj+1.age; strcpy(stj.xueli,stj+1.xueli); strcpy(stj.beizhu,stj+1.beizhu); strcpy(stj.addr,stj+1.addr); stj.tel=stj+1.tel; flag=0; if(!flag) m=m-1; else printf(n对不起,查无此人!n); printf(n 浏览删除后的所有学生信息:n); save(m); /*调用保存函数*/ display(); /*调用显示函数*/ printf(n继续删除请按1,不再删除请按0n); scanf(%d,&t); switch(t) case 1:del();break; case 0:break; default :break; void add()/*添加函数*/ FILE*fp; int n; int count=0; int i; int m=load(); printf(n 原来的学生信息:n); display(); /* 调用显示函数*/ printf(n); fp=fopen(student_list,a); printf(请输入想增加的学生数:n); scanf(%d,&n); for (i=m;i=1&t=5) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); while(flag=1) switch(t) case 1:printf(按学号查询n);search_num();break; case 2:printf(按姓名查询n);search_name();break; case 3:printf(按性别查询n);search_sex();break; case 4:printf(按年龄查询n);search_age();break; case 5:main();break; default:break; void search_num() int num; int i,t; int m=load(); printf(请输入要查找的学号:n); scanf(%d,&num); for(i=0;im;i+) if(num=sti.num) printf(n已找到此人,其记录为:n); printf(n学号t姓名t性别t年龄t备注 n); printf(n%dt%st%ct%dt%st%st%st%ldn,sti.num,,sti.sex,sti.age,sti.xueli,sti.beizhu,sti.addr,sti.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询学号请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2: break; default:break; void search_name() char name10; int i,t; int m=load(); printf(请输入要查找的姓名:n); scanf(%s,name); for(i=0;im;i+) if(strcmp(,name)=0) printf(n已找到,其记录为:n); printf(n学号t姓名t性别t年龄t备注 n);printf(n%dt%st%ct%dt%st%st%st%ldn,sti.num,,sti.sex,sti.age,sti.xueli,sti.beizhu,sti.addr,sti.tel); if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询姓名请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break; void search_sex() char sex; int i, t; int m=load(); printf(请输入要查找的性别:n); scanf(%c,sex); for(i=0;im;i+) if(sex=sti.sex) printf(n已找到此人,其记录为:n); printf(n学号t姓名t性别t年龄t备注 n); printf(n%dt%st%ct%dt%st%st%st%ldn,sti.num,,sti.sex,sti.age,sti.xueli,sti.beizhu,sti.addr,sti.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询性别请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break; void search_age() int age; int i, t; int m=load(); printf(请输入要查找的年龄:n); scanf(%d,&age); for(i=0;im;i+) if(age=sti.age) printf(n已找到此人,其记录为:n); printf(n学号t姓名t性别t年龄t备注 n);printf(n%dt%st%ct%dt%st%st%st%ldn,sti.num,,sti.sex,sti.age,sti.xueli,sti.beizhu,sti.addr,sti.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询年龄请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break; void modify() /*修改函数*/ int num; char name10; char sex; int age; c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 反制动底板材料失效机理与复合材料界面优化路径
- 十二烯衍生物在高端涂料领域应用适配性测试标准缺失困境
- 医疗数据孤岛与刀管全生命周期追溯系统的区块链融合
- 区域性电力波动对大型刀刃磨机稳定运行的影响评估体系
- 区块链技术在多主体分区开关数据共享中的应用边界探索
- 2025年电力安全知识竞赛试题及答案【简答题】
- 全球经济波动传导效应-洞察及研究
- 煤炭清洁利用技术与行业可持续发展战略规划研究报告
- 临床操作考试题库及答案2025年版
- 2025年文化创意产业孵化器项目文化产业链创新模式可行性研究报告
- 车辆赠与协议模板
- 中国移动通信网运行维护规程(修订版)
- 烧结岗位安全操作培训-PPT课件
- 【课件】1.2 点线传情——造型元素之点线面 课件-2021-2022学年高中美术人美版(2019)选修绘画
- Q∕GDW 11445-2015 国家电网公司管理信息系统安全基线要求
- 运动处方(课堂PPT)
- 物资储备与物流方案
- 财务报销流程培训PPT模板课件
- 关于加强铁路企业年金管理的指导意见
- 幼儿园体检结果分析评价表
- 资金筹集业务核算培训教材(共39页).ppt
评论
0/150
提交评论