-
C#与.NET实验 学生信息管理系统.doc
2020-11-10 14:01:27实验项目 设计一个简单的学生信息管理系统 实验目的 熟悉并掌握C#的类的基本设计及相关特性? 实验内容算法程序步骤和方法 参考教材第2 章设计并实现一个简单的学生个人基本信息管理程序要求在设计与 现中完成以下... -
学生管理系统JAVA实验报告x_数据结构学生管理系统实验报告
2020-11-23 07:23:28实验目的: 编写学生信息管理系统程序 基本要求学生信息包括学号姓名性别年龄家庭住址电话等的 添加删除修改查询包括按学号按姓名等查询 提高要求(依据自身情况自选)可填加班级信息也可删除修改班级学 生信息中包含... -
学生信息管理系统
2019-04-03 11:41:131.题目分析 基本要求: ①改写程序为良好程序风格(文档注释、函数注释、语句注释) ②将功能补充完全(基于文件处理...题目:学生信息管理系统 实验目的:1.明确结构化程序设计的基本结构。 2.通过对问题的分析...1.题目分析
基本要求:
①改写程序为良好程序风格(文档注释、函数注释、语句注释)
②将功能补充完全(基于文件处理,完成刷新和保存功能)
③将学生信息改为更好的数据组织,而非离散形式(结构体)
提高要求:
可将程序中的不足(如数据验证等)根据自己的能力与理解完成。
2.流程图
3.程序实现/** 题目:学生信息管理系统 实验目的:1.明确结构化程序设计的基本结构。 2.通过对问题的分析,设计合理的结构化程序解决问题。 实验要求:基本要求: 1.改写程序为良好的程序风格(文档注释、函数注释、语句注释)。 2.将功能补充完全(基于文件处理,完成刷新和保存功能)。 3.将学生信息改为更好的结构组织,而非离散形式(结构体)。 提高要求: 可将程序中的不足(如数据验证)根据自己的能力与理解完成。 实现方法:C语言实现 创建人:软件工程1704班 赵茹平 创建时间:2019年4月1日 最后一次修改时间:2019年4月3日 **/ #include<stdio.h> /*I/O函数*/ #include<stdlib.h> /*其它说明*/ #include<string.h> /*字符串函数*/ #define LEN 15 /* 学号和姓名最大字符数,实际请更改*/ //#define max 100; #define N 50 /* 最大学生人数,实际请更改*/ int k=1,n=0, m=0;/* n代表当前记录的学生人数*/ /*函数声明*/ void help(); /*系统帮助*/ void readfile(); /*建立数据*/ void seek(); /*查找数据*/ void modify(); /*修改数据*/ void insert(); /*插入数据*/ void del(); /*删除数据*/ void display(); /*显示信息*/ void sort(); /*按学号排序*/ void save(); /*保存界面*/ void menu(); /*用户界面*/ int main() { while(k) { menu(); } system("pause");/*直接调用DOS命令Pause,无返回值*/ return 0; } /*学生信息结构体*/ struct student{ char code[11]; /* 学号*/ char name[10]; /* 姓名*/ int age; /* 年龄*/ char sex[4]; /* 性别*/ float scorec; /* C语言成绩*/ float scoremath; /*高数成绩*/ float scoreEnglish;/*大学英语成绩*/ }stu[N]; /*系统帮助函数*/ void help() { printf("\n0.欢迎使用系统帮助!\n"); printf("\n1.初次进入系统后,请先选择增加学生信息;\n"); printf("\n2.按照菜单提示键入数字代号;\n"); printf("\n3.增加学生信息后,切记保存;\n"); printf("\n4.谢谢您的使用!\n"); } /*从文件中读入数据,更新信息*/ void readfile() { char filename[LEN+1]; /*文件名*/ FILE *fp; /*文件指针*/ int i=0; printf("请输入已存有学生信息的文件名:\n"); scanf("%s",filename); if((fp=fopen(filename,"r"))==NULL) /*以只读的方式打开指定文件*/ { printf("打开文件%s出错!",filename); printf("您需要先选择菜单4增加学生信息,并注意及时保存!\n"); system("pause"); return; } while(fscanf(fp,"%s %s %d %s %f %f %f",stu[i].code,stu[i].name,&stu[i].age,stu[i].sex,&stu[i].scorec,&stu[i].scoremath,&stu[i].scoreEnglish)==7) /*循环读入学生信息*/ { i++; } n=i; if(0==i) printf("文件为空,请选择菜单4增加学生信息,并注意及时保存!\n"); else printf("更新完毕!\n"); fclose(fp); system("pause"); } /*查找学生信息*/ void seek() { int i,item,flag; char s1[21]; /* 以姓名和学号最长长度+1为准*/ printf("------------------\n"); printf("-----1.按学号查询-----\n");/*两种查询方式*/ printf("-----2.按姓名查询-----\n"); printf("-----3.退出本菜单-----\n"); printf("------------------\n"); while(1) { printf("请选择子菜单编号:"); scanf("%d",&item); flag=0; switch(item) { case 1: printf("请输入要查询的学生的学号:\n");/*按学号查询*/ scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].code,s1)==0)/*比较系统中的学号与所要查询学号是否相等*/ { flag=1; printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %6s %9.1f %10.1f %10.1f\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].scorec,stu[i].scoremath,stu[i].scoreEnglish);/*输出学生信息*/ } if(0==flag) printf("该学号不存在!\n"); break; case 2: printf("请输入要查询的学生的姓名:\n");/*按姓名查询*/ scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].name,s1)==0)/*比较系统中的姓名与所要查询姓名是否相等*/ { flag=1; printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %6s %9.1f %10.1f %10.1f\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,&stu[i].scorec,&stu[i].scoremath,&stu[i].scoreEnglish); } if(0==flag) printf("该姓名不存在!\n"); break; case 3:return; default:printf("请在1-3之间选择\n");/*所选非1-3*/ } } } /*修改学生信息*/ void modify() { int i,item,num; int age; char sex1[4],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准*/ float score1, score2, score3; printf("请输入要要修改的学生的学号:\n"); scanf("%s",s1); for(i=0;i<n;i++){ if(strcmp(stu[i].code,s1)==0){ /*比较字符串是否相等*/ num=i; printf("------------------\n"); printf("1.修改姓名\n"); printf("2.修改年龄\n"); printf("3.修改性别\n"); printf("4.修改C语言成绩\n"); printf("5.修改高等数学成绩\n"); printf("6.修改大学英语成绩\n"); printf("7.退出本菜单\n"); printf("------------------\n"); while(1) { printf("请选择子菜单编号:"); scanf("%d",&item); switch(item) { case 1: printf("请输入新的姓名:\n"); scanf("%s",s2); strcpy(stu[num].name,s2); break; case 2: printf("请输入新的年龄:\n"); scanf("%d",&age); stu[num].age=age; break; case 3: printf("请输入新的性别:\n"); scanf("%s",&sex1); strcpy(stu[num].sex,sex1); break; case 4: printf("请输入新的C语言成绩:\n"); scanf("%f",&score1); stu[num].scorec=score1; break; case 5: printf("请输入新的高等数学成绩:\n"); scanf("%f",&score2); stu[num].scoremath=score2; break; case 6: printf("请输入新的大学英语成绩:\n"); scanf("%f",&score3); stu[num].scoreEnglish=score3; break; case 7: return; default:printf("请在1-7之间选择\n"); } } } else{ printf("没有该学生学号!"); } } } void sort()/*按学号排序*/ { int i,j,*p,*q,s; char temp[LEN+1],ctemp[4]; float ftemp1,ftemp2,ftemp3; for(i=0;i<n-1;i++) /*比较法排序*/ { for(j=n-1;j>i;j--) if(strcmp(stu[j-1].code,stu[j].code)>0) { strcpy(temp,stu[j-1].code);/*交换学号*/ strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp); strcpy(temp,stu[j-1].name);/*交换姓名*/ strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp); strcpy(ctemp,stu[j-1].sex);/*交换性别*/ strcpy(stu[j-1].sex,stu[j].sex); strcpy(stu[j].sex,ctemp); p=&stu[j-1].age;/*交换年龄*/ q=&stu[j].age; s=*q; *q=*p; *p=s; ftemp1=stu[j-1].scorec;/*交换C语言成绩*/ stu[j-1].scorec=stu[j].scorec; stu[j].scorec=ftemp1; ftemp2=stu[j-1].scoremath;/*交换高数成绩*/ stu[j-1].scoremath=stu[j].scoremath; stu[j].scoremath=ftemp2; ftemp3=stu[j-1].scoreEnglish;/*交换英语成绩*/ stu[j-1].scoreEnglish=stu[j].scoreEnglish; stu[j].scoreEnglish=ftemp3; } } } /*添加学生信息*/ void insert(){ int j=n; printf("请输入待增加的学生数:\n"); scanf("%d",&m); do { //stu[j].code=(char *)malloc(10); //stu[j].name=(char *)malloc(15); printf("请输入第%d 个学生的学号:\n",j-n+1); scanf("%s",&stu[j].code); printf("请输入第%d 个学生的姓名:\n",j-n+1); scanf("%s",&stu[j].name); printf("请输入第%d 个学生的年龄:\n",j-n+1); scanf("%d",&stu[j].age); printf("请输入第%d 个学生的性别:\n",j-n+1); scanf(" %s",&stu[j].sex); printf("请输入第%d 个学生的C语言成绩\n",j-n+1); scanf("%f",&stu[j].scorec); printf("请输入第%d 个学生的高等数学成绩:\n",j-n+1); scanf("%f",&stu[j].scoremath); printf("请输入第%d 个学生的大学英语成绩:\n",j-n+1); scanf("%f",&stu[j].scoreEnglish); j++; }while(j<n+m); n+=m; printf("信息增加完毕!\n\n"); sort(); } /*按学号删除信息*/ void del() { int i,j,flag=0; /*flag为查找成功标记,0表示查找失败,1表示查找成功*/ char s1[LEN+1]; printf("请输入要删除学生的学号:\n"); scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].code,s1)==0) /*找到要删除的学生记录*/ { flag=1; /*查找成功*/ for(j=i;j<n-1;j++) /*后面的学生记录向前移动*/ stu[j]=stu[j+1]; } if(flag==0) /*查找失败*/ printf("该学号不存在!\n"); if(flag==1) { printf("删除成功!显示结果请选择菜单6,并注意及时保存\n"); n--; /*删除成功后,学生人数减1*/ } system("pause"); } /*显示当前信息*/ void display() { int i; printf("共有%d位学生的信息:\n",n); if(0!=n) { printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n"); printf("----------------------------------------------------------------\n"); for(i=0;i<n;i++) { printf("%7s %7s %6d %6s %9.1f %10.1f %10.1f\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].scorec,stu[i].scoremath,stu[i].scoreEnglish); } } } /*保存当前学生信息*/ void save() { int i; FILE *fp; /*文件指针*/ char filename[LEN+1]; /*文件名*/ printf("请输入欲将学生信息写入的文件名:\n"); scanf("%s",filename); fp=fopen(filename,"a"); /*以写入的方式打开文件*/ for(i=0;i<n;i++) { //printf("学号 姓名 年龄 性别 C语言成绩 高数成绩 英语成绩\n"); fprintf(fp,"%s %s %d %s %f %f %f\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].scorec,stu[i].scoremath,stu[i].scoreEnglish); } printf("保存成功!\n"); fclose(fp); system("pause"); } void menu()/* 界面*/ { int num; printf(" \n\n \n\n"); printf(" ********************************************** \n\n"); printf(" * 学生信息管理系统 * \n\n"); printf(" ********************************************** \n\n"); printf(" ****************系统功能菜单****************** \n"); printf(" *--------------------- --------------------* \n"); printf(" ********************************************** \n"); printf(" * 0.系统帮助及说明 * * 1.刷新学生信息 * \n"); printf(" ********************************************** \n"); printf(" * 2.查询学生信息 * * 3.修改学生信息 * \n"); printf(" ********************************************** \n"); printf(" * 4.增加学生信息 * * 5.按学号删除信息 * \n"); printf(" ********************************************** \n"); printf(" * 6. 显示当前信息 * * 7.保存当前学生信息 * \n"); printf(" ********************************************** \n"); printf(" * 8. 退出系统 * \n"); printf(" ********************************************** \n"); printf(" ---------------------- --------------------- \n"); printf("请选择菜单编号:"); scanf("%d",&num); switch(num) { case 0:help();break; case 1:readfile();break; case 2:seek();break; case 3:modify();break; case 4:insert();break; case 5:del();break; case 6:display();break; case 7:save();break; case 8:k=0;break; default:printf("请在0-8之间选择\n"); } }
4.测试结果
菜单如下
增加学生信息
保存学生信息
查询成绩为0,出错
修改之后显示学生信息
删除学生信息
文件保存结果如下:
5.经验总结
学生信息管理系统是一个很经典的程序,它用到了很多我们会时常用到的基本功能,让我对以前的一些知识加深了理解。
①int strcmp(char *str1, char *str2);比较字符串str1和str2是否相同。如果相同则返回0;如果不同,在不同的字符处如果str1的字符大于str2的字符,则返回1,否则返回-1。返回值共有3种,0,1,-1.②C语言中文件的用法
开始使用文件操作保存信息时,文件的打开方式用的”w”,然后发现每次关闭程序后再重新输入数据,之前输入的数据被清空了,后来在网上查阅资料后得知,这种方式会清空文件,重新写入数据,所以将文件的打开方式变为了”a”,意思为追加,发现问题得到了解决。所以以后再使用文件时,一定要注意文件的打开方式。由于对文件的操作不熟悉,测试了好多次,只能将学生的信息存入到文件中,而无法将学生的信息从文件中提取出来,最后终于找到错误原来是文件保存中加了一行文字,导致while(fscanf(fp,"%s %s %d %s %f %f %f",stu[i].code,stu[i].name,&stu[i].age,&stu[i].sex,&stu[i].scorec,&stu[i].scoremath,&stu[i].scoreEnglish)==7)这一循环出现问题,直接跳出循环,最后删去那行文字,就可以读出文件信息了。
③%c和%s的区别
用做输入时,%c输入函数只会对一个字节空间赋值,而%s会一直赋值,直到输入中遇到空格为止。scanf(“%c”,&a),要加&,而scanf(“%s”,a)不加&。 -
python学生信息管理系统课程设计实验报告_学生信息管理系统课程设计报告.docx...
2020-12-17 07:01:161、目的:为规范订单/合同管理,使订单/合同执行有序进行,特制定本流程。2、适用范围适用于业务部门、集团各分公司所有订单/合同执行的全过程。3、职责3.1分公司各部门3.1.1业务部门(1)负责接收订单/合同,与客户...1
、目
的
:
为规范订单
/
合同管理,使订单
/
合同执行有序进行,特制定本流程。
2
、适用范围
适用于业务部门、集团各分公司所有订单
/
合同执行的全过程。
3
、职责
3.1
分公司各部门
3.1.1
业务部门
(
1
)负责接收订单
/
合同,与客户进行沟通,提供客户所有要求信息。
(
2
)负责组织相关部门进行订单
/
合同评审。
(
3
)负责编制“报价联系单”、“大货采购单
/
购销合同”。
3.1.2
技术部门
(
1
)负责编制“报价单”,“工程更改通知单”。
(
2
)负责产品技术、工艺可行性评审及价格评审。
3.1.3
生产部门
(
1
)负责产品生产保证可行性评审。
(
2
)负责按照订单的各项要求安排生产。
3.1.4
品质部门
(
1
)负责产品的质量保证可行性评审。
(
2
)负责按照订单的各项要求及检验规范安排产品检验。
3.2
服务管理委员会
3.2.1
采购部
(
1
)负责原材料、外购件资源配套能力、价格的评审。
(
2
)负责每天对钢材等主要原材料价格进行通报,做出“主要原材料价格趋势图”,并
通过电子邮件知会各分公司总经理、总裁及董事长,作为各分公司总经理决策参考。
3.2.2
财务部
(
1
)负责产品报价单销售毛利率、销售费用率、销售利润率的评审。
(
2
)负责对汇率、出口退税等影响产品报价因素进行及时通报,每月出具汇率、出口关
税报表,作为各分公司总经理决策参考。当汇率、出口退税出现变动时,第一时间通知
各分公司总经理。
3.2.3
品质监督部
(1)
负责产品质量保证可行性评审;负责订单
/
合同的备案管理。
(2)
负责监督和检查各分公司在生产之前完成检验规范、检验标准的制定。
3.2.4
总裁负责订单
/
合同的审批。
-
学生成绩管理系统实验报告,C++.docx
2020-08-17 07:43:03计算机与信息工程学院 面向对象课程设计报告 班 级 计算机学院 专 业 计算机科学与技术 题 目 学牛成绩管理系统 指导教师 导师职称 学 号 姓 名 组 长: 年 月 日 一 设计目的 1定义类 2实现程序功能 4 错误未定义... -
软件工程实验-学生信息管理系统-需求分析.docx
2020-02-25 13:22:41攀 枝 花 学 院 实 验 报 告 实验课程软件工程试验 实验项目项目需求分析 实验日期2013.4.17 系数学与计算机学院 指导教师冯伟 班级软件工程 姓名冯斌 学号201010804004 成绩 实验目的 了解系统规划的主要内容 掌握... -
Java学生信息管理(Swing窗体)x_学生信息管理系统代码
2020-03-09 13:49:26JAVA 程序设计实验报告 学期2016-2017-2 实验名称实验 5综合性程序设计简单学生信息管理系统 班级* 一实验目的 二实验内容与结果 姓名Zzz 学号20151601* 1任务描述(1.3 与 1.4 二选一建议选择 1.4 利用课程所学知识... -
C语言学生学籍信息管理系统源码附赠实验报告
2019-06-17 20:44:37C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。本课程设计具有如下特点:重点在于C语言...一.课程设计目标
C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。本课程设计具有如下特点:重点在于C语言的基本特征上,涵盖了C语言的重要基础知识。结合了实际应用的要求,使课程设计既涵盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力以及编程能力,并养成良好的编程习惯。
另外,在实际编程中,为了提高编程质量,希望学生在书写代码时,对空行、空格和注释严格按要求处理,以建立良好的编程风格。
二.设计项目:学生学籍管理
该课程设计是设计一个模拟学生信息管理程序,要求使用链表来实现。它具有浏览、插入、删除、修改等功能,并且能够对数据进行文件存储和读出操作。
主要功能模块:
1. 浏览学生信息:显示学生的信息。
2. 插入学生信息:添加学生的信息。
3. 删除学生信息:通过输入学号删除学生的信息。
4. 修改学生信息:通过输入学号修改学生的信息。
5. 保存学生信息:将学生信息保存到文件。
0. 退出系统:结束程序的运行,结束前询问是否保存信息。
三.具体任务
由老师提供主菜单程序以及第0、2个模块。
学生在这个信息系统中加入四个模块,即:
1. 浏览学生信息
3. 删除学生信息
4. 修改学生信息
5. 保存学生信息
C语言学生学籍信息管理系统源码+实验报告
下载链接:https://pan.baidu.com/s/1YNNm8VCOByc2uhpwl_RuNw
提取码:4ez3 -
《学生信息管理系统》论文
2020-07-06 20:16:01本文主要介绍了学生信息管理系统的开发,包括了项目开发目的、系统结构、实验代码、实验结果以及本人最后的总结和展望。 1.引言 为了方便学校教育者对学生信息的管理,极大地提高信息传递的速度以及更新的速度,面对...《学生信息管理系统》论文
摘要
学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本文主要介绍了学生信息管理系统的开发,包括了项目开发目的、系统结构、实验代码、实验结果以及本人最后的总结和展望。
1.引言
为了方便学校教育者对学生信息的管理,极大地提高信息传递的速度以及更新的速度,面对庞大的学生信息量,需要有学生信息管理系统来提高学生管理工作的效率。并且,在项目中添加有修改、删除、查询、排序学生的姓名、学号以及各科成绩的功能。
2.系统结构
2.1系统结构图
2.2相关技术
1.导入正则表达式模块、操作系统模块;
2.把学生字典添加到列表中(学生字典包括学生学号、姓名、英语成绩、python成绩以及C语言成绩);
3.使用分类、排序对各个学生的各科成绩进行比较;
4.最后将列表保存到文件中供随时传递整理;
5.每次功能实现后会询问时候继续,或退出到主界面中。3.实现代码
import re # 导入正则表达式模块 import os # 导入操作系统模块 filename = "wan97h.txt" # 定义保存学生信息的文件名
主菜单界面代码如下所示:
打印出菜单栏的信息def menu(): # 输出菜单 print(''' ╔———————————————学生信息管理系统———————————————╗ │ │ │ =============== 功能菜单 ============= │ │ │ │ 1 录入学生信息 │ │ 2 查找学生信息 │ │ 3 删除学生信息 │ │ 4 修改学生信息 │ │ 5 排序 │ │ 6 统计学生总人数 │ │ 7 显示所有学生信息 │ │ 0 退出系统 │ │ ========================================== │ │ 说明:通过输入数字选择菜单 │ ╚—————————————————————————————————————————————╝ ''')
Main函数代码如下所示:
首先菜单建立在循环的条件中一直进行(while (True)),用数字代表功能选项,存放在列表中,用(if…elif),当用户输入相应的数字后,会进入相应的函数。def main(): ctrl = True # 标记是否退出系统 while (ctrl): menu() # 显示菜单 option = input("请选择:") # 选择菜单项 option_str = re.sub("\D", "", option) # 提取数字 if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']: option_int = int(option_str) if option_int == 0: # 退出系统 print('您已退出学生成绩管理系统,多谢使用!') ctrl = False elif option_int == 1: # 录入学生成绩信息 insert() elif option_int == 2: # 查找学生成绩信息 search() elif option_int == 3: # 删除学生成绩信息 delete() elif option_int == 4: # 修改学生成绩信息 modify() elif option_int == 5: # 排序 sort() elif option_int == 6: # 统计学生总数 total() elif option_int == 7: # 显示所有学生信息 show()
录入学生信息代码如下所示:
整个功能在定义的insert函数中,定义保存学生信息的列表stdentlist,当用户输入id、name后,系统会检测。输入了三种成绩,保存到学生字典中,最后用stdentlist.append(),将学生字典添加到列表中,并在最后保存到文件。'''1 录入学生信息''' def insert(): stdentList = [] # 保存学生信息的列表 mark = True # 是否继续添加 while mark: id = input("请输入ID(如 171110301):") if not id: # ID为空,跳出循环 break name = input("请输入名字:") if not name: # 名字为空,跳出循环 break try: english = int(input("请输入英语成绩:")) python = int(input("请输入Python成绩:")) c = int(input("请输入C语言成绩:")) except: print("输入无效,必须为整数,请重新录入信息!") continue stdent = {"id": id, "name": name, "English": english, "Python": python, "C语言": c} # 将输入的学生信息保存到字典 stdentList.append(stdent) # 将学生字典添加到列表中 inputMark = input("是否继续添加?(y/n):") if inputMark == "y": # 继续添加 mark = True else: # 不继续添加 mark = False save(stdentList) # 将学生信息保存到文件 print("学生信息录入成功!!!")
保存学生信息到文件中的代码如下所示:
定义save函数操作将学生信息保存到文件中,open(filename,‘a’)以追加模式打开文件,如果文件不存在,就创建一个文件并打开(open(filename, ‘w’)), 最后students_txt.write(str(info) + “\n”)按行存储,添加换行符。并用.close()关闭文件。# 将学生信息保存到文件 def save(student): try: students_txt = open(filename, "a") # 以追加模式打开 except Exception as e: students_txt = open(filename, "w") # 文件不存在,创建文件并打开 for info in student: students_txt.write(str(info) + "\n") # 按行存储,添加换行符 students_txt.close() # 关闭文件
查找学生信息代码如下所示:
定义search函数操作查找学生成绩信息,这次定义列表student_query = []来保存查询结果的学生列表,首先判断文件是否存在(if os.path.exists(filename)),判断存在后进行下一步操作,将查询学生信息的结果赋值到mode,可通过不同的输入方式进入,将之前保存的列表读取出来(student = file.readlines()),并将字符串转换为字典(d = dict(eval(list))),将找到的学生信息保存到列表中student_query.append(d),显示出查询结果(show_student(student_query))。'''2 查找学生成绩信息''' def search(): mark = True student_query = [] # 保存查询结果的学生列表 while mark: id = "" name = "" if os.path.exists(filename): # 判断文件是否存在 mode = input("按ID查输入1;按姓名查输入2:") if mode == "1": id = input("请输入学生ID:") elif mode == "2": name = input("请输入学生姓名:") else: print("您的输入有误,请重新输入!") search() # 重新查询 with open(filename, 'r') as file: # 打开文件 student = file.readlines() # 读取全部内容 for list in student: d = dict(eval(list)) # 字符串转字典 if id is not "": # 判断是否按ID查 if d['id'] == id: student_query.append(d) # 将找到的学生信息保存到列表中 elif name is not "": # 判断是否按姓名查 if d['name'] == name: student_query.append(d) # 将找到的学生信息保存到列表中 show_student(student_query) # 显示查询结果 student_query.clear() # 清空列表 inputMark = input("是否继续查询?(y/n):") if inputMark == "y": mark = True else: mark = False else: print("暂未保存数据信息...") return
删除学生信息代码如下所示:
定义delete函数操作删除学生成绩信息。首先会进入一个循环(while (mark))判断要删除的学生是否存在,若不存在会打印无学生信息并退出这个循环。打开文件(with open(filename, ‘r’) as rfile:)后读取全部内容(student_old = rfile.readlines()),这里定义一个空字典(d = {}),将旧的学生字典(student_old = []),转换到空字典中,然后原有的学生字典变为空。'''3 删除学生成绩信息''' def delete(): mark = True # 标记是否循环 while mark: studentId = input("请输入要删除的学生ID:") if studentId is not "": # 判断要删除的学生是否存在 if os.path.exists(filename): # 判断文件是否存在 with open(filename, 'r') as rfile: # 打开文件 student_old = rfile.readlines() # 读取全部内容 else: student_old = [] ifdel = False # 标记是否删除 if student_old: # 如果存在学生信息 with open(filename, 'w') as wfile: # 以写方式打开文件 d = {} # 定义空字典 for list in student_old: d = dict(eval(list)) # 字符串转字典 if d['id'] != studentId: wfile.write(str(d) + "\n") # 将一条学生信息写入文件 else: ifdel = True # 标记已经删除 if ifdel: print("ID为 %s 的学生信息已经被删除..." % studentId) else: print("没有找到ID为 %s 的学生信息..." % studentId) else: # 不存在学生信息 print("无学生信息...") break # 退出循环 show() # 显示全部学生信息 inputMark = input("是否继续删除?(y/n):") if inputMark == "y": mark = True # 继续删除 else: mark = False # 退出删除学生信息功能
修改学生信息代码如下所示:
定义modify函数操作修改学生成绩信息。首先使用show()显示当前的列表,即全部学生的信息,通过相关的判断之后以写模式打开文件(with open(filename, “w”) as wfile:),这里通过原学生表(student_old),d = dict(eval(student))将字符串转换字典,然后d[‘’]中更改成用户输入的内容,完成学生信息修改。'''4 修改学生成绩信息''' def modify(): show() # 显示全部学生信息 if os.path.exists(filename): # 判断文件是否存在 with open(filename, 'r') as rfile: # 打开文件 student_old = rfile.readlines() # 读取全部内容 else: return studentid = input("请输入要修改的学生ID:") with open(filename, "w") as wfile: # 以写模式打开文件 for student in student_old: d = dict(eval(student)) # 字符串转字典 if d["id"] == studentid: # 是否为要修改的学生 print("已成功找到该名学生,请根据如下修改他的信息!") while True: # 输入要修改的信息 try: d["name"] = input("请输入姓名:") d["English"] = int(input("请输入英语成绩:")) d["Python"] = int(input("请输入Python成绩:")) d["C语言"] = int(input("请输入C语言成绩:")) except: print("您的输入有误,请重新输入。") else: break # 跳出循环 student = str(d) # 将字典转换为字符串 wfile.write(student + "\n") # 将修改的信息写入到文件 print("修改成功!") else: wfile.write(student) # 将未修改的信息写入到文件 mark = input("是否继续修改其他学生信息?(y/n):") if mark == "y": modify() # 重新执行修改操作
排序学生成绩代码如下所示:
定义sort函数操作排序。前面的代码大概相同,引入学生字典,转换到列表当中。定义ascORdesc为排序(升序或降序)。当用户输入‘1’时,标记变量为False表示升序;当用户输入‘2’时,标记变量为True表示降序。最后通过(student_new.sort())方法选择排序英语成绩、pyhton成绩、C语言成绩和总成绩。'''5 排序''' def sort(): show() # 显示全部学生信息 if os.path.exists(filename): # 判断文件是否存在 with open(filename, 'r') as file: # 打开文件 student_old = file.readlines() # 读取全部内容 student_new = [] for list in student_old: d = dict(eval(list)) # 字符串转字典 student_new.append(d) # 将转换后的字典添加到列表中 else: return ascORdesc = input("请选择(1升序;2降序):") if ascORdesc == "1": # 按升序排序 ascORdescBool = False # 标记变量,为False表示升序排序 elif ascORdesc == "2": # 按降序排序 ascORdescBool = True # 标记变量,为True表示降序排序 else: print("您的输入有误,请重新输入!") sort() mode = input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):") if mode == "1": # 按英语成绩排序 student_new.sort(key=lambda x: x["English"], reverse=ascORdescBool) elif mode == "2": # 按Python成绩排序 student_new.sort(key=lambda x: x["Python"], reverse=ascORdescBool) elif mode == "3": # 按C语言成绩排序 student_new.sort(key=lambda x: x["C语言"], reverse=ascORdescBool) elif mode == "0": # 按总成绩排序 student_new.sort(key=lambda x: x["English"] + x["Python"] + x["C语言"], reverse=ascORdescBool) else: print("您的输入有误,请重新输入!") sort() show_student(student_new) # 显示排序结果
统计学生总数代码如下所示:
定义total函数操作统计学生总数。这里用len(student_old))统计学生列表的长度。''' 6 统计学生总数''' def total(): if os.path.exists(filename): # 判断文件是否存在 with open(filename, 'r') as rfile: # 打开文件 student_old = rfile.readlines() # 读取全部内容 if student_old: print("一共有 %d 名学生!" % len(student_old)) else: print("还没有录入学生信息!") else: print("暂未保存数据信息...")
显示所有学生信息代码如下所示:
定义show()函数操作显示所有学生信息。''' 7 显示所有学生信息 ''' def show(): student_new = [] if os.path.exists(filename): # 判断文件是否存在 with open(filename, 'r') as rfile: # 打开文件 student_old = rfile.readlines() # 读取全部内容 for list in student_old: student_new.append(eval(list)) # 将找到的学生信息保存到列表中 if student_new: show_student(student_new) else: print("暂未保存数据信息...")
显示在列表中的学生信息代码如下所示:
定义show_student函数操作将保存在列表中的学生信息显示出来。这里先提前定义输出文件的格式,包括科目名字(format_title)还有成绩的格式(format_data)。最后str(info.get(""))方法输出数据。# 将保存在列表中的学生信息显示出来 def show_student(studentList): if not studentList: print(" 对不起,无数据信息! \n") return format_title = "{:^6}{:^15}\t{:^8}\t{:^10}\t{:^10}\t{:^10}" print(format_title.format("ID", "名字", "英语成绩", "Python成绩", "C语言成绩", "总成绩")) format_data = "{:^6}{:^9}\t{:^10}\t{:^16}\t{:^8}\t{:^15}" for info in studentList: print(format_data.format(info.get("id"), info.get("name"), str(info.get("English")), str(info.get("Python")), str(info.get("C语言")), str(info.get("English") + info.get("Python") + info.get("C语言")).center(12)))
if __name__ == "__main__": main()
4.实验结果
录入学生信息功能展示如下所示:
信息输入错误时显示如下所示
查找学生信息功能展示如下所示:
分别用学生ID查询和学生姓名查询
删除学生信息功能展示如下所示:
修改学生信息功能展示如下所示:
排除功能展示如下所示:
统计学生总人数功能展示如下所示:
显示所有学生信息功能展示如下所示:
5.总结和展望
5.1系统的总结
学生信息管理系统的特点鲜明,通过把学生字典放在列表当中提取存储,实现信息管理,还提供了给学生成绩排序、修改的功能,大大提高了工作效率。
即使说是利用了计算机管理学生信息系统,但这只是大型系统的雏形,开发人员少,开发系统的时间短,所以系统做得还不齐全,后面还会再补充更多的功能。而且,我在后面还能再添加登录的功能,这样更能做到信息的保密。也可以优化整个系统的界面,让功能与功能之间的转换更加流畅。总之,学生信息管理系统还有很大的成长空间。5.2我的展望
在这次系统的开发中,由于我是第一次接触到python方面的知识,所以在开发方面的经验还存在不足,而且对学生管理的整个流程还不够熟悉。因此,这个系统还存在一些缺陷和不足,在需求分析时不能完全满足用户的需求。
在以后,我会补充更多的python知识,用来完善这个学生信息管理系统。在开发设计系统的过程中,我遇到难点也不会轻易放弃,换一个项目重头开始,而是会上网搜素,这对于我以后工作有了很大的帮助。在工作中遇到卡顿的时候也可以换个方向去思考,正所谓条条马路通罗马。 -
Java学生信息管理系统Swing窗体.docx
2020-11-24 10:15:44标准文档 实验名称实验 5综合性程序设计简单学生信息管理系统 班级 * 姓名 Zzz 学号 20151601* 一实验目的 二实验内容与结果 1任务描述 (1.3 与 1.4 二选一建议选择 1.4 利用课程所学知识设计并实现一个简单学生信息... -
python学生信息管理系统课程设计报告_学生信息管理系统课程设计报告
2020-12-17 06:59:39一、引言(简要说明设计题目的目的、意义、内容、主要任务等)1实验目的在全面掌握《C语言程序设计》课程的知识点的前提下,培养了我们分析实际问题的能力,并能够自己编写程序实现对实际问题的处理,掌握程序项目开发... -
C++实验,学生成绩管理系统设计
2020-05-14 15:55:11一、实验目的 1、掌握类的定义和使用;掌握对象的声明和使用。 2、掌握类的静态成员的使用。 3、综合应用继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。 二、实验设备和环境 奔腾以上计算机,... -
C语言课程设计学生信息管理系统方案.doc
2020-01-22 11:21:11C语言课程设计实验报告 一设计目的 学生信息包括学号姓名性别系名班级名出生年月住址电话号码设计一学生信息管理系统使之能提供以下功能 1.系统以菜单方式工作 2.学生信息录入功能(输入) 3.学生信息浏览功能(输出; ... -
java案例分析与设计实验学生综合管理系统[汇编].pdf
2020-08-29 00:06:34综合实验三 学籍管理软件 一实验目的 掌握编写数据库应用程序的方法包括菜单布局管理器弹出提示信息对 话框输入对话框数据库读写事件处理以及文本文件的读写 二实验环境 PC 系列微机 Windows XP EclipseJDK150 或更... -
Python | 简单学生信息管理系统
2020-03-22 11:50:39Python简单学生信息管理系统 ''' 实验一 顺序表的实现 实验目的: 理解顺序表的基本原理,掌握顺序表的基本操作的编程实现 实验内容: (1)建立一个顺序表,表中存储学生的成绩数据(包括姓名,学号,数据结构成绩,外语成绩... -
Java课程设计学生信息管理系统.doc
2020-09-02 07:57:15课程设计报告 设计名称 面向对象课程设计 选题名称 学生信息管理系统 姓 名 学 号 专业班级 系 院 计算机工程学院 设计时间 2014.3.10~2014.4.11 设计地点 软件实验室教室 指导教师评语 成绩 签名 年 日 月 页20 第 ... -
学生信息管理系统(C语言)
2019-04-14 19:30:47对学生信息管理系统,要求完成以下基本任务: 1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。 2.将功能补充完全(基于文件处理,完成刷新和保存功能)。 3.将学生信息改为更好的数据组织,而非离散... -
C语言学生信息管理系统
2018-02-24 16:30:12实验目的:1. 熟悉结构体的使用方法2. 学会综合运用循环语句与选择语句并结合字符串数组及数组实现学生相关信息的排序、查找、录入、删除等功能。3. 学会使用typedef声明新类型名4. 学会利用函数简化main()... -
JAVA 实现简单的学生成绩管理系统
2018-04-15 10:27:232.掌握简单的信息管理系统的设计与实现。二、实验环境实验建议在安装了以下软件的计算机上完成:1.Windows xp/win7/win8/win10操作系统2.JDK 1.6以上版本3.Eclipse或NetBeans IDE或EditPlus或其它开发工具三、实验... -
学生信息管理系统测试总报告
2019-10-18 11:55:53目录 1 前言 4 1.1 编写目的 4 ...3.2.1 系统管理模块 6 3.2.2 系统设置模块 6 3.2.3 用户管理模块 7 3.3 非功能需求 7 4. 设计测试用例 8 4.1 专业管理功能模块(场景分析法) 8 4.1.1 专业管理... -
学生信息管理系统代码
2012-12-04 23:21:16学生信息管理系统# include # include # include #include #include using namespace std; struct Student1 { char *num;//学号 char *subnum;//课程编号 char *subname;//课程编号 char *grade;//学分 ... -
一个写得很菜的学生成绩管理系统(C语言综合实验)
2020-12-31 16:39:01学生成绩管理系统 期末了,老师布置了C语言综合实验,程序写完了,结果答辩被取消了,有点可惜,现在把它放在这里。(直接看源代码的请划到最后) 实验题目 一、实验目的 通过该实验把C语言中基本知识(如:顺序结构、... -
学生信息管理系统实习报告 C语言实现
2009-12-16 12:14:41学生信息管理系统实习报告 C语言实现 包括源代码 需求分析 概要设计 运行情况等内容 一、课程设计目的 1)对C各部分知识的综合应用能力 2)提高程序设计的能力 3)提升对于较大程序的抽象分析设计能力 4)学习... -
小白必看 一个简单的学生信息管理系统
2020-05-01 13:44:47按以下菜单界面编写学生信息管理系统; 1)录入学生信息首先输入学生人数,然后根据学生人数开辟动态数组; 2)学生信息包括学号、姓名、性别、三门课成绩、总分;其中学号、姓名、 性别、三门课成绩是需要从键盘...
-
PowerBI重要外部工具详解
-
循环比赛的名次 图与网络 适用于数学建模培训和人工智能学习
-
计算机一键休眠bat批处理命令.zip
-
window版mysql8.0.23_win64安装包
-
织梦工程建筑职业院校学校类织梦模板(带手机端)
-
LeetCode 每日一题 2021-3-1
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
bgfx移植安卓
-
织梦响应式日化食品零食类网站织梦模板(自适应手机端)
-
织梦响应式健身俱乐部类网站织梦模板(自适应手机端)
-
MySQL 事务和锁
-
物联网基础篇:快速玩转MQTT
-
006_切割图片根据xml
-
BUAA-OO pre2-面向对象先导
-
BootStrap.zip
-
小码哥Coderwhy老师React核心技术与开发实战
-
【硬核】一线Python程序员实战经验分享(1)
-
C语言零基础入门(详细讲解)
-
nvcc, cuda driver,cudatoolkit的关系, 以及管理多个cuda版本
-
vue3从0到1-超详细