编写一个简单的学生信息管理程序
- 格式:pdf
- 大小:672.81 KB
- 文档页数:5
C++简单学生信息管理系统(C++课程设计)简介本文档旨在介绍一个基于C++的简单学生信息管理系统,该系统可以对学生的基本信息进行增删改查等操作。
该系统适用于C++课程设计,并且没有涉及到复杂的法律问题。
功能该学生信息管理系统具有以下功能:- 添加学生信息:可以输入学生的姓名、学号、年龄、性别等基本信息,并将信息保存到系统中。
- 删除学生信息:根据学号或姓名进行查询,并删除相应的学生信息。
- 修改学生信息:根据学号或姓名进行查询,并对相应的学生信息进行修改。
- 查询学生信息:根据学号或姓名进行查询,并显示相应的学生信息。
- 显示所有学生信息:显示系统中保存的所有学生信息。
使用说明以下是使用该学生信息管理系统的步骤:1. 运行程序:在C++编译器中运行程序。
2. 添加学生信息:选择相应的选项,按照提示输入学生的信息并保存。
3. 删除学生信息:选择相应的选项,根据学号或姓名进行查询,选择要删除的学生信息并确认删除。
4. 修改学生信息:选择相应的选项,根据学号或姓名进行查询,选择要修改的学生信息并按照提示进行修改。
5. 查询学生信息:选择相应的选项,根据学号或姓名进行查询,系统将显示相应的学生信息。
6. 显示所有学生信息:选择相应的选项,系统将显示保存的所有学生信息。
请注意:在使用该系统时,请确保按照指示输入正确的学生信息,以免出现错误。
总结通过这个简单的学生信息管理系统,可以方便地对学生的基本信息进行管理和查询。
这个系统可以用于C++课程设计,并且没有涉及到复杂的法律问题。
希望这份文档对C++课程设计的研究有所帮助。
请记住,这个学生信息管理系统是一个简化的版本,可能还需要进一步的功能扩展和优化。
python学⽣信息管理系统实现代码1.本⼈第⼀次学python做出来的,当时满满的成就感,当作纪念⾮常简单,复制即可使⽤代码块import json#把字符串类型的数据转换成Python基本数据类型或者将Python基本数据类型转换成字符串类型。
def login_user():while True:register=input('学⽣姓名:')try:with open(register+'.json')as file_object:user_message=json.load(file_object)#json.load(obj) 读取⽂件中的字符串,序列化成Python的基本数据类型except FileNotFoundError:print('该⽤户不存在!')breakelse:print('_'*20)register_password = input('请输⼊学号:')if user_message['id']==register and user_message['password']==register_password:str_print = '姓名:{}\t数学成绩:{}\t语⽂成绩:{}\t英语成绩: {}'grade_list = []while 1:print('''******************************欢迎使⽤【学⽣信息管理系统】请选择你想要进⾏的操作1.新建学⽣信息2.显⽰全部信息3.查询学⽣信息4.删除学⽣信息5.修改学⽣信息0.退出系统******************************''')action = input('请选择你想要的进⾏操作:\n')if action == '1':'''新建学⽣信息'''name = input('请输⼊名字')math = input('请输⼊数学成绩')chinese = input('请输⼊语⽂成绩')english = input('请输⼊英语成绩')total = int(math) + int(chinese) + int(english)grade_list.append([name,math,chinese,english,total])print([name,math,chinese,english,total])print('姓名:{}\t数学成绩:{}\t语⽂成绩:{}\t英语成绩: {}'.format(name,math,chinese,english,total))passelif action == '2':'''显⽰全部信息'''for info in grade_list:print(str_print.format(*info))elif action == '3':'''查询学⽣信息'''name = input('请输⼊你需要查询学⽣的姓名:')for info in grade_list:if name in info:print(str_print.format(*info))breakelse:print('此学⽣不存在')elif action == '4':'''删除学⽣信息'''name = input('请输⼊你需要查询学⽣的姓名:')for info in grade_list:if name in info:info_=grade_list.pop(grade_list.index(info))print('这个学员的信息已经被删除\n',info_)breakelse:print('此学⽣不存在')elif action == '5':'''修改学⽣信息'''name = input('请输⼊你需要查询学⽣的姓名:')for info in grade_list:if name in info:index = grade_list.index(info)breakelse:print('此学⽣不存在')continuemath = input('请输⼊数学成绩:')chinese = input('请输⼊语⽂成绩:')english = input('请输⼊英语成绩:')total = int(math) + int(chinese) + int(english)grade_list[index][0:] = [name,math,chinese,english,total]print('修改后的⼀个成绩',grade_list[index])elif action == '0':'''退出系统'''breakelse:print('输⼊信息有误,请重新输⼊')#print('登陆成功')return register,user_messageelse:print('登陆失败!⽤户名或密码错误')breakdef register_user():new_user=input('增加学⽣姓名:')try:with open(new_user+',.jion','r') as file_object:passexcept FileNotFoundError:new_password_one=input('请确认学号:')new_password_two=input('请再次确认学号:')if new_password_one==new_password_two:user_message={'id':new_user,'password':new_password_one}with open(new_user+'.json','w')as file_object:json.dump(user_message,file_object)#json.dump(obj) 将Python的基本数据类型序列化成字符串并写⼊到⽂件中print('新⽤户已经注册成功!可以登录了。
学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。
本文将介绍如何使用C语言编写一个简单的学生管理系统。
功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。
我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。
在主函数里能实现以下功能。
运行后出现一个选择提示。
可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"jiemian();struct student{char name[50];char sex[5];int age;char num[50];float score1;float score2;float score3;float sum;float ave;}stu[50],del;void gn1(){int i=0;char num1;for(i=0;i<50;i++){printf("请输入要添加的学生资料:\n");printf("学号:");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",&stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续添加:y/n\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n'){system("cls");jiemian();}}}void gn2(){int i;char num[50];printf("请输入要查找的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==0){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);break;}if(i==50)printf("查找不到!请重新输入!\n");getch();system("cls");jiemian();}void gn3(){char num1,i=0;printf("请输入要修改的学生学号:\n");scanf("%s",stu[i].num);printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续修改:y/n?\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n')system("cls");jiemian();}void gn4(){int i;char num[50];printf("请输入要删除的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(num,stu[i].num)==0){printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n");break;}if(i==50)printf("您输入的信息不存在!\n");getch();system("cls");jiemian();}void gn5(){int i=0;stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t 平均成绩\n"); for(i=0;i<50;i++){if(stu[i].age==0)break;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);}printf("按任意键返回...");getch();system("cls");jiemian();}void gn6(){FILE *fp;int i;char filename[50];printf("\n");printf("\n");printf("请输入要保存的文件名:");scanf("%s",filename);if((fp=fopen(filename,"wb"))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++){if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件保存失败!\n");}fclose(fp);printf("文件已保存!\n");printf("按任意键返回...\n");getch();system("cls");jiemian();}void gn7(){FILE *fp;int i=0; //打开文件流char filename[50];printf("请输入文件名:");scanf("%s",filename); //输入要载入的文件名if((fp=fopen(filename,"rb"))==0) //如果当前目录下不存在相对应的文件,输出文件不存在,退出系统。
vb6.0开发实例-回复VB6.0开发实例,一起来实现一个简单的学生信息管理系统!学生信息管理系统是一个常见的应用程序,用于管理学校、班级或者学生个人的信息。
在本文中,我们将通过使用VB6.0来开发一个简单的学生信息管理系统,从创建界面、添加学生信息、查询学生信息等一步一步的进行。
让我们开始吧!第一步:创建VB6.0项目首先,打开VB6.0开发环境。
点击“新建项目”,输入项目名称,比如“学生信息管理系统”,选择保存路径,然后点击“确定”。
第二步:设计界面在VB6.0的开发环境中,我们可以使用控件来设计用户界面。
在工具箱中选择“Label”控件,拖动到窗体上,用于显示文本信息。
然后,再添加“Textbox”控件,用于输入学生信息。
我们还可以添加一些按钮控件,比如“添加”和“查询”按钮。
第三步:添加学生信息在设计好界面之后,接下来我们需要编写代码,以实现添加学生信息的功能。
在“添加”按钮的Click事件中,编写代码如下:Private Sub cmdAdd_Click()' 获取用户输入的学生信息Dim studentName As StringDim studentID As IntegerstudentName = txtName.TextstudentID = CInt(txtID.Text)' 将学生信息保存到数据库或者内存中' 这里可以使用数据库,也可以使用数组来存储学生信息End Sub在这段代码中,我们首先声明变量来存储学生信息,然后从相应的输入框中获取用户输入的信息。
最后,我们可以将学生信息保存到数据库中,或者使用数组来存储学生信息。
第四步:查询学生信息接下来,我们来实现查询学生信息的功能。
在“查询”按钮的Click事件中,编写代码如下:Private Sub cmdSearch_Click()' 获取用户输入的学生IDDim studentID As IntegerstudentID = CInt(txtSearchID.Text)' 根据学生ID查询学生信息' 这里可以从数据库中查询学生信息,或者遍历数组进行查找' 显示查询结果' 这里可以使用消息框或者其他方式来显示查询结果End Sub在这段代码中,我们首先从输入框中获取用户输入的学生ID。
python写学生信息管理系统代码一、引言学生信息管理系统是一种非常常见的应用程序,它可以帮助学校或教育机构管理学生的信息,包括姓名、年龄、性别、学号等。
Python是一种流行的编程语言,它可以用来编写各种类型的应用程序,包括学生信息管理系统。
在本文中,我们将介绍如何使用Python编写一个简单的学生信息管理系统。
二、需求分析在开始编写代码之前,我们需要确定该系统需要实现哪些功能。
以下是该系统的主要功能:1. 添加学生信息:用户可以输入学生的姓名、年龄、性别和学号,并将其保存到文件中。
2. 查找学生信息:用户可以通过输入姓名或学号来查找特定的学生信息。
3. 修改学生信息:用户可以通过输入姓名或学号来修改特定的学生信息。
4. 删除学生信息:用户可以通过输入姓名或学号来删除特定的学生信息。
5. 显示所有学生信息:用户可以查看所有已保存到文件中的学生信息。
三、设计思路在了解了该系统需要实现哪些功能之后,我们可以开始设计代码了。
以下是该系统的设计思路:1. 使用Python内置函数open()打开一个文件,并将其存储在变量中。
2. 创建一个空列表students,在其中存储所有已添加到文件中的所有学生对象。
3. 创建一个Student类,该类包含学生的姓名、年龄、性别和学号属性。
4. 实现添加学生信息功能。
当用户输入学生信息时,我们将创建一个新的Student对象,并将其添加到students列表中。
然后,我们将使用Python内置函数pickle.dump()将students列表保存到文件中。
5. 实现查找学生信息功能。
当用户输入姓名或学号时,我们将遍历students列表,并查找与输入匹配的学生对象。
如果找到了匹配的对象,则打印该对象的所有属性。
6. 实现修改学生信息功能。
当用户输入姓名或学号时,我们将遍历students列表,并查找与输入匹配的学生对象。
如果找到了匹配的对象,则提示用户输入要修改的属性,并更新该属性。
登录界面主界面标题图片600*56像素代码from tkinter import * #导入Tkinter模块所有内容import tkinter.messageboximport tkinter.ttk as ttkdef login():def button1_clicked():user=entry1.get()password=entry2.get()if user=='root' and password=='admin':root.destroy()manager()else:tkinter.messagebox.showinfo('登录失败','帐号密码错误,请重新输入!') def button2_clicked():root.destroy()root=Tk();root.title("登录")#窗口标题root.geometry("300x200")f1=Frame(root,cursor='circle',bd=10,relief=FLAT,highlightthickness=1,highlightcolor='blue') f1.pack() #界面分为上、中、下三个Frame,f1放置第一行标签和文本框f2=Frame(root,bd=10);f2.pack() #f2放置第二行标签和文本框f3=Frame(root);f3.pack() #f3放置第三行标签和文本框label1=Label(f1,text="用户名")label1.pack(side=LEFT) #标签放置在f1中,左停靠entry1=Entry(f1)entry1.pack(side=LEFT) #单行文本框放在f1中,左停靠Label(f2,text='密码').pack(side=LEFT)entry2=Entry(f2)entry2.pack(side=LEFT)btn1=Button(f3,text='登录',command=button1_clicked).pack(side=RIGHT) #按钮放置在f3中,右停靠Button(f3,text='取消',command=button2_clicked).pack(side=RIGHT) #按钮放置在f3中,右停靠root.mainloop()def manager():root=Tk()root.title("欢迎登录学生信息管理系统")root.geometry('610x400')image1=PhotoImage(file='标题图片.png')label1=Label(root,image=image1)label1.pack()f1=Frame(root)f1.place(x=1,y=60)btn1=Button(f1,text='添加学生信息',bd=5,command=lambda:tjxs(table,'添加学生信息')) btn2=Button(f1,text='查找学生信息',bd=5)btn3=Button(f1,text='修改学生信息',bd=5,command=lambda:tjxs(table,'修改学生信息')) btn4=Button(f1,text='删除学生信息',bd=5,command=lambda:scxs(table))btn1.grid(row=0,column=0,ipady=10)btn2.grid(row=1,column=0,ipady=10)btn3.grid(row=2,column=0,ipady=10)btn4.grid(row=3,column=0,ipady=10)tableColumns=['编号','姓名','性别','年龄','电话']table=ttk.Treeview(master=root,columns=tableColumns, height=15,show='headings') table.place(x=100,y=60)for i in range(len(tableColumns)):table.heading(column=tableColumns[i],text=tableColumns[i],anchor=CENTER)table.column(tableColumns[i], width=100, anchor=CENTER ,stretch=True) try:with open('学生信息表.txt','r') as fa:for i in fa:stu=i.strip('\n').split(',')table.insert('','end',value=stu)except:passroot.mainloop()def tjxs(table,string):'''添加、修改学生信息'''def tjxs_btn1_click():bh=entry1.get()xm=entry2.get()xb=entry3.get()nl=entry4.get()dh=entry5.get()if string=='添加学生信息':with open('学生信息表.txt','a+') as fa:fa.write(bh+','+xm+','+xb+','+nl+','+dh+'\n')table.insert('','end',value=[bh,xm,xb,nl,dh])root1.destroy()tkinter.messagebox.showinfo('添加成功','添加学生{}的信息成功'.format(xm)) else:with open('学生信息表.txt','r+') as fa:stuNew=[]x=1for i in fa:if x==int(table.selection()[0].strip('I'),16):i=bh+','+xm+','+xb+','+nl+','+dhx+=1stuNew.append(i)fa.seek(0)for row in stuNew:fa.write(row)fa.close()table.item(table.selection()[0],value=[bh,xm,xb,nl,dh])tkinter.messagebox.showinfo('修改成功','修改学生{}的信息成功'.format(xm))root1.destroy()def tjxs_btn2_click():root1.destroy()if string=='修改学生信息' and len(table.selection())==0:tkinter.messagebox.showinfo('提示','请选择要修改的行')returnroot1=Tk()root1.title(string)root1.geometry('260x300')f0=Frame(root1)f0.place(x=40,y=40)f1=Frame(f0)f2=Frame(f0)f3=Frame(f0)f4=Frame(f0)f5=Frame(f0)f6=Frame(f0)f1.pack();f2.pack();f3.pack();f4.pack();f5.pack();f6.pack()label1=Label(f1,text='编号',bd=10)label2=Label(f2,text='姓名',bd=10)label3=Label(f3,text='性别',bd=10)label4=Label(f4,text='年龄',bd=10)label5=Label(f5,text='电话',bd=10)entry1=Entry(f1)entry2=Entry(f2)entry3=Entry(f3)entry4=Entry(f4)entry5=Entry(f5)label1.pack(side=LEFT);entry1.pack(side=LEFT)label2.pack(side=LEFT);entry2.pack(side=LEFT)label3.pack(side=LEFT);entry3.pack(side=LEFT)label4.pack(side=LEFT);entry4.pack(side=LEFT)label5.pack(side=LEFT);entry5.pack(side=LEFT)btn1=Button(f6,text='确定',command=tjxs_btn1_click)btn2=Button(f6,text='取消',command=tjxs_btn2_click)btn1.pack(side=LEFT);btn2.pack(side=RIGHT)if string=='修改学生信息' and len(table.selection())!=0:a=table.selection()b=table.set(a)entry1.insert(0,b['编号'])entry2.insert(0,b['姓名'])entry3.insert(0,b['性别'])entry4.insert(0,b['年龄'])entry5.insert(0,b['电话'])root1.mainloop()def scxs(table):'''删除学生信息'''if len(table.selection())==0:tkinter.messagebox.showinfo('错误','请选择要删除的行!') else:selected_item=table.selection()[0]x=int(selected_item.strip('I'),16)stuNew=[]with open('学生信息表.txt','r+') as fa:i=1for line in fa:stuOld=line.strip('\n').split(',')if i!=x:stuNew.append(stuOld)else:passi=i+1fa.seek(0)for row in stuNew:fa.write(','.join(row)+'\n')fa.close()tkinter.messagebox.showinfo('完成','成功删除学生的信息')table.delete(selected_item)if __name__=='__main__': login()。
学生信息管理系统python代码心得
在编写学生信息管理系统Python代码时,我首先明确了项目的功能需求,包括添加学生信息、修改学生信息、删除学生信息以及查询学生信息等。
接着,我采用面向对象的编程思想,创建了一个名为“Student”的类,用于存储和处理学生信息。
在Student类中,我定义了一系列属性和方法,例如学号、姓名、性别、年龄等属性,以及添加学生信息、修改学生信息、删除学生信息和查询学生信息等方法。
对于添加、修改和删除学生信息的方法,我使用了字典的数据结构,将学生信息以键值对的形式进行存储,在查询学生信息时,我使用了列表的数据结构,将所有学生信息存储在一个列表中,并通过遍历列表的方式进行查询。
此外,为了实现程序的交互性,我使用了Python标准库中的input函数,用于获取用户输入,并使用if-else语句进行逻辑判断和处理。
例如,当用户输入1时,程序会调用添加学生信息的方法,当用户输入2时,程序会调用修改学生信息的方法,以此类推。
最后,为了保证程序的可读性和可维护性,我使用了注释和模块化编程的思想,将程序分为不同的模块和函数,并在每个模块和函数中添加了必要的注释,对程序进行了解释和说明。
通过编写这个学生信息管理系统Python代码,我深刻理解了面向对象编程的思想和Python语言的特点,同时也提高了自己的编程能力和代码质量。
学生信息管理系统python代码总结学生信息管理系统是一个基于Python编写的简单的数据库应用程序。
它使用户能够轻松地添加、更新、删除和搜索学生信息。
以下是关于学生信息管理系统 python 代码的总结:1. 采用SQLite数据库实现该系统的关键点之一是采用SQLite数据库。
SQLite是一个自给自足的、零配置的、事务性的SQL数据库引擎,因其易于使用、快速、小巧可靠而受到广泛关注。
使用SQLite存储数据,使得应用程序能够轻松存取、查询、更新和删除学生信息。
2. 用户验证为确保该学生信息管理系统具有安全性,用户必须进行验证才能访问系统。
用户需要输入正确的用户名和密码才能登录系统。
登录认证采用图形用户界面(GUI)与终端交互式控制台(CLI)方式,用户可根据自己的需要选择适合自己的方式进行登录。
3. 显示所有学生信息学生信息管理系统将所有学生的信息存储在一个数据库中。
要显示所有学生信息,系统会读取数据库中的所有学生信息并将其显示在列表框中。
用户可以使用滚动条来浏览以前存储的所有学生信息。
在系统的主窗口中,用户可以在图像界面中查看所有学生的信息。
4. 添加学生信息当用户想要添加一位新学生的信息时,他们可以在界面中选择“添加学生”选项。
在另一个弹出的窗口中,用户可以输入学生的姓名、年龄、性别和学号等详细信息。
用户可以随时添加任意数量的学生信息,只需要单击添加按钮即可保存学生信息。
如果用户输入有误或者学生信息发生了变化,系统允许用户随时更新学生信息。
用户可以通过单击“编辑”按钮来更改学生的信息。
在输入新的信息后,用户可以单击“保存”按钮以保存已更改的学生信息。
如果用户需要删除一个或多个学生的信息,他们可以通过单击“删除”按钮来进行。
用户可以选择要删除的学生并单击“删除”按钮,该学生的所有信息将从系统中删除。
系统允许用户使用多种参数搜索学生信息。
例如,用户可以根据学生姓名、年龄、性别、学号等来搜索学生信息。