学生成绩管理系统(1)
学生成绩管理系统论文1

摘要本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。
开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。
在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。
本论文主要从系统分析、系统设计、系统实施与使用等几个方面进行介绍。
学生信息管理系统是典型的信息管理系统,经过分析,我们使用MICROSOFT公司的VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
本系统主要用于学生成绩管理,总体任务是实现学生成绩信息的系统化、规范化和自动化。
其主要任务是用计算机对学生各科成绩进行管理,如修改、增加、删除,另外还考虑到学生名次的排序等,针对这些要求设计了学生成绩管理系统。
【关键词】成绩管理信息系统信息化数据库第一章绪论本次论文是以学校学生管理信息系统建设中的成绩管理系统的开发为背景,论述了管理信息系统的概念、结构及系统开发的基本原理和方法,全文共分为绪论、系统分析、概要设计、详细设计、开发总结、致谢、参考文献、附录等。
1.1 问题的提出随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观。
学生学分制成绩管理系统[1]
![学生学分制成绩管理系统[1]](https://img.taocdn.com/s3/m/f7697e707f21af45b307e87101f69e314332fa17.png)
学生学分制成绩管理系统摘要:系统基于B/S模式,并利用IIS+ASP技术+Access数据库+SQL查询语言实现的。
重点介绍了学生学分制成绩管理系统的实现过程:包括系统分析、系统调查、功能设计、数据库设计、系统实现以及系统测试和调试等。
系统包括用户管理、院系管理、专业管理、班级管理、学藉及成绩管理、学位成绩查询、留级学生成绩分数线管理、学分绩点等级管理和毕业总学分管理等功能。
关键词:ADO;ASP;数据库;用户管理目录摘要ⅠAbstract Ⅱ1 前言11.1 课题背景11.2 设计思想12 相关的技术知识22.1 运行环境22.2 开发工具22.3 ASP编程技术22.4 数据库概述33 系统总体设计43.1 功能要求43.2 系统设计流程43.2.1 问题定义43.2.2 可行性研究43.2.3 需求分析43.2.4 总体设计43.2.5 详细设计53.2.6 程序编码53.2.7 成绩管理系统综合测试5 3.2.8 成绩管理系统的维护5 3.3 详细设计与总体规划6 3.4 功能模块设计63.5 系统功能概述74 数据库的设计94.1 数据库的结构94.1.1 管理员数据库94.1.2 院系数据库104.1.3 专业数据库104.1.4 班级数据库114.1.5 课程数据库114.1.6 学生管理数据库124.1.7 学生查询数据库124.1.8 成绩管理数据库134.1.9 成绩查询数据库134.1.10 学分绩点数据库144.2 数据库的连接155 具体设计与实现175.1 查询模块175.2 登录模块175.2.1 登录界面设计175.2.2 登录程序设计175.3 菜单模块185.3.1 院系管理模块及其实现195.3.2 学生管理模块及其实现20A. 学生留级管理20B. 学生转专业管理206 总结21致谢22参考文献231前言1.1课题背景学生学分制成绩管理系统是一个教育单位不可缺少的部分。
学生成绩管理系统(详细操作过程)

学生成绩管理系统我将把我的实现步骤完整的写出来,我是在VC 6.0版本下用MFC实现的。
我创建的基于单文档的应用程序,过程不介绍,大家都会。
下面的是我系统菜单:思路:刚进入系统时,只有“登录”菜单可用,其他三个菜单项都是灰色不可用的。
当用户点“进入系统”菜单项时,用户输入用户名、密码和用户类型,系统将根据相应的用户权限使相应的菜单可用,并且“进入系统”菜单项变为不可用。
如:如果用户类型是学生,那么只有学生权限菜单可用,而“教师权限”和“管理员权限”都不可用,同时“进入系统”变为不可用。
“学生权限”下只有“查询成绩”,因为学生只可以查询自己相应的成绩;“教师权限”下有“查询学生成绩”和“增改删学生成绩”两个菜单项,因为教师除了可以查询学生成绩还可以增加、修改和删除学生成绩;“管理员权限”下有“管理学生”和“管理教师”两个菜单项。
整体设计:因为我们要设置系统菜单的状态,所以必须在CMainFrame中添加相应的函数和代码,具体步骤如下:【步骤1】由于系统要使用ODBC类操作数据库,所以需要在stdafx.h中加入代码:#include <afxdb.h>【步骤2】在CMainFrame中的OnCreat()中添加代码如下,实现菜单的初始化工作,当用户没进入系统之前,只有“登陆”菜单下的“进入系统”菜单项可用,而“退出系统”和其他3个权限菜单都不可用,即都是灰色的。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){//使“退出系统”和其他3个权限菜单都不可用,即都是灰色的GetMenu()->GetSubMenu(0)-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(2,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);}【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。
学生成绩管理系统(1)

题目:学生成绩管理系统(1)一、课程设计时间20010~11第2学期第15周,共计1周,20学时。
二、课程设计内容用C语言编写软件完成以下任务:1录入学生数据信息(不用考虑学期),学生信息至少包括姓名、学号、数学成绩三方面,学生信息应及时保存在文件中;2根据学号查询某生成绩;3插入新的学生数据信息。
4统计分析:要求能够将成绩排序,并统计及格人数及及格率。
三、课程设计要求:1. 程序质量:●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“录入学生信息”、“查询某学生成绩”、“插入新生信息”、“统计分析”、“退出”5项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字指导教师:________ 学生签名:________五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (2)三、主要界面截图 (3)四、技术要点 (17)五、个人总结 (20)六、参考文献 (20)七、源程序 (21)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型的数据管理系统,其使用者被假定为某办公室的学生成绩管理人员,系统应该具有安全、稳定、功能齐全的特点。
1. 安全性分析系统管理的数据涉及到学院的所有同学,数据量较大且是一种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3. 主要功能分析(1)数据录入:允许用户输入学号、姓名、数学成绩。
对用户由于疏忽录入的非法数据,能够及时提示并更正。
学生成绩管理系统

目录1 需求分析 (1)1.1行业现状 (1)1.2可行性分析 (2)1.3 系统运行环境 (3)2 系统设计 (4)2.1 E-R图 (4)2.2 数据字典 (6)3 代码 (9)总结 (10)参考文献 (11)1 需求分析该学生成绩管理系统,实现简单的密码修改、成绩查询、课程查询、学生查询等操作,并能实现简单的数据统计。
此系统主要完成用户密码登陆、用户密码的修改、成绩查询、课程查询、学生查询、具体成绩查询等基本功能。
(一)用户密码登录:在登录程序之前会先弹出一个登录对话框,在正确的输入了数据库中存储的用户和密码后才能登录程序。
(二)用户密码的修改在成功登录了程序之后用户可以根据自己的需要修改当前密码。
(三)成绩查询1.成绩修改前选中要修改的成绩信息,然后进行修改。
2.成绩添加直接弹出添加对话框,然后进行添加。
3.成绩删除前选中要删除的成绩信息,然后直接删除。
(四) 课程查询1.课程修改实现对课程名、学时、学分的修改。
2.课程添加对一门新开设的课程进行录入,并存入数据库。
3.课程删除对一门不再开设的课程进行删除,并从数据库中删除。
(五)学生查询1 .学生信息修改修改选中当前学生的信息。
2 .学生信息添加增加新学生的信息。
3.学生信息删除删除选中当前学生信息。
1.1 行业现状在现代,高科技的飞跃发展,计算机的大量普及,使得人们生活节奏越来越快。
因此对教育行业的多元信息进行有效的管理工作,也成为教育行业中的重中之重。
目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
为各高校教务工作人员减轻负,提高工作效率,所以制作了学生成绩管理系统。
学生成绩管理系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。
比较系统地对教务、教学上的各项服务和信息进行管理,使数据管理更现代化、自动化、智能化、人性化。
学生成绩管理系统设计报告

附录一应用程序综合设计汇报——题目: 学生成绩管理系统2023年1月1.需求分析学生成绩管理系统是学生管理系统旳重要构成部分, 对学生旳德、智、体全面评估有很大旳作用, 因此学生成绩管理系统应当可认为顾客提供以便旳查询平台和数据存储功能。
老式是使用人工旳方式对学生旳信息进行存储, 对于个人旳学生成绩来说, 数据旳整顿和分析就显得很麻烦, 不利于查找、更新和维护。
因此, 顾客但愿制作一种学生成绩管理系统, 来提高老师旳工作效率, 同步予以老师便利。
根据与顾客旳交流, 一般对学生成绩管理系统有如下几点旳规定:A.可认为顾客提供以便旳数据查询功能, 满足复杂、多样旳数据查询需求。
一般我们所需要旳数据都不是可以从原始数据库中直接读取旳, 往往需要一定旳加工, 这样才能使老式复杂旳人工操作变得简朴又精确。
B、成绩管理要可以提供学校考试安排旳管理, 学生考试成绩旳管理, 以及学生单科和总成绩旳记录和分析等功能。
这些是一种学生成绩管理系统最重要旳功能构成, 包括数据旳集成、整合和分析。
上述是顾客对系统需求和功能需求旳两点规定, 我根据顾客对功能旳需求, 将整个学生成绩管理系统提成两个大旳模块, 即基本信息设置模块和成绩管理模块(如图1)。
为了能使本系统可以基本独立, 通过度析, 我又添加了学生基本信息添加功能和班级基本信息添加功能, 这样系统就可以实现本系统旳全面界面化。
2.概要设计根据需求分析, 成绩管理系统重要是实现对考试和学生成绩旳管理功能, 我设计旳整个学生成绩管理系统分为两个大旳模块, 分别为基本信息设置模块和成绩管理模块, 这两个模块包括了成绩管理系统旳所有数据存储和功能需求, 为了愈加清晰了分解学生成绩管理系统, 每个大模块又由几种子功能模块构成, 完毕顾客旳需求。
两个大模块旳子模块详细划分如图2所示:基本信息设置是成绩管理系统中某些基本数据旳添加和修改, 为了可以实现本学生成绩管理系统旳独立性, 我在基本信息设置模块中添加了学生和班级信息添加模块, 以便顾客能直接添加新增旳数据, 而不需要通过程序员来完毕。
学生成绩管理系统

“学生学习成绩管理系统”用于对学生学习成绩数据文件的新文件创建和老文件管理,并可以进行密码设置。
具体要求实现的功能如下:1、输入/添加记录:将每一个学生的学号、姓名和各科学习成绩作为一个记录进行输入或添加。
要求经过密码验证后能建立一个新的数据文件或给已建立好的数据文件增加记录。
2、显示、查询记录:能按学生姓名(或学号)显示、查询一个或多个学生的各门(或某门)功课的成绩和平均成绩。
3、修改记录:可以对数据文件中的任意记录的数据进行修改,在修改前后对该记录的内容进行显示,并设确认提示。
(要求设置密码,验证通过后方可进入修改环节)4、删除记录:可以删除数据文件中的任一记录,包括逻辑删除(具有恢复功能)和物理删除(不可恢复)。
(说明:该功能也应设置为经过验证密码后才可实施删除)5、成绩排序:采用不同的排序方法对单科成绩和总(或平均)成绩进行排序,但不能改变原记录的顺序。
6、统计功能:(A)计算各门课程全班总成绩及平均成绩;(B)统计各门课程得分为100、90~99、80~89、70~79、60~69和不及格学生的人数,以及与全班总人数的百分比。
7、其他:该软件应具有系统名称、设计单位或个人等基本信息。
学生成绩管理系统源程序清单:#include<stdio.h>#include<string.h>#include<malloc.h>#include<conio.h>#define NULL 0#define LEN sizeof(student)#define N 5typedef struct stu{int flag;long num;char name[10];int score[N];struct stu *next;}student;void edit();/*编辑菜单*/void search(student *head); /*查找函数*/student *search_number(student *head,long number); /*按学号查找*/ void search_name(student *head); /*按姓名查找*/student *search_score(student *head,int min,int max,int i); /*按成绩查找*/void enter_record(student *p); /*输入成绩*/student *creat(void); /*建立链表*/student * insert(student *head); /*插入结点*/void count(int *p); /*计算总成绩及平均成绩*/void print(student *p); /*输出结点*/void print_title();/*输出标题*/student *delete(student *head); /*删除结点*/void recover(student *head); /*恢复删除*/void revise(student *head); /*修改记录*/void tongji(student *head); /*统计*/void paixu(student *head,int m); /*排序*/int cipher_check();/*密码检测*/void set_up_cipher();/*设立密码*/student *load();/*载入*/void save(student *head); /*保存*/void about();/*关于*/int n;char cipher[11]={""};/*字符串,保存密码*/main(){char c;student *head=NULL;system("cls");about();for(;;){system("cls");printf("************************************************************ *******************\n");printf("\t\t Welcome to\n");printf("\n\t\t The student score manage system\n");printf("*************************************MENU******************* *******************\n");printf("\t\t\t1. Creat the record\n");printf("\t\t\t2. Load the file\n");printf("\t\t\t3. Edit the record\n");printf("\t\t\t4. About design\n");printf("\t\t\t5. Quit\n");printf("************************************************************ ********************\n");printf("\n\t\t\tEnter your choice(1~5):");for(;;){c=getchar();if(c=='\n') continue;else if(c<'1'||c>'5') printf("\t\t\tEnter your choice(1~5):"); else break;}getchar();switch (c){case '1':head=creat();if(head==NULL){printf("Empty record!\n\nEnter any key to continue...\n"); getch();break;}set_up_cipher();printf("Enter any key to edit menu...");getch();edit(head);break;case '2':head=load();if(head==NULL){printf("\nEnter any key to continue...");getch();break;}printf("Enter any key to edit menu...");getch();edit(head);break;case '3':edit(head);break;case '4':about();break;case '5':exit(0);}}}void edit(student *head)/*编辑菜单*/{char c,m;int i,f=0;for(;;){system("cls");printf("***********************************EDIT*MENU**************** ********************\n");printf("\t\t\t1.Save the record.\n");printf("\t\t\t2.Insert a record.\n");printf("\t\t\t3.Delete a record.\n");printf("\t\t\t4.Recover the record.\n");printf("\t\t\t5.Revise the record.\n");printf("\t\t\t6.Search records.\n");printf("\t\t\t7.Sort the records.\n");printf("\t\t\t8.Tongji the records.\n");printf("\t\t\t9.Change the password.\n");printf("\t\t\t0.Return to main menu.\n");printf("************************************************************ ********************\n");printf("\t\t\tEnter your choice(0~9):");for(;;){c=getchar();if(c=='\n') continue;else if(c<'0'||c>'9') printf("\t\t\tEnter your choice(0~9):"); else break;}switch (c){case '1':save(head);f=0;break;case '2':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}head=insert(head);f=1;break;case '3':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}head=delete(head);f=1;break;case '4':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}recover(head);f=1;break;case '5':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}revise(head);f=1;break;case '6':search(head);break;case '7':printf("Sort on which subject?\n");printf("score1(1)/score2(2)/score3(3)/sum(4)\n");for(;;){scanf("%c",&m);if(m=='\n') ;else if(m>='1'&&m<='4') break;else printf("error!enter again:");}i=m-'0'-1;paixu(head,i);break;case '8':tongji(head);break;case '9':printf("Please enter the old password:\n");if(cipher_check()) {set_up_cipher();f=1;}else printf("Wrong password!\n");break;case '0':if(f==1){char c;printf("This record has already been revised.\nSave the record or not? ");for(;;){c=getchar();if(c=='\n') continue;else if(c=='y'||c=='Y') {save(head);break;}else if(c=='n'||c=='N') break;else printf("error!enter again:");}}return;}printf("\nenter any key to return...");getch();}}student *creat(void) /*建立链表*/{student *head,*p1,*p2;n=0;p1=(student *)malloc(LEN);p2=NULL;printf("please enter number");printf("(enter 0 to end):\n");scanf("%ld",&p1->num);head=NULL;while(p1->num!=0){n++;enter_record(p1);if(n==1) head=p1;else p2->next=p1;p2=p1;p1=(student *)malloc(LEN);printf("Please enter next number(0 to end):\n");scanf("%ld",&p1->num);}if(n!=0)p2->next=NULL;free(p1);return head;}student * insert(student *head) /*插入结点*/{student *p1,*p2,*new_node;for(;;){new_node=(student *)malloc(LEN);if(new_node==NULL){printf("Database is full,can't add more record.\n");return NULL;}printf("\nPlease enter the number you want to insert\n(enter 0 to end):");scanf("%ld",&new_node->num);if(new_node->num==0) {break;}for(p1=head,p2=NULL;p1!=NULL&&(new_node->num)>(p1->num);p2=p1,p1=p1->next);if(p1!=NULL&&(p1->num)==(new_node->num)&&p1->flag==1){char c;printf("This number already exists:\n");print_title();print(p1);printf("Cover or not?(y/n)?");for(;;){c=getchar();if(c=='n'||c=='N'){free(new_node);break;}else if(c=='y'||c=='Y'){free(new_node);enter_record(p1);break;}else if(c!='\n')printf("Error!enter again:");else continue;}}else if(p1!=NULL&&(p1->num)==(new_node->num)){n++;free(new_node);enter_record(p1);}else{n++;enter_record(new_node);new_node->next=p1;if(p2==NULL)head=new_node;elsep2->next=new_node;}}return head;}student *delete(student *head) /*删除结点*/{long number;char c;student *p1,*p2;for(;;){printf("Please enter the number you want to delete(enter 0 to end):\n");scanf("%ld",&number);if(!number) break;for(p1=head,p2=NULL;p1!=NULL&&p1->num!=number;p2=p1,p1=p1->next);if(p1==NULL||p1->flag==0){printf("this number doesn't exist.\n");}else{print_title();print(p1);printf("delete this record?\n");printf("sure(s)/cancle(c)/delete thoroughly(t)\n");for(;;){c=getchar();if(c=='c'||c=='C') break;else if(c=='s'||c=='S'||c=='t'||c=='T'){n--;if(c=='s'||c=='S')p1->flag=0;else{if(p2==NULL) head=p1->next;else p2->next=p1->next;free(p1);}break;}else if(c!='\n')printf("error!enter again:");}}}return head;}void recover(student *head) /*恢复删除*/{student *p;long number;printf("recover which number?\n");scanf("%ld",&number);if(number==0) return;p=search_number(head,number);if(p==NULL) printf("Can't recover this number!\n");else if(p->flag==1) printf("This number has not been deleted.\n"); else {n++;p->flag=1;printf("Recover success!\n");}}void revise(student *head) /*修改记录*/{char c;long number;student *p1;for(;;){printf("Which number do you want to revise?\n(enter 0 to end):"); scanf("%ld",&number);if(number==0) return;p1=search_number(head,number);if(p1==NULL||p1->flag==0) {printf("this number doesn'texist.\n");continue;}print_title();print(p1);printf("Do you want to revise the record?(y/n)\n");for(;;){c=getchar();if(c=='\n') continue;else if(c=='n'||c=='N') break;else if(c=='y'||c=='Y'){printf("please enter new record:\n");enter_record(p1);printf("the new record is:\n");print_title();print(p1);break;}else printf("error,enter again:");}}}void search(student *head) /*查找函数*/{char c;int i,min,max;long number;student *p;printf("Please enter search conditions:\n");printf("all(a)/number(n)/name(m)/score(s)/return(r)\n");for(;;){c=getchar();if(c=='\n') continue;else if(c=='s'){printf("Which couse do you want to search?\n");printf("score1(1)/score2(2)/score3(3)/total(4)/average(5)");for(;;){c=getchar();if(c=='\n') continue;else if(c>'0'&&c<'6') {i=c-'0'-1;break;}else printf("Error,enter again:");}printf("please enter min and max score(min-max):");scanf("%d-%d",&min,&max);p=search_score(head,min,max,i);if(p==NULL)printf("No record\n");else{ print_title();for(;p!=NULL;p=search_score(p->next,min,max,i))print(p);}}else switch(c){case 'a':print_title();for(p=head;p!=NULL;p=p->next)if(p->flag==1) print(p);break;case 'n':printf("What number do you want to search?\n");scanf("%ld",&number);p=search_number(head,number);if(p==NULL||p->flag==0) printf("This number doesn't exist!\n"); else{print_title();print(p);}break;case 'm':search_name(head);break;case 'r': return;default :printf("this condition doesn't exist,Pleaseenter again:\n");printf("all(a)/number(n)/name(m)/score(s)/return(r)\n");continue;}printf("Please enter search conditions:\n");printf("all(a)/number(n)/name(m)/score(s)/return(r)\n");}}student *search_number(student *head,long number) /*按学号查找*/ {student * p;for(p=head;p!=NULL&&p->num!=number;p=p->next);return p;}void search_name(student *head) /*按姓名查找*/{student *p1;char *p,str[10];p=str;printf("please enter the name you want to search:\n");scanf("%s",p);for(p1=head;p1!=NULL;p1=p1->next){if(p1->flag==0) continue;if(strcmp(p,p1->name)==0) break;}if(p1==NULL) printf("this people doesn't exist.\n");else{print_title();for(;p1!=NULL;p1=p1->next)if(strcmp(p,p1->name)==0&&p1->flag==1)print(p1);}}student *search_score(student *head,int min,int max,int i) /*按成绩查找*/{student *p1;for(p1=head;p1!=NULL;p1=p1->next)if(p1->flag==1&&p1->score[i]>=min&&p1->score[i]<=max) break;return p1;}void paixu(student *head,int m)/*排序*/{long *number,t;int i,j,k,max;student *p;number=calloc(n,sizeof(long));i=0;for(p=head;p!=NULL;p=p->next){if(p->flag==0) continue;number[i]=p->num;i++;}for(i=0;i<n-1;i++){k=i;max=search_number(head,number[i])->score[m];for(j=i+1;j<n;j++){p=search_number(head,number[j]);if(p->score[m]>max){max=p->score[m];k=j;}}if(k!=i){t=number[i];number[i]=number[k];number[k]=t;}}printf("************************************************************ ****************\n");if(m==3) printf("Sord by sum score:\n");else printf("Sord by score%d:\n",m+1);printf("mingci ");printf("number name score1 score2 score3 total aver\n");for(i=0;i<n;i++){printf("%4d ",i+1);print(search_number(head,number[i]));}}void tongji(student *head) /*统计*/{int i,sum,s,j;student *p1;printf("************************************************************ ****************\n");printf(" sum average\n");for(i=0;i<N-2;i++){sum=0;for(p1=head;p1!=NULL;p1=p1->next)if(p1->flag==1) sum+=p1->score[i];printf(" score%d:%6d%9.2f\n",i+1,sum,(float)sum/n);}for(sum=0,p1=head;p1!=NULL;p1=p1->next)if(p1->flag==1) sum+=p1->score[N-2];printf(" sum :%6d%9.2f\n",sum,(float)sum/n);printf("average:%6.2f%9.2f\n",(float)sum/(N-2),(float)sum/(N-2)/n); printf("************************************************************ ****************\n");printf("Ge fenshuduan renshu:\n");printf(" 100 90-99 80-89 70-79 6 0-69 fail\n");printf(" score digit rate digit rate digit rate digit rate digit rate digit rate\n");for(i=0;i<N-2;i++){printf("score%d",i+1);for(s=100;s>=60;s-=10){j=0;for(p1=search_score(head,s,s+9,i);p1!=NULL;p1=search_score(p1->next,s,s+9,i))j++;printf("%5d,%6.2f",j,(float)j/n);}for(j=0,p1=search_score(head,0,59,i);p1!=NULL;p1=search_score(p1->next,0,59,i))j++;printf("%5d,%6.2f",j,(float)j/n);printf("\n");}}void about()/*关于设计*/{clrscr();printf("\n\n\n\n\n\n");printf("\t\t\b*********************ABOUT************************\n") ;printf("\t\t\b*\tThe Student Score Manage System\t\t*\n");printf("\t\t\b*\t\t\t\t\t\t*\n");printf("\t\t\b*\t\t\b llrsnake \t\t\t*\n");printf("\t\t\b*\t\t\b 1000000001\t\t\t*\n");printf("\t\t\b**************************************************\n"); printf("\n\t\t\tPress any key to return...");getch();}student *load()/*载入*/{FILE *fp;student *head=NULL,*p1,*p2;char c[10];printf("please enter the file name:\n");scanf("%s",c);if((fp=fopen(c,"rb"))==NULL){printf("Can not open the file %s\n",c); return head;}printf("loading...\n");n=0;fgets(cipher,11,fp);p1=(student *)malloc(LEN);if(p1==NULL){printf("Out of memory!\n");return(head);}head=p1;while(!feof(fp)){if(fread(p1,LEN,1,fp)!=1)break;n++;p1->next=(student *)malloc(LEN);if(!p1->next){printf("Out of memory!\n");return (head);}p2=p1;p1=p1->next;}p2->next=NULL;fclose(fp);printf("load successfuly!\n");return head;}void save(student *head) /*保存*/{FILE *fp;student *p;char str[10];int i;printf("please enter the file name:\n");scanf("%s",str);if((fp=fopen(str,"wb"))==NULL){printf("Cannot open file!\n");return;}printf("Saving...\n");for(i=0;i<10;i++)fputc(cipher[i],fp);for(p=head;p!=NULL;p=p->next)if(fwrite(p,LEN,1,fp)!=1)printf("file save error!\n");printf("save successfully!\n");fclose(fp);}int cipher_check()/*密码检测*/{char c[11];int i,flag;for(i=0;(c[i]=getch())!='\r'&&i<11;){if(c[i]==8){if(i==0) continue;else {printf("\b");clreol();i--;continue;} }if(i==10) continue;printf("*");i++;}c[i]='\0';printf("\n");flag=!strcmp(c,cipher);return flag;}void set_up_cipher()/*设立密码*/{int i=0,flag;char c;printf("\nPlease input the password:\n"); while((cipher[i]=getch())!='\r'&&i<11){if(cipher[i]==8){if(i==0) continue;else{i--;printf("\b");clreol();continue;}if(i==10) continue;printf("*");i++;}cipher[i]='\0';printf("\nplease input the password again:\n"); flag=cipher_check(cipher);if(flag==0){printf("password set up fail\n");cipher[0]='\0';}if(flag==1)printf("\npassword set up success!\n");}void enter_record(student *p) /*输入信息*/{int i;p->flag=1;printf("name:");scanf("%s",p->name);for(i=0;i<N-2;i++){printf("score%d=",i+1);for(;;){scanf("%d",(p->score)+i);if(p->score[i]>100||p->score[i]<0)printf("Wrong score,enter again:");else break;}count(p->score);}}void count(int *p) /*计算总成绩及平均成绩*/{int i,sum=0,aver;for(i=0;i<N-2;i++)sum+=p[i];aver=(int)sum/i;p[N-2]=sum;p[N-1]=aver;}void print(student *p) /*输出结点*/printf("%5ld %-6s",p->num,p->name);for(i=0;i<N;i++)printf("%7d",p->score[i]);printf("\n");}void print_title()/*输出标题*/{printf("\n********************************************************** **********************\n");printf("number name score1 score2 score3 total aver\n");}。
学生成绩信息管理系统

学绩信息管理系统学绩信息管理系统文档1. 系统简介1.1 目的和背景1.2 功能概述2. 用户需求分析2.1 学生用户需求- 查看个人成绩记录及排名情况。
- 提交作业、报告等课程相关文件。
- 查询选修课程信息并进行选课操作。
2.2 教师用户需求- 录入学绩,并计算平均分与班级排名。
- 发布作业、考试安排以及其他通知事项给学生。
3.系统设计与架构3.1数据库设计-设计数据库表结构,包括:学生表、教师表、科目表等。
3-2功能模块划分-划定各个子模块职责范围,如登录认证模块, 成绩录入/查询模块, 文件模块等。
4.详细功能描述4-1登陆注册–实现不同角色(管理员/老师/學生)登錄註冊功能,包含用戶驗證與權限控制部分。
4-2成績查詢–允许學生根据条件查询个人成绩,并显示排名情况。
4-3成績录入–允许教师输入学绩,系统自动计算平均分与班级排名,并提供相应的错误提示功能。
4-4 文件- 学生可以提交作业、报告等文件;老师可发布课程资料给学生。
5. 系统测试5.1 单元测试- 对每个模块进行单元测试以验证其正确性和稳定性。
6.部署与运行环境6-1硬件需求-列出服务器及客户端所需要的硬件配置要求。
6-2软件需求-列出操作系統, 数据库管理系统和其他必须安装在服务器上的软体需求。
7.附件8.法律名词及注释:- GDPR(General Data Protection Regulation):欧洲通用数据保护条例,是为了加强对于公民隐私权利和信息处理规范而制定的一项监管政策。
- COPPA (Children's Online Privacy Protection Act):儿童在线隐私保护法案,在美国旨在增强对13岁以下孩子们网络活动中收集到他们身份信息使用者责任意识方面做了规定。
- FERPA (Family Educational Rights and Privacy Act):家庭教育权利和隐私法案,是美国一项旨在保护学生个人信息的联邦法律。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生成绩管理系统(1)目录摘要 (1)1.绪论 (1)2. 系统分析 (1)2.1功能需求 (1)2.2数据需求 (1)2.3性能需求 (2)3. 总体设计 .................................................................................. 错误!未定义书签。
3.1系统功能模块描述 (2)3.2录入函数功能设计 (3)3.3查找函数功能设计 (4)3.4统计函数功能设计 (5)3.5添加函数功能设计 (6)3.6更新函数功能设计 (7)3.7执行流程介绍设计 (8)4. 调试与测试 (8)4.1调试 (9)4.2测试 (10)5. 结论 (10)结束语 (10)参考文献 (10)附录1-用户手册 (11)附录2-源程序 (17)摘要随着科学教育事业的发展,学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
关键词:学习成绩查询;管理;C语言1.绪论随着科技的发展,愈来愈多的学校选择了运用学生成绩管理系统来管理学生的各项信息。
学生成绩管理系统是一个学校不可缺少的部分,学校可以利用这套程序进行学生成绩的各种信息管理,也方便查询修改成绩的各项信息,可以提高管理工作的效率和简化管理工作的程序。
有利的为学校节省了运作成本,优化资源利用率,这也正是编写本程序的目的所在。
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
1.录入学生数据信息(不用考虑学期),学生信息至少包括姓名、学号、数学成绩三方面,学生信息应及时保存在文件中;2.根据学号查询某生成绩;3.插入新的学生数据信息。
2. 系统分析2.1 功能需求本系统主要是学校对学生成绩管理的系统。
该系统需要有录入信息,删除信息,根据所给条件查询信息,修改信息,统计信息,循环显示主菜单,保存信息的功能,并且利用显示函数将学生的所有信息显示出来。
2.2数据需求需要向系统输入学号,姓名,数学成绩等信息。
2.3 性能需求在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。
3.总体设计3.1系统功能模块描述图3-1学生成绩管理系统模块图3.2 录入函数功能设计首先会给定一个要输入的人数界限,根据自己要输入的人数进行输入,系统会提示你输入学生的信息,其中包括姓名、性别、各科目的分数,系统会自动生成一个有序数列,即学号。
其执行流程图如下所示:图3-2录入函数设计3.3 查找函数功能设计查找函数有两种查找方法,分别为按姓名和学号查找,当输入为flag=1时,系统会提示按照姓名查找,当输入为flag=2时,系统则提示按照学号查找,其流程图为:图统计函数会统计各科目的最高分、最低分以及平均分的统计,并且按照操作进行科目统计。
会有4中选择,当flag=1时,对数学进行统计;当flag=2时,对英语进行统计,当flag=3时,对c成绩进行统计,当flag=4时,统计函数功能结束。
跳出循环。
如图3-4所示:图3-4 统计函数设计添加函数主要是对额外的学生记录进行添加,同前面一样,也是对其信息的输入,并且输入完成之后,再对学生成绩进行排序和统计,如图所示图3-5 添加函数设计更新函数包含了两个子函数,分别是修改和删除两项,修改主要是修改录入函数里面错误的内容,而删除主要是删除一些不必要的学生信息,其功能流程如图3-6所示图3-6 更新函数设计3.7执行流程介绍主要是主函数调用子函数来进行操作和子函数相互之间的调用来完成执行,如图:图3-7流程执行图4. 调试与测试4.1 调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。
调试的任务是及时改正测试过程中发现的软件错误。
具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。
然后仔细研究推断代码以确定问题的原因,并设法改正。
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。
本系统调试过程中遇到问题、原因和解决方法如下面介绍。
(1)程序不能运行定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。
(2)不能正确输出信息,有乱码现象原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。
(3)程序运行途中,出现错误,被迫中止其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。
4.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。
或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价。
测试数据过程如下。
当职工信息管理程序已经具备录入,利用显示函数将职工所有信息显示,删除,修改,按指定条件查询,统计,查询,保存信息,循环显示主菜单功能时,现在测试系统是否能够正确显示系统内部所有的职工信息,当系统中已存入一定的职工信息当执行显示功能时,系统会将内部职工信息全部列出,当系统中未存入任何职工的信息时执行显示职工系统内部信息,系统会提示“list null!”。
创建一条职工信息:工号:1 姓名:marry 性别:F 年龄:21 学历:U 工资:2458 联系电话:48425678则输出如下:the worker's information:No name sex age 学历pay telephone1 haha F 21 U 2458 484256785. 结论课程设计顺利完成,题目所要求的功能也都一一实现,可以对职工信息进行添加,修改,删除,查询,模糊查询,按条件查询,存储至文本文件等,在通常情况下,可以良好的运作。
不过这个程序还有些不够完善,例如有时候,输出的结果会因为字符的长短,与上面的提示栏对不上。
而且,由于自己英语的不够特别好,后几个功能不知道该怎么翻译,就直接写的汉字,显得程序主菜单有点乱,以后会加强英语,好好规划编程。
结束语为期两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间,我学到了很多课堂上学不到的东西,而且,将所学付之于实践,理论联系实际,是令我很兴奋的,但同时也感觉到了难度。
对C语言,有了更深一步的了解,并且培养出了良好的思考方式,对于编程。
虽然困难很多,问题出现的也很多,但好在,顺利完成任务了,很有成就感。
.参考文献[1] 谭浩强. C语言程序设计(第三版).北京:清华大学出版社,2005.7附录1-用户手册主菜单测试进入系统后,主函数调用menu函数,显示主菜单,并提示用户根据屏幕输入选择。
截图如下图4-1所示:图4-1主菜单测试4.2录入功能测试主函数调用此函数后,屏幕依次提示用户输入人数,姓名、性别、计算机分数、数学分数和英语分数信息,截图如下图4-2所示:图4-2录入功能测试4.3浏览功能测试进入此功能后屏幕显示菜单,提示用户根据需要输入选择。
并观看全部信息。
截图如下图4-3所示:图4-3浏览功能测试4.4查找功能测试4.4.1按姓名查找按屏幕提示输入所要查找的姓名,如有符合条件的信息记录,则全部显示出来。
截图如下图4-4所示:图4-4按姓名查找测试4.4.2按学号查找按屏幕提示输入所要查找的学号,有符合的学生则显示此学生信息。
截图如下图5-4所示:图4-4按学号查找测试4.5排序功能测试按屏幕操作对学生记录进行排序。
截图如下图4-5所示:图4-5排序功能测试4.6统计功能测试按操作对学生的各们科目的最大,和最小以及平均分进行统计,截图如下图4-6所示:图4-6统计功能测试4.7更新功能测试4.7.1修改功能测试根据输入的学号找到指定的信息记录,然后可以选择修改的项。
如下图4-7所示:图4-7修改功能测试4.7.2删除功能测试根据指定的学号找到相应的信息记录,进行删除的操作。
截图如下图4-7所示:图4-7删除功能测试4.8 添加功能测试添加若干各学生的信息,同样包括他的名字,性别,学号及各科目分数。
截图如下4-8:图4-8添加功能测试附录2-源程序#include <stdio.h>#include"string.h"#include"time.h"#include"stdlib.h"int menu();void save();void incre();void load();void luru();int chazhao();void liulan();void tianjia();void paixu();void tongji();void shanchu_xiugai();#define N 50int cout[10];int K; //定义全局变量struct student //定义结构体变量student{char name[20];char sex[N];int id;float score[3];float sum;}stu[N],stu1;int menu() //菜单函数{int i,flag;system("cls"); //运行前清屏for(i=0;i<80;i++)printf("*");printf("\n- - - - - - - - - - - - - - - -学习信息管理系统- - - - - -- - - - - - - - - - \n");printf(" \t|1.录入学生信息|\t\t\t|2.浏览学生信息|\n");printf(" \t|3.查找学生信息|\t\t\t|4.对学生信息排序|\n");printf(" \t|5.统计学生信息|\t\t\t|6.添加学生信息|\n");printf(" \t|7.更新学生信息|\t\t\t|8.退出程序|\n");printf("\n- - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");for(i=0;i<80;i++)printf("*");printf("\n\t输入选择类型1--8:");scanf("%d",&flag);return flag;}void save(){FILE *fp;if((fp=fopen("c:\\student","wb"))==NULL){printf("Can not open the file!\n");exit(0);}fputc(K,fp);for(int i=0;i<K;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("File can not be saved!\n ");exit(0);}fclose(fp);}void incre(){FILE *fp;if((fp=fopen("c:\\student","ab"))==NULL){printf("Can not open the file!\n");exit(0);}if(fwrite(&stu[K],sizeof(struct student),1,fp)!=1){printf("File can not be saved!\n ");exit(0);}fclose(fp);}void load(){FILE *fp;if((fp=fopen("c:\\student","rb"))==NULL){printf("Can not open the file!\n");exit(0);}K=fgetc(fp);for(int i=0;i<K;i++)if(fread(&stu[i],sizeof(struct student),1,fp)!=1){printf("File can not be saved!\n ");exit(0);}fclose(fp);}void luru() //录入函数{int i,j;int m,x,num;system("cls");printf("请输入要录入的学生人数,在(1-50)之间:");while(1){scanf("%d",&num); //用来控制需要录入学生的数目(用当循环是为了保证需要录入的学生数合法(1-100))if(1<=num&&num<=50)break;elseprintf("\t请重新输入人数(1-50):");}for(i=K;i<num+K;i++){printf("\t请输入学生信息:");printf("\n\tName %d:",i+1);scanf("%s",stu[i].name); //输入姓名srand((long)time(NULL)); //提供不重复的seedwhile(1) //保证产生的随机数不重复{m=0;x=rand()%10000+2010000; //控制随机数产生的范围for(j=0;j<i;j++)if(stu[j].id==x){m=1;break;}if(m==0)break;}stu[i].id=x;printf("\tID:%ld\n",x); //输出产生的随机数printf("\tSex:");scanf("%s",stu[i].sex); //输入性别stu[i].sum=0;printf("\t数学:");scanf("%f",&stu[i].score[0]); //输入分数printf("\t英语:");scanf("%f",&stu[i].score[1]);printf("\tc :");scanf("%f",&stu[i].score[2]);for(j=0;j<3;j++) //求出学生的总成绩{stu[i].sum+=stu[i].score[j];}}K+=num; //这样是为了达到重复批量录入的效果save();liulan();system("pause");}void liulan() //浏览函数{int i,j;load();printf("-------------------------------------------------------------------------\n");printf("姓名\t性别\t学号\t\t数学\t\t英语\t\tC语言\t总和\n");for(i=0;i<K;i++){printf("\n%s\t%s\t%d",stu[i].name,stu[i].sex,stu[i].id);//打印学生的信息for(j=0;j<3;j++)printf("\t\t%.f",stu[i].score[j]);printf("\t%.f\n",stu[i].sum);}printf("-------------------------------------------------------------------------\n");system("pause>null");}int chazhao() //查找函数{load();char name[20];int i,j=0,k,x=0,flag;long number;printf("\t你能够根据学生姓名或者学号来查找信息:1.名字,2,学号:");scanf("%d",&flag);if(flag==1) //当key==1时按name查找给学生{printf("\t请输入学生名字:");scanf("%s",name);for(j=0,i=0;i<K;i++)if(strcmp(name,stu[i].name)==0){cout[j++]=i;x=1;}}else if(flag==2){printf("\t请输入学生学号:");scanf("%ld",&number);for(j=0,i=0;i<K;i++)if(stu[i].id==number){cout[j++]=i;x=1;}}elsex=2;if(x==1) //当x=1时表示查找到学生{printf("该学生的信息为:\n");for(i=0;i<j;i++){printf("姓名\t性别\t学号\t\t数学\t英语\tC语言\t总和\n",cout[i]+1);printf("%s %s %ld",stu[cout[i]].name,stu[cout[i]]. sex,stu[cout[i]].id);for(k=0;k<3;k++)printf("\t%.f",stu[cout[i]].score[k]);printf(" %.f\n",stu[cout[i]].sum);}}else if(x==0)printf("\t\t对不起没有找到您需要的学生信息!\n");else{printf("\t请输入(1-2)!\n");j=chazhao();}system("pause>null");return j;}void paixu() //排序函数{load();int i,j;for(i=0;i<K-1;i++){for(j=0;j<K-i-1;j++){if(stu[j].sum<stu[j+1].sum) //以总分为标准按照冒泡法对学生的信息进行排序{stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;}}}save();printf("\t按总分排序成功!\n");liulan(); //排序成功后自动调用浏览函数将排序结果输出}void tongji() //统计函数{load();int i,flag;float max,min,average,sum;printf("\t1.英语\t\t2.数学\t\t3.C\t4.back.\n");float num1,num2,num3,num4,num5; //用来统计各分数段学生的数目while(1){num1=num2=num3=num4=num5=0; //注意赋初值0应该放在当循环里面printf("\t\t请选择要统计科目:(1-4):");scanf("%d",&flag); //用来选择所需要统计分数段的科目if(1<=flag&&flag<=3){sum=0;for(i=0;i<K;i++){if(90<=stu[i].score[flag-1]&&stu[i].score[flag-1]<=100)num1++;else if(80<=stu[i].score[flag-1])num2++;else if(70<=stu[i].score[flag-1])num3++;else if(60<=stu[i].score[flag-1])num4++;elsenum5++;min=max=stu[0].score[flag-1]; //假设第一个学生的各门成绩既是最大值也是最小值if(stu[i].score[flag-1]>max) //求单门科目中的最高分max=stu[i].score[flag-1];if(stu[i].score[flag-1]<min) //求单门科目中的最小值min=stu[i].score[flag-1];sum+=stu[i].score[flag-1];}average=sum/K;printf("\t\tmax=%.2f\n",max);printf("\t\tmin=%.2f\n",min);printf("\t\taverage=%.2f\n",average);}else if(flag==4)break;else //当输入超过4或小于1时提示输入错误printf("\t请重新输入(1-4)!\n");}}void tianjia(){load();char flag;int i,j;int m,x;for(i=K;i<N;i++){incre();K++;printf("\t请输入学生信息:");printf("\n\tName %d:",i+1);scanf("%s",stu[i].name); //输入姓名srand((long)time(NULL)); //提供不重复的seedwhile(1) //保证产生的随机数不重复{m=0;x=rand()%10000+2010000; //控制随机数产生的范围for(j=0;j<i;j++)if(stu[j].id==x){m=1;break;}if(m==0)break;}stu[i].id=x;printf("\tID:%ld\n",x); //输出产生的随机数printf("\tSex:");scanf("%s",stu[i].sex); //输入性别stu[i].sum=0;printf("\t数学:");scanf("%f",&stu[i].score[0]);printf("\t英语:");scanf("%f",&stu[i].score[1]);printf("\tc :");scanf("%f",&stu[i].score[2]);for(j=0;j<3;j++) //求出学生的总成绩{stu[i].sum+=stu[i].score[j];}printf("\t请选择(Y(continue/N(back))):");getchar();flag=getchar();if(flag=='Y')continue;elsebreak;}save();}void xiugai(){int i,j,answ,number,flag=0;liulan();j=chazhao();if(j==1){number=cout[0];flag=1;}else if(j>1){while(1){printf("\t请输入名字:");scanf("%d",&number);number--;for(i=0;i<j;i++)if(number==cout[i])flag=1;if(flag==0)printf("\tThe student is not you ne ed amend,please check out and input again!\n");elsebreak;}}if(flag==1){printf("\t确定要修改该学生的信息么?(Y(continue)/N(back))!");getchar();answ=getchar();}if(answ=='Y'&&flag==1){printf("\t请输入修改后的学生信息:");printf("\n\tName %d:",number+1);scanf("%s",stu[number].name); //输入姓名printf("\t ID:%ld\n",stu[number].id);printf("\t Sex:");scanf("%s",stu[number].sex);stu[number].sum=0;printf("\t数学:");scanf("%f",&stu[i].score[0]);printf("\t英语:");scanf("%f",&stu[i].score[1]);printf("\tc :");scanf("%f",&stu[i].score[2]);for(j=0;j<3;j++) //求出学生的总成绩{stu[number].sum+=stu[number].score[j];}printf("\t\t该学生的信息已成功修改!\n");}save();}void shanchu(){int i,j,answ,number,flag=0;j=chazhao();if(j==1){number=cout[0];flag=1;}else if(j>1){while(1){printf("\t请输入名字:");scanf("%d",&number);number--;for(i=0;i<j;i++){if(number==cout[i])flag=1;}if(flag==0)printf("\tThe student is not you need deal,please checkout and input again!\n");elsebreak;}}if(flag==1){printf("\t请确认是否要处理该学生信息!(Y(continue)/N(back))!");getchar();answ=getchar();}if(answ=='Y'&&flag==1){for(i=number;i<K;i++)stu[i]=stu[i+1];K--;printf("\t\t该学生的信息已成功删除!\n");}save();}void shanchu_xiugai() //修改、删除函数{int key;printf("\t\t\t1.修改\t2.删除:");scanf("%d",&key);if(key==1)xiugai();else if(key==2)shanchu();else{printf("\t\tIllegal operation,please input(1-2)!\n");shanchu_xiugai();}}void main() //主函数{while(1){switch(menu()){case 1:luru();break;case 2:liulan();break;case 3:chazhao();break;case 4:paixu();break;case 5:tongji();break;case 6:tianjia();break;case 7:shanchu_xiugai();break;case 8:printf("\t\t");exit(0);default:printf("\t请重新输入:\n\t\t");system("pause>null");}}}完成日期:2010年07月18日。