C语言课程设计:学-生-管-理-系-统——学生成绩管理系统(共17页).doc
《C语言课程设计:学-生-管-理-系-统——学生成绩管理系统(共17页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计:学-生-管-理-系-统——学生成绩管理系统(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上淮北师范大学程序设计课程设计学 生 管 理 系 统 学生成绩管理系统学 院 计算机科学与技术 专 业 计算机科学与技术(师范) 学 号 * 学 生 姓 名 * * * 指导教师姓名 * * * 2010年12月 28 日专心-专注-专业一、设计目的与内容(1)实验目的l 进一步巩固和复习C程序设计的基础知识。l 培养学生结构化程序、模块化程序设计的方法和能力。l 提高学生调试程序的技巧和软件设计的能力。l 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。l 了解软件的编制过程。(2)实验内容1) 实现对学生信息的查找、添加、删除、修改、浏览、保存、从文
2、件读取功能。2) 使用结构体对学生信息的存储。3) 使用链表实现对学生信息的查找、添加、删除、修改、浏览等操作。4) 使用文件完成数据的存储与读取,要求每次运行某个模块时将数据读入结构体中,并 提供保存选项,将结构体中的数据保存在文件中。二、算法的基本思想(1)数据结构 学生成绩信息:typedef struct studentscore char name10; /定义姓名的字符数组 char num20; /定义学号的字符数组struct subjectchar subname20;/定义学科名的字符数组float score; /保存学生各科成绩sub5; /共五门课 double su
3、m; /总分struct studentscore *next;STUCORE;(2)本系统涉及的知识点结构体、数组、循环、函数、指针、链表、文件操作。(3)功能要求功能模块1、建立学生信息,每个学生的信息包括:学号、姓名、性别、班级、学院2、用链表的形式对学生信息分别进行查找、添加、删除、修改3、结果保存在磁盘上(4)功能模块学生管理系统1.文件操作2.学生基本信息管理3.学生成绩信息管理4.退出文件操作1.从文件中读取信息2.学生信息存入文件3.返回学生成绩信息管理1. 查找成绩信息2. 添加成绩信息3. 删除成绩信息4. 修改成绩信息5. 返回修改成绩信息删除成绩信息添加成绩信息查找成绩
4、信息1.按学号查找2.按姓名查找3.返回学生信息存入文件1保存学生基本信息2保存学生成绩信息从文件中读取信息1读取学生基本信息2读取学生成绩信息(4)算法功能描述总体功能说明:本系统可以做到对1.学生信息:学号、姓名、性别、学院、班级。2.学生成绩信息:学号、姓名、一名学生五门不同学科的学科名及该科成绩。分别进行添加、修改、查找、删除、保存、载入功能。学生成绩信息管理功能说明:可以添加学生学号、姓名、及对一名学生五门不同学科的学科名及该科成绩。并可以通过对输入的学生成绩信息进行修改、删除、保存、载入功能并通过学号和姓名两种方式查找,并且对同名的学生也可以进行区分。并且会保持学好的一致性,保证任
5、意两名学生不会出现学号相重复的情况。三、主要功能模块流程图(按姓名查找信息的流程图)StartScanf(“%s”,no) if(strcmp(p-name,no)=0) while(p!=NULL) 0 1Printf(“查无此人”) Printf(“所有信息”) END 按姓名查找流程图四、 系统测试1.主程序界面首先进入1.文件管理操作。建立单链表。2.文件管理操作选择读取的文件(第一次运行时因文件未建立只有在读取文件后才能执行保存文件)读入文件后就可选择进入的系统。选择2进入学生基本信息管理系统;选择3进入学生成绩信息管理系统。3.学生成绩信息管理选择1:查询成绩信息。选择2:添加成绩
6、信息。选择3:删除成绩信息。选择4:修改成绩信息。选择5:返回。A. 查询成绩信息选择1:按学号查询成绩信息。选择2:按姓名查询成绩信息。可以查找到同名学生的信息。B. 添加成绩信息如图添加学生成绩信息。继续添加输入y否则输入n。添加完成后请去往文件管理保存!C. 删除成绩信息如图删除学生基本信息。继续删除其它学生输入y否则输入n。删除完成后请去往文件管理保存!D. 修改成绩信息如图修改学生基本信息。继续修改其它学生输入y否则输入n。修改完成后请去往文件管理保存!五、 结论通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到 一个问题,想办法去解决
7、,最后终于找到方法时,心里的那份喜悦之情真是难以形容。编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查。直到最终搞清为止。我对于链表也有了更深层次的理解,尤其是采用动态内存分配malloc函数的使用。但我的程序仍让不够完美,因为我修改信息时还不能对学号进行判断,就是说如果修改时使两个学生学号相同就一并保存下来。在查询中可以一并查询出来,但删除修改操作需要按录入顺序捉个操作。这是该程序的不足。而且,在姓名查找中必不能实现模糊查找功能。也就是说,不能对某同学姓名中的一部分进行判断进而进行查找。这次课程设计能够顺利完成要首先感谢韩玲老师对我的悉
8、心教导,她在我整个编程中给予了我很大帮助。还感谢王保华老师为我解释了查询中链表的循环,陈美荣老师为我讲解了动态内存分配malloc函数。在此我要感谢所有为我的课程设计付出心血的老师们!参考文献:谭浩强,C程序设计(第二版),清华大学出版社。严蔚敏,吴伟民,数据结构(C语言版),清华大学出版社。六、 源程序及系统文件使用说明学生成绩信息管理中各模块的功能说明程序代码设计一:结构体:typedef struct studentscore char name10; char num20;struct subjectchar subname20;float score; sub5; /保存学生各科成绩
9、double sum; /总分struct studentscore *next;STUCORE;二:添加学生成绩信息函数:(void add_score())1)函数原形:void add_score()2)功 能:采用动态内存分配malloc函数和链表结构。利用do while、while循环结构strcpy函数依次输入学生学号、姓名、及对一名学生五门不同学科的学科名及该科成绩。将信息保存在内存中建立的链表里。3)变量及类型: STUCORE *stu,*p; 定义结构体指针 char k; 用来接收输入的(y/n)以便通过do while判断是否继续添加信息int flag; 定义一个整
10、型变量来判断所添加的学生学号是否已经存在文件中,保证学号唯一性 p=head_2; 将结构体下定义的头指针head_2赋给p4)说明:执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。并在函数调用结束时利用system(cls)执行清屏操作。添加完成后需要去往文件操作保存。void add_score()/添加学生成绩信息STUCORE *stu,*p;char k;p=head_2; int flag=0; dostu=( STUCORE *) malloc(sizeof(STUC
11、ORE);printf(输入学生的成绩信息:n);while(flag=0)printf(请输入学生学号:);scanf(%s,no);flag=Judge(no);strcpy(stu-num,no);printf(请输入学生姓名:);scanf(%s,stu-name); printf(请输入第一门课学科名:);scanf(%s,stu-sub0.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub0.score);printf(请输入第二门课学科名:);scanf(%s,stu-sub1.subname);printf(请输入该课成绩:);scanf(%
12、f,&stu-sub1.score);printf(请输入第三门课学科名:);scanf(%s,stu-sub2.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub2.score);printf(请输入第四门课学科名:);scanf(%s,stu-sub3.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub3.score);printf(请输入第五门课学科名:);scanf(%s,stu-sub4.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub4.score);stu-sum=stu
13、-sub1.score+stu-sub2.score+stu-sub3.score+stu-sub4.score+stu-sub0.score;getchar();printf(tt输入学生信息完成。n);while(p-next!=NULL)p=p-next;p-next=stu;p=stu;p-next=NULL;printf(n添加完成后请去往文件管理保存!nn是否继续添加学生信息?(y/n):n); while(k=getchar()=y);getchar(); system(cls);三:删除学生成绩信息函数(void del_score())1)函数原形:void del_scor
14、e()2)功 能:利用strcmp函数、do while、while循环结构通过学号找到要删除的学生并利用链表执行删除操作。将信息保存在内存中建立的链表里。3)变量及类型: STUCORE *p,*q; 定义结构体指针 char no10; 定义输入的待比较变量 char k,ch; 用来接收输入的(y/n)以便通过do while判断是否删除信息p=head_2; 将结构体下定义的头指针head_2赋给p4)说明:执行完删除函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。并在函数调用结束时
15、利用system(cls)执行清屏操作。删除完成后需要去往文件操作保存。void del_score()/删除学生成绩信息 STUCORE *p,*q;char no10;char k,ch; Do p=head_2;printf(tt删除学生的详细资料 nnn); printf(请输入要删除学生的学号:);scanf(%s,no); while(strcmp(p-num,no)!=0&p-next!=NULL) q=p; p=p-next; if(strcmp(p-num),no)=0)printf(要删除的学生成绩信息:);printf(学号:%sn,p-num);printf(姓名:%s
16、n,p-name);printf(%s 成绩: %fn,p-sub0.subname,p-sub0.score);printf(%s 成绩: %fn,p-sub1.subname,p-sub1.score);printf(%s 成绩: %fn,p-sub2.subname,p-sub2.score);printf(%s 成绩: %fn,p-sub3.subname,p-sub3.score);printf(%s 成绩: %fn,p-sub4.subname,p-sub4.score);printf(总分:%lfn,p-sum);getchar();printf(n确定删除吗?y/n?nn);c
17、h=getchar();if(ch=y)q-next=p-next;printf(nttt已删除该学生nn);else printf(nttt没有该学生nn);getchar(); printf(n删除完成后请去往文件管理保存!nn是否继续删除其它学生信息?(y/n?):n);k=getchar();while(k=y);getchar();system(cls);四:修改学生成绩信息函数(void modify_score())1)函数原形:void modify_score()2)功 能:利用strcmp函数、do while、while循环结构通过学号找到要修改的学生并利用链表执行修改操
18、作。并将修改后的信息保存在内存中建立的链表里。3)变量及类型: STUCORE *p; 定义结构体指针 char no10; 定义输入的待比较变量 char k; 用来接收输入的(y/n)以便通过do while判断是否继续修改信息p=head_2; 将结构体下定义的头指针head_2赋给p4)说明:执行完修改函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。并在函数调用结束时利用system(cls)执行清屏操作。修改完成后需要去往文件操作保存。void modify_score()/修改学
19、生成绩信息system(cls);STUCORE *p;char no30;char k;dop=head_2;printf(tt修改学生的详细资料n);printf(输入学生学号:);scanf(%s,no);while(strcmp(p-num,no)!=0&p-next!=NULL) p=p-next;if(strcmp(p-num),no)=0)printf(要修改的学生的详细资料:n);printf(学号:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成绩: %fn,p-sub0.subname,p-sub0.score);printf(%s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 成绩管理系统 17
限制150内