学籍信息管理系统设计源代码

合集下载

学籍信息源代码

学籍信息源代码

#include<stdio.h>#include<string.h>#define N 10struct date_type{int year;int month;}date;struct stud_type{char academy[10];char class1[10];int num;char name[10];char sex[4];struct date_type date;char address[10];int score[3];float average;int sum;int jilu;};struct stud_type stu[N];void duru(struct stud_type stu[]); /*数据读入*/void Add(struct stud_type stu[]); /*增加学生*/void Delete(struct stud_type stu[]); /*删除学生*/void Modify(struct stud_type stu[]); /*修改学生*/void Search(struct stud_type stu[]); /*查询学生*/void Print(struct stud_type stu[]); /*输出所有学生信息*/void Stat(struct stud_type stu[]); /*统计*/void Save(struct stud_type stu[]); /*数据存盘*/int r=0;void main(){int x;duru(stu);do{printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※欢迎使用本软件※\n");printf("※~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~※\n");printf("※指导老师:张老师※\n");printf("※※\n");printf("※制作者:黄同学※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~** \n");printf("******************学籍管理系统******************\n");printf("** **\n");printf("** 1.录入学生信息**\n");printf("****\n");printf("********* 2.修改学生信息*********\n");printf("****\n");printf("**** 3.查询学生信息****\n");printf("****\n");printf("************* 4.浏览所有学生信息**********\n");printf("****\n");printf("**** 5.删除学生信息****\n");printf("** **\n");printf("********* 6.综合统计*********\n");printf("** **\n");printf("**0.保存并退出系统**\n");printf("****\n");printf("**********************************************\n");printf("**----------------------------------------------- -----------------***\n");printf("请在0-6中选择: ");scanf("%d",&x);switch(x){case 1:Add(stu); /*录入模块*/break;case 2:Modify(stu); /*修改模块*/break;case 3:Search(stu); /*查询模块*/break;case 4:Print(stu); /*输出模块*/break;case 5:Delete(stu); /*删除模块*/break;case 6:Stat(stu); /*统计模块*/break;case 0:Save(stu);break;}}while(x!=0);}void Add (struct stud_type stu[]) /*录入模块*/{int i;char k;for(i=r;i<N;i++){printf("\n 请输入学院:");scanf("%s",stu[i].academy);printf("\n 请输入班级:");scanf("%s",stu[i].class1);printf("\n 请输入学号:");scanf("%d",&stu[i].num);printf("\n 请输入姓名:");scanf("%s",stu[i].name);printf("\n 请输入性别:");scanf("%s",stu[i].sex);printf("\n请输入出生年月:");scanf("%d%d",&stu[i].date.year,&stu[i].date.month);printf("\n 请输入地址:");scanf("%s",stu[i].address);printf("\n 请输入成绩:");scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);r=r+1;stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];stu[i].average=stu[i].sum/3.0;printf("----------是否继续??(y/n):");scanf("%s",&k);if(k=='y'||k=='Y') continue;elseprintf("**********录入结束!**********\n\n");return;}}void Save(struct stud_type stu[]) /*保存模块*/{FILE *fp1; /*指向文件的指针*/int i;stu[0].jilu=r;if((fp1=fopen("E:\\xj.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("**********打开文件失败!**********\n\n");return;printf("开始存盘!\n");for(i=0;i<r;i++)if(fwrite(&stu[i],sizeof(struct stud_type),1,fp1)==0)printf("**********数据存盘失败!**********\n\n");fclose(fp1);printf("**********存盘成功!**********\n"); /*显示保存成功*/}void Search(struct stud_type stu[]) /*查询模块*/{int y=0,i,k;printf("请输入学号:");scanf("%d",&k);for(i=0;i<r;i++){if(k==stu[i].num){printf("学院:%s\n班级:%s\n学号:%d\n姓名:%s\n性别:%s\n出生年月:%d%d\n地址:%s\n 成绩:\nC语言:%d高数:%d英语:%d\n",stu[i].academy,stu[i].class1,stu[i].num,stu[i].name,stu[i].sex,stu[i].date.year,stu[i].date. month,stu[i].address,stu[i].score[0],stu[i].score[1],stu[i].score[2]);y=1;}}if(y==0)printf("**********查无此人!**********\n\n");return;}void Delete(struct stud_type stu[]) /*删除模块*/{int i,j,k,y=0;int m=16899168,n;printf("请输入密码:");scanf("%d",&n);if(n==m);else{printf("**********密码错误!**********\n\n");return;}printf("请输入学号:");scanf("%d",&k);for(i=0;i<r;i++){if(k==stu[i].num)for(j=i;j<r;j++)stu[j]=stu[j+1];r=r-1;printf("**********删除成功!**********\n\n");y=1;}}if(y==0)printf("**********查无此人!**********\n\n");}void Print(struct stud_type stu[]) /*输出模块*/ {int i,j,k,n;struct stud_type t;printf(" 1.按学号排序,2.按总分排序(由高到低)\n");printf("\n请在1和2中选择:");scanf("%d",&n);if(n==1) /*选择排序*/ for(i=0;i<r-1;i++){k=i;for(j=i+1;j<r;j++)if(stu[k].num>stu[j].num)k=j;if(k!=i){t=stu[i];stu[i]=stu[k];stu[k]=t;}}if(n==2)for(i=0;i<r-1;i++){k=i;for(j=i+1;j<r;j++)if(stu[k].sum<stu[j].sum)k=j;if(k!=i){t=stu[i];stu[i]=stu[k];stu[k]=t;}for(i=0;i<r;i++){printf("\n学院\t班级\t学号\t姓名\t性别\t出生年月\t地址\n");printf("%s\t%s\t%d\t%s\t%s\t%d %d\t\t%s\n",stu[i].academy,stu[i].class1,stu[i].num,stu[i].name,s tu[i].sex,stu[i].date.year,stu[i].date.month,stu[i].address);printf("C语言\t高数\t英语\t平均分\t总分\n");printf("%d\t%d\t%d\t%0.1f\t%d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].average,stu[i ].sum);}}void Stat(struct stud_type stu[]) /*统计模块*/{int i,j,k;printf("0.C语言1.高数2.英语");printf("请在0-2中选择:");scanf("%d",&j);k=j;printf("90-100:\n");printf(" 学号\t姓名\t成绩\n");for(i=0;i<r;i++){if(stu[i].score[k]>=90)printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);}printf("80-90:\n");printf(" 学号\t姓名\t成绩\n");for(i=0;i<r;i++){if(stu[i].score[k]<90&&stu[i].score[k]>=80)printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);}printf("70-80:\n");printf(" 学号\t姓名\t成绩\n");for(i=0;i<r;i++){if(stu[i].score[k]<80&&stu[i].score[k]>=70)printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);}printf("60-70:\n");printf(" 学号\t姓名\t成绩\n");for(i=0;i<r;i++){if(stu[i].score[k]<70&&stu[i].score[k]>=60)printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);}printf("60分以下:\n");printf(" 学号\t姓名\t成绩\n");for(i=0;i<r;i++){if(stu[i].score[k]<60)printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);}}void Modify(struct stud_type stu[]) /*修改模块*/{int k,i,y=0;int m=16899168,n;printf("请输入密码:");scanf("%d",&n);if(n==m);else{printf("**********密码错误!**********\n\n");return;}printf("************修改学生信息************\n");printf("\n请输入要修改学生的学号: ");scanf("%d",&k);for(i=0;i<r;i++){if(k==stu[i].num){printf("\n请输入新内容:\n");printf("\n 请输入学院:");scanf("%s",stu[i].academy);printf("\n 请输入班级:");scanf("%s",stu[i].class1);printf("\n 请输入学号:");scanf("%d",&stu[i].num);printf("\n 请输入姓名:");scanf("%s",stu[i].name);printf("\n 请输入性别:");scanf("%s",stu[i].sex);printf("\n请输入出生年月:");scanf("%d%d",&stu[i].date.year,&stu[i].date.month);printf("\n 请输入地址:");scanf("%s",stu[i].address);printf("\n 请输入成绩:");scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);printf("\n**********修改成功!**********\n\n");y=1;}}if(y==0)printf("**********查无此人!**********\n\n");return;}void duru(struct stud_type stu[]) /*数据读入模块*/{int i;FILE *fp; /*指向文件的指针*/if((fp=fopen("E:\\xj.txt","rb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("打开文件失败!\n");return;}printf("文件开始读取!\n");rewind(fp);for(i=0;i<=r;i++){fread(&stu[i],sizeof(struct stud_type),1,fp);r=stu[0].jilu;}printf("\n文件成功读取!\n");fclose(fp);r=stu[0].jilu;}。

