学生档案管理系统c语言课程设计报告报告_第1页
学生档案管理系统c语言课程设计报告报告_第2页
学生档案管理系统c语言课程设计报告报告_第3页
学生档案管理系统c语言课程设计报告报告_第4页
学生档案管理系统c语言课程设计报告报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z. 目 录 HYPERLINK l _Toc19016 一、课题设计容与主要功能1 HYPERLINK l _Toc17354 第1节.设计容1 HYPERLINK l _Toc13517 第2节.主要功能1 HYPERLINK l _Toc20250 二、课题分析 PAGEREF _Toc20250 2 HYPERLINK l _Toc26210 第1节.类声明表 PAGEREF _Toc26210 2第2节.分析课程设计项目的实现方法3 HYPERLINK l _Toc840 三、主要功能的实现步骤4 HYPERLINK l _Toc32678 四、程序测试与结论5 HYPERLI

2、NK l _Toc21515 五、总结11 HYPERLINK l _Toc25295 六、附件14一、课题设计容与主要功能1、设计容: 为了满足学生档案管理的要求,通过计算机技术给档案管理人员带来便利。使用c语言编写了学生档案此管理系统。本系统主要实现学生档案管理的功能,通过此系统方便对学生档案管理。包括*、性别、年龄、备注。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理。图书信息的录入后,系统按照有一定的规格式显示,录入的学生信息用文件形式保存,并可以对其进行修改、排序、插入、排序查询等基本操作。整个程序实现链表操作,对学生信息的操作逐个地进行。学生档案

3、管理系统构建框架 学 1.学生基本信息录入 生 2.学生基本信息显示 档 3.学生基本信息保存 案 4.学生基本信息修改 按修改 管 5.学生基本信息插入 按插入 理 6.学生基本信息删除 按删除 系 7.学生基本信息排序 统 8.学生基本信息按查询 按查询 9.从文件中读入学生基本信息 10.退出系统2、主要功能: 1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:*、性别、年龄、备注。 2、本系统显示这样的菜单: 请选择系统功能项:1.学生基本信息录入;2.学生基本信息显示;3.学生基本信息保存;4.学生基本信息修改;5.学生基本信息插入;6.学生基本信息删除;7.学生基

4、本信息排序;8.学生基本信息按查询;9.从文件中读入学生基本信息;10.退出系统 3、执行一个具体的功能之后,程序将重新显示菜单。 4、将学生基本信息保存到文件中。课题分析1、类说明表名称属性说明name数据成员说明学生no数据成员说明学生*se*数据成员说明学生性别age数据成员说明学生年龄remark数据成员说明学生备注2、实现方法及核心算法实现代码 :主函数: void main() 录入函数:void enter() 显示函数:void list() 保存函数:void save() 插入函数:insert() 修改函数:void revise()删除函数:void delete()删

5、除录入的学生信息排序函数:void sort() 排序录入的学生信息查找函数:void qseek() 查找录入的学生信息读取函数:int load() 读取保存在文件中的学生信息三、主要功能的实现步骤模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:学生信息的录入 int enter(STUDENT t)录入学生的基本信息。模块三:学生信息的显示 void list(STUDENT t,int n)就是把学生的基本信息显示在电脑上。模块四:学生信息的保存 void save(STUDENT t,int n)就是在把学生基本信息的保存下来。模块五:学生信

6、息的修改 void revise(STUDENT t,int n)插入学生信息。模块六:学生信息的插入int insert(STUDENT t,int n)修改已经录入的学生信息模块七:学生信息的删除 int delete(STUDENT t,int n)删除录入的学生信息模块八:学生信息的排序void sort(STUDENT t,int n)排序录入的学生信息模块九:学生信息按查找void qseek(TSTUDENT t,int n)查找录入的学生信息模块十:学生信息的读入 int load(STUDENT t)读取保存在文件中的学生信息模块十一:退出系统四、程序测试与结论进入系统 输入

