学生成绩管理系统源代码.doc
《学生成绩管理系统源代码.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统源代码.doc(26页珍藏版)》请在咨信网上搜索。
一、课程设计(论文)题目 学生成绩管理系统 二、本次课程设计(论文)应达到的目的 通过数据库大作业课程设计的操作与实践,使学生了解关系数据库的相关理论知识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。 三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等) 系统功能基本要求 : 1.学生信息维护; 2.教师信息维护; 3. 课程信息维护; 4.学生选课信息; 5. 任课教师操作课程成绩; 6. 学生查询课程成绩。 四、应收集的资料及主要参考文献: 1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版社, Parick O'Neil,Elizabeth O'Neil编著,2005.7; 2. 数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05; 五、审核批准意见 教研室主任(签字) ·这次课设我做的是学生成绩管理系统,本系统依据开发要求主要针对于教育系统,完成对日常的教育工作对学生成绩档案及其他信息的数字化管理。开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,使各项管理更加规范化。 现在在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。 目前,学校工作繁杂、资料重多,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的,但由于知识积累及时间关系,这次课设我所设计的系统不是很完善,有些地方没有考虑到,所以实用性大打折扣,后面有时间将会将系统设计的全面些,更具有实用性。 在这次课设的开发过程中,我注意使其符合软件工程的设计的要求,在之前准备了许多时间来设计表结构,并将各个模块的流程画出来,使系统的各个模块功能完善,并力求系统应具有实用性、可靠性和适用性方便用户的操作,尽量减少用户的操作,并且能够对查询结果进行分类汇总,该系统还有许多不尽如人意的地方,比如用户界面不够美观,对于出错处理不够等多方面问题,这些都有待进一步改善。 目录 设计目的 ………………………………………………………1 需求分析………………………………………………………6 概要设计………………………………………………………7 配置数据源…………………………………………………11 详细设计……………………………………………………13 设计总结……………………………………………………22 参考文献……………………………………………………23 26 C语言程序课程设计—学生成绩管理系统 一.设计目的 通过数据库大作业课程设计的操作与实践,使学生了解关系数据库的相关理论知识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。 二.问题描述 系统功能基本要求 : 1.学生信息维护; 2.教师信息维护; 3. 课程信息维护; 4.学生选课信息; 5. 任课教师操作课程成绩; 6. 学生查询课程成绩。 三. 需求分析 “学生成绩管理信息系统”包括四个模块:成绩录入、班级统计、年级统计、系统功能。这四个模块既相互联系又相互独立,班级统计、年级统计模块必须以成绩录入为基础。 (1)成绩录入模块:主要功能用来对学生的成绩进行收集和修改。具体包括学生成绩录入、修改、增加、删除、查询等功能,成绩录入需要分班级、分年级以及某个时间考试的各门功课的成绩。修改要与成绩录入相对应。增加、删除是对基本表的操作。查询条件设置应该齐全,可以班级查询,年级查询,也可以姓名查询,学号查询等等。 (2)班级统计模块: 主要功能用来对学生的成绩以班级为单位进行处理。具体包括各班学生总成绩、平均成绩、班级排名及统计班级某分数段内的学生人数;各个学生该科成绩、班级排名及统计班级某分数段内的学生人数。各项统计仅对于某学期某次考试而言。 (3)年级统计模块: 主要功能用来对学生的成绩以年级为单位进行处理。具体包括各年级学生总成绩、年级排名统计年级某分数段内的学生人数;各个学生该科成绩、年级排名及统计、年级某分数段内的学生人数。各项统计仅对于某学期某次考试而言,在统计时,还应注意各年级考试科目不同。 (4)系统功能模块: 关于系统及退出系统。 四.概要设计 在概要设计里,根据系统需求设计系统EI图,程序流图,系统功能模块图等信息,并配置了数据源。 课程号 成绩 编号 学生 学号 学号 班号 科目 图1系统EI图 图2学生信息 图3功能模块图 : 查询 条件 满足条件 数据库 显示结果 退出 不符合条件 图4查询模块流程图 学生成绩 学号 姓名 考试日期 操作系统 数据库 组成原理 计算机网络 数据结构 班级 班级号 年级号 班级人数 总人数 图5班级与学生成绩流图 (一)、系统的功能分析 该学生成绩管理系统是基于网络在线的学生成绩管理系统,在系统中分为大的两个方面:一是教师登录页面、二是学生登录页面。 (1)教师进入学生成绩管理系统的主要功能是:实现添加用户、添加成绩、学籍信息修改、修改密码、查询课程、选课、查询成绩、学籍信息查询、打印等基本功能。 (2)学生进行学生成绩管量系统的主要功能是:实现修改密码、查询课程、选课、查询成绩、学籍信息查询、打印等基本功能。 (二)、 系统功能模块图 登录 添加用户 添加成绩 信息修改 修改密码 查询课程 查询成绩 信息查询 退出系统 系统首页 教师功能界面 图6教师功能模块图 教师在学生成绩管理系统中能够对所有学生的成绩查看,对学生按学号进行精确查询、按学生姓名进行模糊查询,可以修改自己的登录密码,添加用户,添加学生的成绩,打印学生的学籍信息。 退出系统 信息查询 修改密码 选课 课程查询 成绩查询 登录 系统首页 学生功能界面 图7学生功能模块 学生在系统中的基本功能是对自己所有成绩的查询,课程的查询,个人登录密码的修改,基本信息的查看,选课,打印自己的学籍信息。 七.代码 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <windows.h> struct student //结构体定义 { int num; char name[10]; char birthday[10]; int Cyuyan; int shujujiegou; struct student *next; }; struct student *creat_by_input(); struct student *get_last_student(struct student *head); struct student *Print_menu_main() //主菜单 { printf(" *********************************************************************\n"); printf(" | 1.........输入学生信息 | \n"); printf(" | 2.........输出学生信息 | \n"); printf(" | 3.........查找学生信息 | \n"); printf(" | 4.........修改学生信息 | \n"); printf(" | 5.........插入学生信息 | \n"); printf(" | 6.........删除学生信息 | \n"); printf(" | 7.........排序学生信息 | \n"); printf(" | 0.........退出系统 | \n"); printf(" |_ _ _ _ _ _ _ _ _ _ _ _ _ | \n"); } struct student *print_table_head() { printf("+----------+----------+----------+----------+-------------+\n"); printf("| 学号 | 姓名 | 出生日期 | c成绩 |数据结构成绩 |\n"); printf("+----------+----------+----------+----------+-------------+\n"); } struct student *print_table_row(struct student *p) { printf("|%10d|%10s|%10s|%10d|%10d|\n",p->num,p->name,p->birthday,p->Cyuyan,p->shujujiegou); } void print_table_bottom() { printf("+----------+----------+----------+----------+-------------+\n"); } struct student * Creat_stu_record() //建立链表 { struct student *plaststu=NULL,*pnewstu; char continue_input='N'; struct student *head=NULL; while(1) { if(head==NULL) { head=creat_by_input(); print_table_head(); print_table_row(head); print_table_bottom(); } else { pnewstu=creat_by_input(); print_table_head(); print_table_row(pnewstu); print_table_bottom(); plaststu=get_last_student(head); plaststu->next=pnewstu;} printf("是否继续输入学生信息?(Y 继续,N 返回菜单)\n"); getchar(); continue_input=getchar(); if(continue_input=='n'||continue_input=='N') { system("cls"); Print_menu_main(); break; } } return head; } struct student *creat_by_input() { struct student *pnewstu=(struct student *)malloc(sizeof(struct student)); printf("请输入学生信息\n"); printf("学号:");scanf("%d",&pnewstu->num); printf("姓名:");scanf("%s",pnewstu->name); printf("出生年月:");scanf("%s",pnewstu->birthday); printf("请输入学生成绩\n"); printf("C语言:");scanf("%d",&(pnewstu->Cyuyan)); printf("数据结构:");scanf("%d",&(pnewstu->shujujiegou)); pnewstu->next=NULL; return pnewstu; } struct student *get_last_student(struct student *p ) { if(p->next==NULL) return p; else return get_last_student(p->next); } void Print_Stu_Doc(struct student *head) { struct student *p; char r; print_table_head(); if(head==NULL) { printf("\n No Records\n"); } for(p=head;p;p=p->next) { printf("|%10d|%10s|%10s|%10d|%10d|\n",p->num,p->name,p->birthday,p->Cyuyan,p->shujujiegou); printf("+----------+----------+----------+----------+-------------+\n");} printf("(按Enter键返回主菜单)\n"); getchar(); r=getchar(); if(r!='1') { system("cls"); Print_menu_main(); } else { system("cls"); Print_menu_main(); } } struct student *search_by_name(struct student *head)//按姓名查找 { char name[10]; struct student *p=head; char continue_input; /*int isfound=0;*/ printf("请输入要查找的姓名:"); scanf("%s",name); printf("查找%s\n",name); print_table_head(); while(p!=NULL) { if(strcmp(p->name,name)==0) { print_table_row(p); p=p->next; /* isfound=1; */ break; } p=p->next; } print_table_bottom(); printf("是否继续查找?(Y 继续;N 返回主菜单)\n"); getchar(); continue_input=getchar(); if(continue_input=='n'||continue_input=='N') { system("cls"); Print_menu_main(); } else search_by_name(head); } struct student * search_by_id(struct student *head)//按学号查找 { int id; struct student *p=head; char continue_input; /*int isfound=0;*/ printf("请输入要查找的学号:"); scanf("%d",&id); printf("查找%d\n",id); print_table_head(); while(p!=NULL) { if(p->num==id) { print_table_row(p); p=p->next; /*isfound=1;*/ break; } p=p->next; } print_table_bottom(); printf("是否继续查找?(Y 继续;N 返回主菜单)\n"); getchar(); continue_input=getchar(); if(continue_input=='n'||continue_input=='N') { system("cls"); Print_menu_main(); } else search_by_id(head); return head; } struct student*modify_record_by_id(struct student*head)//按学号修改 { struct student *p=head; int id; char continue_input; printf("请输入要修改的学生的学号:\n"); scanf("%d",&id); while(p!=NULL) { if(p->num==id) break; p=p->next; } if(p==NULL) printf("抱歉,没有学号为%d的学生\n",id); else { printf("请输入学生信息:\n"); printf("学号:");scanf("%d",&(p->num)); printf("姓名:");scanf("%s",&(p->name)); printf("出生年月:");scanf("%s",&(p->birthday)); printf("请输入学生成绩:\n"); printf("C语言:");scanf("%d",&(p->Cyuyan)); printf("数据结构:");scanf("%d",&(p->shujujiegou)); print_table_head();print_table_row(p);print_table_bottom();} printf("继续修改学生信息吗?Y 继续;N 返回主菜单\n"); getchar(); continue_input=getchar(); if(continue_input=='y'||continue_input=='Y') creat_by_input(); else { system("cls"); Print_menu_main(); } return head; } struct student*modify_record_by_name(struct student*head)//按姓名修改 { struct student*p=head; char name[10]; char continue_input; printf("请输入要修改的学生的姓名:\n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->name,name)==0) break; p=p->next; } if(p==NULL) printf("抱歉,没有姓名为%s的学生\n",name); else { printf("请输入学生信息:\n"); printf("学号:");scanf("%d",&(p->num)); printf("姓名:");scanf("%s",&(p->name)); printf("出生年月:");scanf("%s",&(p->birthday)); printf("请输入学生成绩:\n"); printf("C语言:");scanf("%d",&(p->Cyuyan)); printf("数据结构:");scanf("%d",&(p->shujujiegou)); print_table_head();print_table_row(p);print_table_bottom();} printf("继续修改学生信息吗?Y 继续;N 返回主菜单\n"); getchar(); continue_input=getchar(); if(continue_input=='y'||continue_input=='Y') creat_by_input(); else { system("cls"); Print_menu_main(); } return head; } struct student *insert_record(struct student *head)//插入 { struct student *ptr1; struct student *ptr,*stud; struct student *ptr2=head; char continue_input='N'; int id; printf("请输入一个学号,在此之前插入学生信息:"); scanf("%d",&id); stud=creat_by_input(); ptr=stud; if(head==NULL) { head=ptr;head->next=NULL; } else if(head->num==id) { ptr->next=head; head=ptr; } else { while(ptr2!=NULL) { ptr1=ptr2; ptr2=ptr1->next; if(ptr2->num==id) { ptr1->next=ptr; ptr->next=ptr2; break; } } } print_table_head(); print_table_row(ptr); print_table_bottom(); printf("是否继续插入学生信息?(Y 继续 N 返回主菜单)\n"); getchar(); continue_input=getchar(); if(continue_input=='y'||continue_input=='Y') return insert_record(head); else { system("cls"); Print_menu_main(); return head; } } struct student *Delete_record_by_id( struct student *head)//按学号删除 { struct student *p=head,*ppre=NULL; int id; char continue_input; printf("请输入要删除的学号:"); scanf("%d",&id); while(p!=NULL) { if(p->num==id) break; p=p->next; } if(p==NULL) printf("抱歉,没有该学号的学生信息!\n"); else { printf("确定要删除学号为%d的学生的信息吗?(Y 确定;N 返回主菜单)\n",p->num); getchar(); continue_input=getchar(); if(continue_input=='y'||continue_input=='Y') { ppre=head; if(ppre==p) { head=p->next; printf(" \n"); free(p); } else { while(ppre!=NULL) { if(ppre->next==p) { ppre->next=p->next; free(p); break; } ppre=ppre->next; } } printf("删除成功!"); } // Print_menu_main(); } printf("继续删除学生信息吗?(Y 继续;N 返回主菜单)"); getchar(); continue_input=getchar(); if(continue_input=='y'||continue_input=='Y') Delete_record_by_id(head); else { system("cls"); Print_menu_main(); return head; } return 0; } struct student *Delete_record_by_name( struct student *head)// 按姓名删除 { struct student *p=head,*ppre=NULL; char name[10]; char continue_input; printf("请输入要删除的姓名:"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->name,name)==0) break; p=p->next; } if(p==NULL) { printf("抱歉,没有该姓名的学生信息!\n"); goto end; } else printf("确定要删除姓名为%s的学生的信息吗?(Y 确定;N 返回主菜单)",p->name); printf("\n"); getchar(); continue_input=getchar(); if(continue_input=='y'||continue_input=='Y') { ppre=head; if(ppre==p) { head=p->next; free(p); } else { while(ppre!=NULL) { if(ppre->next==p) { ppre->next=p->next; free(p); break; } ppre=ppre->next; } } printf("删除成功!"); } //else Print_menu_main(); end: printf("继续删除学生信息吗?(Y 继续;N 返回主菜单)"); printf("\n"); getchar(); continue_input=getchar(); if(continue_input=='Y'||continue_input=='y') Delete_record_by_name(head); else { system("cls"); Print_menu_main();return head; } return 0; } struct student * Sorting_record_by_id(struct student *head)//按学号排序 { int i=0,j,k,r; struct student *pt1,*pt2,*pt,m; if(head==NULL) { printf("现在无同学记录\n"); printf("(按Enter键返回主菜单)\n"); getchar(); r=getchar(); if(r!='1') { system("cls"); Print_menu_main(); } else { system("cls"); Print_menu_main(); } } else { pt1=head; pt2=head->next; for(pt=head;pt;pt=pt->next) i++; for(j=1;j<i;j++) { pt1=head; pt2=head->next; for(k=1;k<i-j+1;k++) { if(pt1->num>pt2->num) { m=*pt1; *pt1=*pt2; *pt2=m; pt2->next=pt1->next; pt1->next=pt2; } pt1=pt2; pt2=pt1->next; } } } print_table_head(); for(pt=head;pt;pt=pt->next) { printf("|%10d|%10s|%10s|%10d|%10d|\n",pt->num,pt->name,pt->birthday,pt->Cyuyan,pt->shujujiegou); printf("+----------+----------+----------+----------+----------+\n");} return head; } int main() { struct student *head=NULL; struct student *p; int choice;int select;char m;char r; system("color e"); printf(" \n"); printf(" \n"); printf(" 欢迎使用学生成绩管理系统! \n"); printf(" \n"); printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf(" \n"); printf("...............................................................................\n"); printf("请按照提示信息完成操作\n"); Print_menu_main(); printf(" \n"); printf(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\n"); printf(" \n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); while(choice!=0) { printf("请选择所要执行的操作:\n"); start: if(scanf("%d- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 源代码
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文