c语言学籍管理系统源代码

c语言学籍管理系统源代码

c语言学籍管理系统源代码学籍管理系统的背景及意义随着社会的不断发展和教育的普及,学籍管理工作日益被重视。

传统的手工管理学籍的方式效率低下,存在着各种弊端,以致无法满足现代学校管理的需求。

因此,开发一款高效、便捷、可靠的学籍管理系统成为普遍需求,为了提高管理效率、减少工作难度,学籍管理系统被越来越广泛地使用。

本文将介绍一款基于C语言开发的学籍管理系统的源代码。

基本功能该学籍管理系统可以实现学生信息的录入、删除、修改和查询,以及学生的成绩录入、修改和查询。

此外,该系统还具备数据存储和文件读写的功能,能够自动保存学生信息和成绩数据,保障数据的安全性和可靠性。

模块设计该系统按照功能模块划分,主要分为三个模块:学生信息管理模块、学生成绩管理模块和数据存储与文件读写模块。

学生信息管理模块该模块主要实现学生信息的录入、删除、修改和查询等基本功能。

以下为该模块的主要源代码:```struct student {char name[20]; // 姓名int id; // 学号char sex[5]; // 性别char major[20]; // 专业};struct student stu[1000]; // 学生信息结构体数组int num_of_stu = 0; // 学生总数void add_student() { // 添加学生信息printf("请输入学生姓名:");scanf("%s", stu[num_of_stu].name);printf("请输入学生学号:");scanf("%d", &stu[num_of_stu].id);printf("请输入学生性别:");scanf("%s", stu[num_of_stu].sex);printf("请输入学生专业:");scanf("%s", stu[num_of_stu].major);num_of_stu++;printf("添加成功!\n");}void delete_student() { // 删除学生信息int delete_id;printf("请输入要删除的学生学号:");scanf("%d", &delete_id);int index = search_student_by_id(delete_id); if (index == -1) {printf("该学号不存在!\n");return;}for (int i = index; i < num_of_stu - 1; i++) { stu[i] = stu[i + 1];}num_of_stu--;printf("删除成功!\n");}void modify_student() { // 修改学生信息int modify_id;printf("请输入要修改的学生学号:");scanf("%d", &modify_id);int index = search_student_by_id(modify_id); if (index == -1) {printf("该学号不存在!\n");return;}printf("请输入学生姓名:");scanf("%s", stu[index].name);printf("请输入学生学号:");scanf("%d", &stu[index].id);printf("请输入学生性别:");scanf("%s", stu[index].sex);printf("请输入学生专业:");scanf("%s", stu[index].major);printf("修改成功!\n");}int search_student_by_id(int id) { // 根据学号查询学生信息for (int i = 0; i < num_of_stu; i++) {if (stu[i].id == id) {return i;}}return -1;}void query_student() { // 查询学生信息int query_id;printf("请输入要查询的学生学号:");scanf("%d", &query_id);int index = search_student_by_id(query_id);if (index == -1) {printf("该学号不存在!\n");return;}printf("姓名\t学号\t性别\t专业\n");printf("%s\t%d\t%s\t%s\n", stu[index].name,stu[index].id, stu[index].sex, stu[index].major);}```学生成绩管理模块该模块主要实现学生成绩信息的录入、修改和查询等功能。