7、学生信息显示信息保存信息修改信息修改成功插入信息显示插入成功删除信息排序信息查询信息读入信息(附加)总结:总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与不足。比如,程序中主函数写的有点繁琐,有太多的嵌套,不是则井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些不足之处,提示信息不明确。还有一点就是没有做到实现分类查找,分别按照、*、年龄、性别、备注等进行查找。这个系统主要是参照老师的模版编写的,同时也得到了老师和同学的一些帮助。我在做系统的过程中也遇到了很多问题,有的是知识不足,有的是考虑不够周全。事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很

8、强,以后还要加强对c语言的学习。 我认为对于C语言编写的程序来说,使用方法大致都是一样的,所以如果要改进的话,就是要改进一些算法,尽量把界面编写清楚,提示信息全面,方便易用。课程设计总结C语言这学期我们开始的一门新课,早就听说上届学哥学姐说C语言是天书”,是我们这学期最难的学科之一了。早听说这些我就怕了。首先我感到非常遗憾,课程设计的第一天,我还在家里,因为收到的消息比较迟所以未能及时赶到学校,也至于第一天最重要的容没有学到,在接下来的两天上机时间也未能赶上大家的进度,自己也觉得自己做不出这个程序。没有用心的学。更加愚蠢的是我在答辩的时候拷贝了同学的部分程序,自己没能真正的了解这个程序。答辩的

9、时候,欧阳老师简单的问了我几个问题就发现我没有用心学,严厉批评了我,也认识到了我的错误。当看到其他同学都是A,只有包括我在的少数几个一同学得B,我感到心情有些沉闷,同时更加坚定了我要自己做好这个学生档案管理系统程序的决心。自己也想到了,就算课程设计被我投机取巧完成了,但是省二、国二呢,最终自己还是要好好学的。自己没有掌握C语言,又有什么意义呢!当我自己真正的研究这个程序的时候我感觉有点蒙了,我感觉我自己没有这个能力做好,所以我想找学长帮我,这样我就不用怕了,可是后来我想到省二、国二,我放弃了这个想法,什么还是靠自己。一边懊悔自己平时没有好好学习,一边开始硬着头皮上阵了。第三天下午和晚上我都泡在

10、图书馆里,到晚上将近10点才回寝,感觉自己还是很蒙,不过也有收获,就是我知道我要做这个模块要定位函数,要用到链表。这让我信心若狂,我感觉我已经找到了起点,有个好的开始我相信我就能做好。晚上回到宿舍后我也不敢再耽误时间去玩手机了,急忙去看关于函数、链表的书,第四天看了一天之后我感觉原来计算机也不是什么天书”啊,只是我们没有好好去看它,去领悟它。我心中暗想,这次程序设计我很有收获,它让我对计算机、对C语言产生了兴趣,让我发现原来这样有实践的学习能让人产生很大的兴趣,能让人更好的领悟它。我自己研究这个程序将近两天,看了许多资料,着手进一步改善这个程序了,困难的时候又来了,我不知道用什么语句去完成查找

11、。最好If语句找到后,链表来行使删除功能,可好似链表那个真的好难,在同学们的帮助下我终于把那个链表完成,在运行、检查、修改后,终于合格,程序运行成功了。在完成自己的程序设计后,自豪的感觉充满了我的心,是啊,我不是很笨,我只是没有用心,经过这次设计后,在学习方面我对自己有了信心,如果我用心去学,我努力去做,没有我做不到的。突然间我很喜欢这戏C语言实训,在这一周,有欢笑,有焦急,有开心也有不开心,不过不管什么我都还算开心得度过了这一周,和同学们一起研究、一起做程序、一起检查、一起讨论对与错。在程序完成的那一时刻,我很开心的笑了,因为那是我付出了汗水做的程序,那时我的心血!这次实训对我来说也是一次教