学籍管理系统使用说明

学籍管理系统使用说明

附件2学籍管理系统使用说明一、系统环境和相关说明(一)客户端系统环境win98/win2000/winxp+IE6.0(在此系统的“个人办公”-—“网络硬盘”中下载“共享目录/admin/ie6sp1。

rar"文件安装,IE的“工具"菜单“Internet选项”中的“常规”-—“Internet临时文件"设置为“每次访问此页时检查”.)(二)网址:http://222。

16。

143.252/oa/如果是winxp操作系统,请在IE的“工具”菜单中“关闭弹出窗口阻止程序"。

如果IE中安装了上网助手,请停止拦截当前站点广告。

如果要把此网址添加到收藏夹,先在IE地址栏中输入222。

16.143。

252并添加到收藏夹,然后更改收藏夹中网址的URL地址和名称。

(三)各校登录OA系统后,自行给相关学籍管理工作人员建立用户名。

用户名编码规则:姓名是三字的用姓的拼音全部字母和名的拼音的第一个字母,姓名是两字的用姓和名的拼音全部字母。

如:张三江的用户名应为zhangsj,李四的用户名应为lisi。

如果系统中已有该用户,就在用户名后从1开始添加顺序编号。

如lisi1,lisi2,lisi3。

二、“初中学籍”使用说明(一)使用网上学籍管理系统的目的在于进一步规范和完善学籍管理,准确掌握初中学籍数据,并为区内统测和中考报名提供相关数据.从今年的初一开始使用网上学籍管理系统,今后每年的初一学生区内转学先在小升中报名系统中完成转学操作,然后由区招办将各校招收的区内小学生名册及相关资料导入到学籍管理系统中;各校招收的非区内小学生,由各校在学籍管理系统中“添加学生”录入相关资料。

(二)在“学生管理”模块中单击学号可以编辑该学生的基本信息,需要将小升中电脑号修改为新的学号(学号编码规则见下文),并录入班级。

单击“添加学生”按钮可以添加学生,需要录入相关信息。

添加完学生后会在“学籍异动"中自动生成一条转学的学籍异动申请。

学生基本信息管理系统

学生基本信息管理系统

沈阳工程学院课程设计(面向对象程序设计)设计题目:学生基本信息管理系统系别信息学院班级组长姓名组员姓名指导教师职称起止日期:2014年12月1日起——至2014年12月12日止沈阳工程学院课程设计任务书(面向对象程序设计)课程设计题目:学生基本信息管理系统系别信息学院班级组长姓名组员姓名指导教师职称课程设计进行地点:实训F任务下达时间:2014 年11月19 日起止日期:2014年12月1日起——至2014年12月12日止教研室主任朱克敌2014年11月15日批准1.课程设计的原始资料及依据面向对象程序设计课程设计的前驱条件是要求学生们必须具备“程序设计基础”、“面向对象程序设计”、“软件工程导论”等计算机专业基础理论知识,本次课程设计需要在符合这种前提条件下实施。

首先,成立项目小组并推举有责任心的学生担当项目组长,全组成员在组长的带领下,采用自选和老师指定相结合的方式确定了本次课程设计的题目。

本次课程设计要求学生首先查阅课程相关的资料,进一步加深对课程内容的理解,运用所学知识和所掌握的分析与设计的方法,完成一个较完整的面向对象程序设计,在此基础上利用Java语言对其进行实现,实现一个功能较为完善、界面友好、操作性强的应用程序,使学生们真正地锻炼了设计和编程能力。

2.课程设计的主要内容及要求要求参加课程设计的学生们要重新认真复习面向对象程序设计的理论知识和技能,熟练掌握Java编程工具,灵活运用所学理论知识和技能应用于该项目的设计与开发中,加深理解面向对象程序设计的编程技巧和方法。

具体要求如下:1.成立项目开发小组并选举项目组长。

2.根据设计要求小组选定设计题目。

3.每天要求项目组长要至少组织召开一次会议,总结、汇报和布置任务。

4.每次会议要求保留会议记录并存档。

5.发挥团队合作精神共同完成如下内容:(1) 开发背景(2) 系统分析(3) 系统设计(4) 代码实现6.组长要根据能力合理地分配任务,每个组员都要积极参与每项工作。

学籍管理系统流程图

学籍管理系统流程图

1、学生(xué sheng)学籍管理系统数据流图一、顶层(dǐnɡ cénɡ):二、0层:三、 1层1、学生学籍管理系统数据字典1.数据流条目数据流名称:全部记录别名:无简述:最新更新后所有关于学生学籍的记录来源:数据库去向:加工“记录筛选”数据流量:不限组成:学号+姓名+家庭住址+马哲+英语+毛概+邓理+成绩+排名①数据存储条数据存储名称:学生成绩记录别名:无简述:存放学生所有可供查询的成绩信息组成:学号+姓名+成绩+排名等组织方式:索引文件,以学学号为关键字查询要求:要求能立即查询②数据存储条数据存储名称:个人信息记录别名:无简述:存放学生所有可供查询的个人信息组成:学号+姓名+家庭住址等组织方式:索引文件,以学学号为关键字查询要求:要求能立即查询③数据存储条数据存储名称:用户密码记录别名:无简述:存放所有用户可供查询的用户密码信息组成:学号+姓名+用户名等组织方式:索引文件,以学学号为关键字查询要求:要求能立即查询2 数据项条目①数据项名称:学号别名:无简述:所有学校学生的学号类型:字符串取值范围及含义:第1-4位:入学年份第 5-6 位:院系代码第 7-8 位:专业代码第 9-10 位:班级号第10-11位:班内编号②数据项名称:用户名别名:无简述:所有用户的用户名类型:字符串取值范围及含义:26个英文字母和0-9十个数字组合,不含特殊符号③数据项名称:家庭住址别名:无简述:所有学校学生的家庭住址类型:字符串取值范围及含义:汉字,26个英文字母和0-9十个数字组合④数据项名称:新考试科目别名:无简述:所有学校学生的新加考试科目类型:字符串取值范围及含义:汉字,26个英文字母和0-9十个数字组合3 加工条目①加工名:更改的记录激发条件:学生成绩记录,个人信息记录以及用户密码记录被改动优先级:普通输入:新记录输出:更新数据、数据未改动加工逻辑:根据现有数据库if 新记录<>旧记录then 更新数据 else 数据未改动endif②加工名:更改的记录激发条件:学生成绩记录,个人信息记录以及用户密码记录被删除优先级:普通输入:删除记录输出:数据已删除、数据不存在加工逻辑:根据现有数据库if 删除记录=旧记录then 数据已删除else 数据不存在endif③加工名:更改的记录激发条件:学生成绩记录插入新数据优先级:普通输入:新数据输出:数据排序加工逻辑:根据新数据库for(m=0,m<=人数,m++)if 第一人成绩<第二人成绩then i=第二人成绩else i=第一人成绩endfor endif输出比较好了的数组即为排名3、学生(xué sheng)学籍管理系统E—R图4、学生(xué sheng)学籍管理系统状态图。

学籍系统实验报告

学籍系统实验报告

西安交通大学实验报告课程程序设计基础实验名称课内实验第页共 6 页系别__ 计算机科学与技术实验日期 2011年 12 月11 日专业班级____ 计算机13 实验报告日期 2011年12月11 日姓名__吕鑫_ 学号报告退发 ( 订正、重做 )同组人___________________ _ _ 教师审批签字实验题目:使用C编程实现一个学籍管理系统1.程序设计与分析功能:实现学生信息的输入,删除,查询,排序,输出。

由于使用链表,可以进行动态定义,因此扩大学生信息的可存储性。

结构体的使用使数据容易操作。

指针的定义则是数据处理更方便。

算法:使用switch语句加循环的方式构成主函数,简单明了。

主函数见下:int main(){ int choice;struct student *input();struct student *HEAD=NULL;struct student *he(struct student *head);struct student *delet(struct student *head);void select(struct student *head);struct student *order(struct student *head);void output(struct student *head);choice=0;while(choice!=6){printf("1.input\n2.delete\n3.select\n4.order\n5.output\n6.quit\nplease input your option\n");scanf("%d",&choice);switch(choice){case 1:HEAD=input();he(HEAD);continue;case 2:delet(HEAD);;continue;case 3:select(HEAD);continue;case 4:order(HEAD);continue;case 5:output(HEAD);continue;case 6:break;}}return 0;}2.程序设计中存在的问题和解决思路主要困难:链表的不熟悉使编程颇为困难,主程序的反复循环不易处理。

C语言学籍管理系统(内含源代码)

C语言学籍管理系统(内含源代码)

学籍管理系统一、系统简介设计一个基于结构体数组的学生学籍管理系统,能实现对学生学籍信息进行录入,修改,删除,查询和输出等基本操作二、需求分析学籍管理系统应该实现以下功能:1、能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。

2、能根据输入的学号查询学生,进行信息的修改。

3、能根据输入的学号从结构体数组中删除学生的记录。

4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。

5、能在屏幕上以列表的方式输出所有学生的信息。

三、概要设计1、系统功能根据项目的开发要求,本系统划分成六个主要功能模块:录入学生信息模块、修改学生信息模块、删除学生信息模块、查询学生信息模块、输出模块和推出模块。

系统功能机构图如下:2、重要数据的数据结构设计学生学籍的记录项用结构体Stu message表示,包括6个属性,stuno,name、spec、grade、sex、birthday 分另U代表学生的学号、专业、年级、性另U和出生日期,其中birthday 类型为自定义的结构体类型Date.Struct stumessage {Char stuno[11]: // 学号Char name[9]: // 姓名Char spec[2]: // 专业Char grade: // 年级Char sex : // 性别Stuct date birthday: // 出生日期};日期类型date包括三个属性,分别代表年、月、日Struct date{int year : // 年Int month: //Int day: // H};3、函数设计学籍管理系统程序采用了结构化程序设计的思想,由1个.h 头文件和3个C源文件组成。

程序中除了主函数外,共设计了以下14个函数,分别包含在3个.c源文件中。

以下是这些函数原型及功能设计。

(1) void sysinfo(void)函数功能:在屏幕上输入系统及信息并等待用户响应。

全国中小学生学籍信息管理系统

全国中小学生学籍信息管理系统

全国中小学生学籍信息管理系统1. 系统简介全国中小学生学籍信息管理系统是一款用于管理全国中小学生学籍信息的系统。

本系统旨在提供一个快速、高效、准确的方式来管理学生的个人信息、学籍信息、成绩信息以及其他相关信息,并可以方便地进行查询和统计。

2. 功能列表2.1 学生信息管理•添加学生信息:录入学生的基本信息,包括姓名、性别、出生日期、家庭住址等。

•修改学生信息:根据学生的学籍号或其他唯一标识,修改学生的基本信息。

•删除学生信息:根据学生的学籍号或其他唯一标识,删除学生的信息。

•查询学生信息:根据学生的学籍号、姓名、性别等条件,查询学生的信息。

•导出学生信息:将学生的信息导出为Excel或CSV格式文件。

2.2 学籍信息管理•添加学籍信息:为学生添加学籍信息,包括入学时间、学院专业、班级等。

•修改学籍信息:根据学生的学籍号或其他唯一标识,修改学生的学籍信息。

•删除学籍信息:根据学生的学籍号或其他唯一标识,删除学生的学籍信息。

•查询学籍信息:根据学生的学籍号、姓名、学院专业等条件,查询学生的学籍信息。

•导出学籍信息:将学生的学籍信息导出为Excel或CSV格式文件。

2.3 成绩信息管理•添加成绩信息:为学生添加成绩信息,包括科目、成绩、考试时间等。

•修改成绩信息:根据学生的学籍号或其他唯一标识,修改学生的成绩信息。

•删除成绩信息:根据学生的学籍号或其他唯一标识,删除学生的成绩信息。

•查询成绩信息:根据学生的学籍号、姓名、科目等条件,查询学生的成绩信息。

•导出成绩信息:将学生的成绩信息导出为Excel或CSV格式文件。

2.4 统计分析•学生人数统计:按照年级、性别等条件进行学生人数的统计。

•成绩分析统计:对学生的成绩进行汇总、排名和分析。

•学生地域分布统计:根据学生的家庭住址,统计学生的地域分布情况。

3. 技术实现全国中小学生学籍信息管理系统使用以下技术进行实现:•前端:采用HTML、CSS和JavaScript进行界面设计和交互逻辑的实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdio.h>#define N 50#define M 200int stumax=0,scoremax=0;FILE *fp;struct student{char num[9]; //学号char name[20]; //姓名int sex; //性别int room; //宿舍号码long int tel; //电话号码}stu[N];struct stuscore{char num[9]; //学号char coursenum[10]; //课程编号char course[15]; //课程名称float point; //学分int nscore; //平时成绩int expscore; //实验成绩int examscore; //卷面成绩int comscore; //综合成绩float getpoint;//实得学分}score[M],score1[M];void enter_stu();void input_stu(int j);void enter_score();void input_score(int i);void com_score(int i);void browse_stu();void browse_score();void search();void search_stu();void search_num();void search_name();void search_room();void search_score();void printf_onestu_score(char snum[]);void delete_one();void order();void order_course_num();void order_course();void order_printf(int k);/***********菜单***********/void menu(){int w1;char n;/*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/system("cls");do{puts("**************************************************************** \n\n");puts("\t ***************** 总菜单*****************\n\n");puts("\t*** 1.输入学生的基本信息***");puts("\t*** 2.浏览学生的基本信息***");puts("\t*** 3.输入学生的成绩基本信息***");puts("\t*** 4.浏览学生的成绩基本信息***");puts("\t*** 5.查询信息功能***"); puts("\t*** 6.删除信息功能***");puts("\t*** 7.排序:按综合成绩或实得学分***");puts("\t*** 8.退出***"); puts("\n\n************************************************************* ***");printf("\n选择要进行的功能代号(1-8):[ ]\b\b");scanf("%c",&n);if(n<'1'||n>'8') /*对选择的数字作判断*/{w1=1;printf("\n\n 请输入数字1~8!\n\n");}else{w1=0;/*选择功能*/switch(n){case'1':enter_stu();break; /*输入基本信息模块*/case'2':browse_stu();break; /*浏览基本信息模块*/case'3':enter_score();break; /*输入成绩基本信息模块*/case'4':browse_score();break; /*浏览成绩基本信息模块*/case'5':search();break; /*查找模块*/case'6':delete_one();break; /*删除学籍模块*/case'7':order();break; /*排序模块*/case'8':exit(0);}}}while(w1==1); getch();}/**********主函数*********/void main(){menu(); /*进入菜单*/}/*公用函数********************************************************************* **//*保存所有分数*/void save_score(){int i;if((fp=fopen("b.txt","w+"))==NULL) /*以输出方式打开,在此前的记录被覆盖*/{printf("\n 不能打开文件.");getch();}for(i=0;i<scoremax;i++)if(fwrite(&score[i],sizeof(struct stuscore),1,fp)!=1)printf("\n 文件输入错误.");fclose(fp);printf("\n 输入数据结束.Press any key to continue . . .");getch();}/*保存所有学生信息*/void save(){int i;if((fp=fopen("a.txt","w+"))==NULL) /*以输出方式打开,在此前的记录被覆盖*/{printf("\n不能打开文件");getch();}for(i=0;i<stumax;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("\n文件输入错误.");fclose(fp);}/*显示一个分数,形参i表示显示第i个记录*/void printf_one_score(int i){printf("\n学号:%s 课程编号:%s 课程名称:%s 学分:%f\n 平时成绩:%d 实验成绩:%d 卷面成绩:%d 综合成绩:%d 实得学分:%f",score[i].num,score[i].coursenum,score[i].course,score[i].point,score[i].nscore, score[i].expscore,score[i].examscore,score[i].comscore,score[i].getpoint);}/*显示一个学生信息,形参j表示显示第j个记录*/void printf_one_stu(int j){printf("\n学号:%s 姓名:%s 性别:%d 宿舍号码:%d 电话号码:%ld",stu[j].num,stu[j].name,stu[j].sex,stu[j].room,stu[j].tel);}/*删除一个分数,形参i表示删除第i个记录*/void delete_one_score(int i){printf_one_score(i);score[i]=score[scoremax];scoremax--;printf("\n删除学生数据成功!Press any key to continue . . .");getch();save_score();}/*录入模块********************************************************************* **//*学生信息录入*/void enter_stu(){int i,n,es1;printf("\n要输入多少学生基本信息(1~%d)? ",N-1);scanf("%d",&n); /*要输入的学生基本信息的个数*/es1=n+stumax; /*输入n个后应有的记录个数*/printf("\n输入信息:");for(i=stumax;i<es1;i++)input_stu(i); /*调用输入学生基本信息函数*/printf("\n共输入%d 项基本信息.Press any key to continue . . .",n);getch();menu();/*提示输入任务结束,按任意键返回主菜单*/}/*录入一个学生信息*/void input_stu(int j){int i1,k=0,d;switch((j+1)%10){case 1:printf("\n Input the %dst student's information:",j+1);break;case 2:printf("\n Input the %dnd student's information:",j+1);break;default:printf("\n Input the %dth student's information:",j+1);}printf("\n学号姓名性别宿舍号码电话号码\n"); scanf("%s%s%d%d%ld",stu[j].num,stu[j].name,&stu[j].sex,&stu[j].room,&stu[j].tel);stumax++; /*输入一个信息,总数加1*/for(i1=0;i1<stumax;i1++)if(i1!=j&&strcmp(stu[i1].num,stu[j].num)==0) /*表示学号已存在*/{k=1; /*k为学号是否已存在标记,k=1表存在*/printf_one_stu(i1); /*显示已存在的学号的信息*/printf("\n此学生存在!"); /*提示学号已存在*/stumax--; /*总数减1,删除输入信息*/printf("\n删除信息成功!");save(); /*调用保存函数*/break;}if(k==0) /*表示学号不重复*/{printf("\n输入信息成功!"); /*提示输入成功*/save(); /*调用保存函数*/}}/*学生成绩信息录入*/void enter_score(){int i,n,es1;printf("\n要输入的学生基本信息的个数(1~%d)? ",M-1);scanf("%d",&n); /*要输入的学生基本信息的个数*/es1=n+scoremax; /*输入n个后应有的记录个数*/printf("\n输入数据:\n");for(i=scoremax;i<es1;i++)input_score(i); /*调用输入学生成绩基本信息函数*/ save_score(); /*调用保存学生成绩基本信息函数*/printf("\n 共输入了%d 项数据.Press any key to continue . . .",n);getch();menu();/*提示输入任务结束,按任意键返回主菜单*/}/*录入一个成绩*/void input_score(int i){int j,j1,k,c;float a;switch((i+1)%10){case 1:printf("\n Input the %dst student's score:",i+1);break;case 2:printf("\n Input the %dnd student's score:",i+1);break;default:printf("\n Input the %dth student's score:",i+1);}printf("\n学号课程编号课程名称学分平时成绩实验成绩卷面成绩\n");scanf("\n%s%s%s%f%d%d%d",score[i].num,score[i].coursenum,score[i].course,&a, &score[i].nscore,&score[i].expscore,&score[i].examscore);score[i].point=a;com_score(i); /*调用计算综合成绩、实得学分函数*/scoremax++;for(j1=0;j1<stumax;j1++)if(strcmp(score[i].num,stu[j1].num)==0)break;if(j1==stumax) /*学生不存在*/{printf("\n该学生不存在!");delete_one_score(i);/**************/}else/*学生存在*/{for(k=0;k<scoremax;k++){if(k!=i&&strcmp(score[k].num,score[i].num)==0&&strcmp(score[k].coursenum,scor e[i].coursenum)==0&&strcmp(score[k].course,score[i].course)==0) /*该学生该课程已存在*/{printf("\n该学生的此项信息已经存在!");delete_one_score(i);/**************/break;}if((strcmp(score[k].coursenum,score[i].coursenum)==0&&strcmp(score[k].course,sco re[i].course)!=0)||(strcmp(score[k].coursenum,score[i].coursenum)!=0&&strcmp(scor e[k].course,score[i].course)==0)) /*该课程编号和课程名称与前面矛盾并提示删除哪一个*/{printf("\n课程编号和课程名称不符:");printf("\n成绩信息[%d]:",i);printf_one_score(i); /*显示矛盾课程*/printf("\n成绩信息[%d]:",k);printf_one_score(k); /*显示矛盾课程*/printf("\n 1)删除成绩[%d] 2)删除成绩[%d]? [ ]\b\b",i,k);scanf("%d",&c);switch(c){case 1:delete_one_score(i);break; /*调用删除函数*/default:delete_one_score(k); /*调用删除函数*/}break;}}if(k==scoremax)printf("\n输入信息成功! Press any key to continue . . .");getch();}}/*计算综合成绩*/void com_score(int i){if(score[i].expscore==-1) /*判断是否有实验*/score[i].comscore=score[i].nscore*0.3+score[i].examscore*0.7;elsescore[i].comscore=score[i].nscore*0.15+score[i].expscore*0.15+score[i].examscore* 0.7;switch(score[i].comscore/10){case 10:case 9: score[i].getpoint=score[i].point*1.0;break;case 8: score[i].getpoint=score[i].point*0.8;break;case 7: score[i].getpoint=score[i].point*0.75;break;case 6: score[i].getpoint=score[i].point*0.6;break;default:score[i].getpoint=0;}printf("\n综合成绩计算结束. Press any key to continue . . .");getch();}/*浏览模块********************************************************************* **//*浏览学生信息*/void browse_stu(){int i;for(i=0;i<stumax;i++) /* stumax 为总的学生数*/printf_one_stu(i); /*调用显示一个学生基本信息函数*/ printf("\n浏览学生基本信息结束.Press any key to continue . . .");getch();menu();}/*浏览学生成绩信息*/void browse_score()int j;for(j=0;j<scoremax;j++) /* stumax 为总的学生数*/printf_one_score(j); /*调用显示一个学生成绩基本信息函数*/ printf("\n浏览学生成绩信息结束.Press any key to continue . . .");getch();menu();}/*查找模块********************************************************************* **//*查找*/void search(){int c,c1;printf("\n查找中...\n 选择要查询的信息:\n1)学生基本信息2)学生成绩3)返回菜单[ ]\b\b");scanf("%d",&c); /*选择查找内容*/if(c>=1&&c<=3)switch(c){case 1:search_stu();break; /*调用查找学生基本信息函数*/case 2:search_score();break; /*调用查找学生成绩基本信息函数*/default:menu();}printf("\n查询结束...\n 是否继续查询? 1)是2)否[ ]\b\b"); /*询问是否继续查找*/scanf("%d",&c1);switch(c1){case 1:search();break; /*继续查找*/default:menu();}}/*查找学生信息*/void search_stu(){int i,c;printf("\n 查找学生信息中...\n 选择查询方式:\n1)学号2)姓名3)宿舍编号4)返回查询? [ ]\b\b");scanf("%d",&c); /*选择查找方式*/switch(c){case 1:search_num();break; /*调用按学号查询函数*/case 2:search_name();break; /*调用按姓名查询函数*/case 3:search_room();break; /*调用按宿舍号查询函数*/default:printf("\n继续查询...");}printf("\n查询结束. Press any key to continue . . .");getch();}/*按学号查找学生信息*/void search_num(){int i,c;char n1[9];printf("\n请输入要查询学生的学号: ");scanf("%s",&n1); /*输入要查询的学号*/for(i=0;i<stumax;i++)if(strcmp(stu[i].num,n1)==0){printf_one_stu(i); /*显示查到的记录*/break;}if(i==stumax){printf("\n此学号不存在!\n查询下一个学号? 1)是2)否[ ]\b\b"); /*未查到相应记录,询问是否继续查找*/scanf("%d",&c);switch(c){case 1:search_num();break; /*继续按此方式查找*/default:printf("\n继续查找...");}}else{printf("\n学生信息查询结束. Press any key to continue . . .");getch();}}/*按姓名查找学生信息*/void search_name(){int i,c,sn1=0;char n2[20];printf("\n输入要查询学生的名字: ");scanf("%s",&n2);for(i=0;i<stumax;i++)if(strcmp(stu[i].name,n2)==0){printf_one_stu(i); /*显示查到的记录*/sn1++;}if(sn1==0){printf("\n此学生不存在!\n查询下一个学生? 1)是2)否[ ]\b\b"); /*未查到相应记录,询问是否继续查找*/scanf("%d",&c);switch(c){case 1:search_name();break; /*继续按此方式查找*/default:printf("\n继续查询...");}}else{printf("\n查询结束. Press any key to continue . . .");getch();}}/*按宿舍查找学生信息*/void search_room(){int i,c,r,sr1=0;printf("\n输入要查询学生的宿舍号码: ");scanf("%d",&r);for(i=0;i<stumax;i++)if(stu[i].room==r){printf_one_stu(i); /*显示查到的记录*/sr1++;}if(sr1==0){printf("\n这个宿舍号码不存在!\n查询下一个宿舍号码? 1)是2)否[ ]\b\b"); /*未查到相应记录,询问是否继续查找*/scanf("%d",&c);switch(c){case 1:search_room();break; /*继续按此方式查找*/default:printf("\n继续查询...");}}else{printf("\n查询结束. Press any key to continue . . .");getch();}}/*按学号查找学生成绩*/void search_score(){int i,a,s1;char n3[9];printf("\n输入要查询成绩的学生的学号: ");scanf("%s",n3);printf_onestu_score(n3); /*显示查到的记录*/printf("\n查询结束. \n 是否查询其他学生? 1)是2)否[ ]\b\b"); /*询问是否继续查找*/scanf("%d",&s1);switch(s1){case 1:search_score();break; /*继续按此方式查找*/default:printf("\n查询结束. Press any key to continue . . .");getch();}}/*显示一个学生的所有分数*/void printf_onestu_score(char snum[]){int i,j,k=0,a1;float gp=0;for(j=0;j<stumax;j++)if(strcmp(snum,stu[j].num)==0){printf("\n学号: %s 姓名:%s",stu[j].num,stu[j].name);printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");break;}if(j==stumax)printf("\n此学生不存在!");else{for(i=0;i<scoremax;i++)if(strcmp(score[i].num,snum)==0) /*显示该学生的所有成绩*/{printf_one_score(i);k++;gp+=score[i].getpoint;}printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");printf("\n共修: %d 科实得总学分: %-5.1f\n",k,gp);printf("\n此学生成绩显示完毕. Press any key to continue . . .");getch();}}/*删除*/void delete_one(){int i,j,sd1=0,sd2,sd3;char c[9];printf("\n你要删除哪位同学的信息记录? \n请输入他的学号:");scanf("%s",c); /*输入要删除的学号*/for(i=0;i<stumax;i++)if(strcmp(stu[i].num,c)==0)break;if(i==stumax) /*未找到学生*/printf("\n未找到该学生!");else/*找到学生*/{printf_one_stu(i); /*显示学生基本信息记录*/printf("\n要删除这些信息么? 1)是2)否并返回[ ]\b\b");scanf("%d",&sd2); /*删除确认?*/if(sd2==1) /*确认*/{stu[i]=stu[stumax-1]; /*删除该学生基本信息*/stumax--;printf("\n删除学生信息成功!\n");save(); /*调用保存学生基本信息函数*/for(j=0;j<scoremax;j++) /*删除该学生的成绩信息*/if(strcmp(score[j].num,c)==0){delete_one_score(j); /*调用删除成绩函数*/sd1++;}if(sd1==0)printf("\n该学生无成绩记录."); /*该学生无成绩记录*/printf("\n删除信息成功.");}}printf("\n删除其他学生的成绩? 1)是2)否[ ]\b\b"); /*是否继续删除*/scanf("%d",&sd3);switch(sd3){case 1:delete_one();break; /*继续删除*/default: printf("\n查询学生的号码结束. Press any key to continue . . .");getch();menu();}}/*********排序*********/void order(){int c;printf("排序中...\n按什么排序: 1)课程编号2)课程[ ]\b\b");scanf("%d",&c); /*指定按什么排序*/switch(c){case1:order_course_num();printf("\n排序结束. Press any key to continue . . .");break; /*选择按课程编号排序*/case2:order_course();printf("\n排序结束. Press any key to continue . . .");break;/*选择按课程名称排序*/default:printf("\n输入错误. 请重新输入(1~2)!\n");order();}getch();menu();}/*按课程编号排序*/void order_course_num(){int i,j,k=0;char cnum[10];struct stuscore sco;printf("\n输入要排序的课程编号:");scanf("%s",cnum); /*输入要排序的课程编号*/for(i=0;i<scoremax;i++)if(strcmp(score[i].coursenum,cnum)==0) /*查找对应信息并保存在score1[M]中*/{score1[k]=score[i]; /* score1[M]为全局数组*/k++;}for(i=0;i<k-1;i++)for(j=i+1;j<k;j++){if(score1[i].comscore>score1[j].comscore) /*升序排序*/{sco=score1[i];score1[i]=score1[j];score1[j]=sco;}}order_printf(k); /*调用显示函数*/printf("\n排序结束Press any key to continue . . .");getch();}/*按课程名称排序*/void order_course(){int i,j,k=0;char c[15];struct stuscore sco;printf("\n输入要排序的课程名称:");scanf("%s",c); /*输入要排序的课程名称*/for(i=0;i<scoremax;i++)if(strcmp(score[i].course,c)==0) /*查找对应信息并保存在score1[M]中*/{score1[k]=score[i];k++;}for(i=0;i<k-1;i++)for(j=i+1;j<k;j++){if(score1[i].comscore>score1[j].comscore) /*升序排序*/{sco=score1[i];score1[i]=score1[j];score1[j]=sco;}}order_printf(k); /*调用显示函数*/printf("\n排序结束.Press any key to continue . . .");getch();}/*排序显示*/void order_printf(int k){int w1,i,c;do{printf("\n选择排序的顺序:\n 1)升序2)降序[ ]\b\b"); /*选择显示顺序*/scanf("%d",&c);if(c>=1&&c<=2){w1=0;switch(c){case 1:for(i=0;i<k;i++) /*选择升序显示*/printf("\n 学号:%s 课程编号:%-10s 课程名称:%-15s 综合成绩:%5d 实得学分:%f",score1[i].num,score1[i].coursenum,score1[i].course,score1[i].comscore,score1 [i].getpoint);break;case 2:for(i=k-1;i>=0;i--) /*选择降序显示*/printf("\n 学号:%s 课程编号:%-10s 课程名称:%-15s 综合成绩:%5d 实得学分:%f",score1[i].num,score1[i].coursenum,score1[i].course,score1[i].comscore,score1 [i].getpoint);break;}printf("\nPress any key to continue . . .");getch();}else{w1=1;printf("\n输入错误请重新输入(1~2)!");}}while(w1==1);printf("\n排序结束.Press any key to continue . . .");getch();}。

相关文档
最新文档