12、训,让我再次深刻地明白什么事情都要靠自己,自己的事情要自己做且要做好。这次实训也让我对学习,对C语言计算机都产生了更浓厚的兴趣,也让同学们有了更好的团队协作精神,也让我感觉在大学学习很好。感老师让我们有了这次机会来体验编程的快乐,感老师不厌其烦的讲解。也让我们有机会感受大学的美好时光。 纺工1291 旺2013年6月28日六、附件/*学生基本信息管理系统*/*头文件(.h)*/#include stdio.h /*I/O函数*/#include stdlib.h /*标准库函数*/#include string.h/*字符串函数*/#define M 50 /*定义常数表示记录数*/typed

13、ef struct /*定义教师基本信息数据结构*/ char name20;/*学生*/ char no20; /*编号*/ char se*20;/*性别*/ int age;/*年龄*/ char remark20;/*备注*/STUDENT;/*以下是函数原型*/int enter(STUDENT t);/*输入记录*/void list( STUDENT t,int n);/*显示记录*/void save(STUDENT t,int n);/*记录保存为文件*/int find(STUDENT t,int n,char *s)/*查找函数*/;void print(STUDENT

14、temp);/*显示单条记录*/void revise( STUDENT t,int n);/*修改记录*/int insert(STUDENT t,int n); /*插入记录*/int delete(STUDENT t,int n)/*删除记录*/;int load(STUDENT t);/*从文件中读记录*/void sort(STUDENT t,int n);/*按排序*/void qseek(STUDENT t,int n);/*快速查找记录*/int menu_select();/*主菜单函数*/main() STUDENT studentM;/*定义结构体数组*/ int len

15、gth;/*保存记录长度*/ for(;)/*无限循环*/ switch(menu_select() /*调用主菜单函数,返回值整数作开关语句的条件*/ case 1:length=enter(student);break;/*输入记录*/ case 2:list(student,length);break; /*显示全部记录*/ case 3:save (student,length);break;/*保存文件*/ case 4:revise(student,length);break;/*修改记录*/ case 5:length=insert(student,length);break;/

16、*插入记录*/ case 6:length=delete(student,length);break; /*删除记录*/ case 7:sort(student,length);break; /*按排序*/ case 8:qseek(student,length);break;/*快速查找记录*/ case 9:length=load(student);break;/*读文件*/ case 10: e*it(0); /*如返回值为10则程序结束*/ /*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select() char s80; int c; printf(press any

17、 key enter menun);/*提示压任意键继续*/ printf(*MENU*nn); printf( 1. 学生基本信息录入n); printf( 2. 学生基本信息显示n); printf( 3. 学生基本信息保存n); printf( 4. 学生基本信息修改n); printf( 5. 学生基本信息插入 n); printf( 6. 学生基本信息删除n); printf( 7. 学生基本信息排序n); printf( 8. 学生基本信息按查询n); printf( 9. 从文件中读入学生基本信息n); printf( 10. 退出系统n); printf(*n); do pri

18、ntf(n Enter you choice(110):);/*提示输入选项* scanf(%s,s); c=atoi(s); while(c10); return c;/*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/int enter(STUDENT t) int i,n; char *s; printf(nplease input num n); /*提示信息*/ scanf(%d,&n); /*输入记录数*/ printf(please input record n); /*提示输入记录*/ printf( * 性别 年龄 备注n); printf(n); for(i

19、=0;in;i+) scanf(%s%s%s%d%s,,ti.no,ti.age,ti.course,&ti.remark); /*输入记录*/ printf(n); return n; /*返回记录条数*/*显示记录,参数为记录数组和记录条数*/void list(STUDENT t,int n) int i;printf(nn*STUDENT*n); printf( * 性别 年龄 备注n); printf(n); for(i=0;in;i+) printf(%-20s%-20s%-20s%-10d%-10sn,,ti.no,ti.se*,ti.age,ti.r

20、emark); if(i+1)%10=0) printf(Press any key continue.n); getch(); printf(*end*n);/*显示指定的一条记录*/void print(STUDENT temp)printf(nn*STUDENT*n); printf( * 性别 年龄 备注n); printf(n); printf(%-20s%-20s%-20s%-10d%-10sn,,temp.no,temp.se*,temp.age,temp.remark); printf(*end*n);int find(STUDENT t,int n,char

21、 *s) int i; for(i=0;in-1) /*如果in-1超过了数组的长度*/ printf(no found not deletedn); /*显示没找到要删除的记录*/ else print(ti); /*调用输出函数显示该条记录信息*/ printf(Are you sure delete it(1/0)n); /*确认是否要删除*/ scanf(%d,&ch); /*输入一个整数0或1*/ if(ch=1) /*如果确认删除整数为1*/ for(j=i+1;j=i;j-) /*从最后一个结点开始向后移动一条*/ strcpy(tj+1.name,); /*当前记

22、录的学生拷贝到后一条*/ strcpy(tj+1.no,tj.no); /*当前记录的编号拷贝到后一条*/ strcpy(tj+1.se*,tj.se*); /*当前记录的性别拷贝到后一条*/ ti.age = temp.age; /*将新插入记录的年龄拷贝到第i个位置*/ strcpy(tj+1.remark,tj.remark); /*当前记录的备注拷贝到后一条*/ strcpy(,); /*将新插入记录的学生拷贝到第i个位置*/ strcpy(ti.no,temp.no); /*将新插入记录的编号拷贝到第i个位置*/ strcpy(ti.se*,temp.

23、se*); /*将新插入记录的性别拷贝到第i个位置*/ ti.age = temp.age; /*将新插入记录的年龄拷贝到第i个位置*/ strcpy(ti.remark,temp.remark); /*将新插入记录的备注拷贝到第i个位置*/ n+; /*记录数加1*/ return n; /*返回记录数*/*保存函数,参数为结构体数组和记录数*/void save(STUDENT t,int n) int i; FILE *fp; /*指向文件的指针*/ if(fp=fopen(record.t*t,wb)=NULL) /*打开文件,并判断打开是否正常*/ printf(can not op

24、en filen);/*没打开*/ e*it(1); /*退出*/ printf(nSaving filen); /*输出提示信息*/ fprintf(fp,%d,n); /*将记录数写入文件*/ fprintf(fp,rn); /*将换行符号写入文件*/ for(i=0;i=0&idn)/*判断序号是否在记录围*/ fseek(fp,(id-1)*sizeof(STUDENT),1);/*移动文件指针到该记录位置*/ print(tid); /*调用输出函数显示该记录*/ printf(rn); else printf(no %d number record!n ,id); /*如果序号不合

25、理显示信息*/ fclose(fp);/*关闭文件*/*排序函数,参数为结构体数组和记录数*/void sort(STUDENT t,int n) int i,j,flag; TEACHER temp; /*临时变量做交换数据用*/ for(i=0;in;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j0) /*比较大小*/ flag=1; strcpy(,); /*交换记录*/strcpy(temp.no,tj.no); strcpy(temp.se*,tj.se*); temp.age=tj.age; strcpy(temp.re

26、mark,tj.remark); strcpy(,tj+1.name); strcpy(tj.no,tj+1.no); strcpy(tj.se*,tj+1.se*); tj.age=tj+1.age; strcpy(tj.remark,tj+1.remark); strcpy(tj+1.name,); strcpy(tj+1.no,temp.no); strcpy(tj+1.se*,temp.se*); tj+1.age=temp.age; strcpy(tj+1.remark,temp.remark); if(flag=0)break; /*如果标志为0,说

27、明没有发生过交换循环结束*/ printf(sort sucess!n); /*显示排序成功*/*快速查找,参数为结构体数组和记录数*/void qseek(TSTUDENT t,int n) char s20; int l,r,m; printf(nPlease sort before qseek!n); /*提示确认在查找之前,记录是否已排序*/ printf(please enter name for qseekn); /*提示输入*/ scanf(%s,s); /*输入待查找的*/ l=0;r=n-1; /*设置左边界与右边界的初值*/ while(l=r) /*当左边界=右边界时*/ m=(l+r)/2; /*计算中间位置*/ if(strcmp(,s)=0) /*与中间结点字段做比较判是否相等*/ print(tm); /*如果相等,则调用print函数显示记录信息*/ return ; /*返回*/ if(strcmp(,s)r)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论