今天给各位分享定义包含一个学生信息的知识,其中也会对编写一个学生类,学生信息包括进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
需要存储什么信息,能不能把所要存储的信息清楚的说出来。这样在定义结构体的时候可以确定。
#include
"stdio.h"
int
main()
{
struct
{
char
name[10];//名字
int
num;//学号
char
sex[2];//性别
int
age;//年龄
}student[10];
//printf("%d",sizeof(wchar_t));
int
i;
for(i=0;i10;i++)
{
printf("请输入第%d个学生的信息:名字,学号,性别和年龄:\n",i+1);
scanf("%s%d%s%d",student[i].name,student[i].num,student[i].sex,student[i].age);
}
printf("十个学生的信息如下:\n");
for(i=0;i10;i++)
{
printf("姓名:%s\t学号:%d\t性别:%s\t年龄:%d\n",student[i].name,student[i].num,student[i].sex,student[i].age);
}
return
0;
}
花了不少时间写的,挺详细的,希望采纳。
# 引入operator模块,用于给集合排序
import operator
# 单行注释用"#",多行注释用 '''注释内容'''
# 定义一个学生类,类名用驼峰命名法
class Student:
# 构造方法,可用来创建对象格式 def __init__(self,参数) 参数个数自已定义,类型系统自动识别
def __init__(self, stu_no, name, base_score, exam_score):
self.stu_no = stu_no # 对象属性赋值
self.name = name
self.base_score = base_score
self.exam_score = exam_score
# 定义计算总评函数 定义函数格式 def 函数名(self, 参数),self代表本对象
def get_last_score(self):
# return指定返回值,无return表示此函数无返回值
return self.base_score * 0.3 + self.exam_score * 0.7
# 类似toString方法,打印对象时,调用对象的该方法
def __str__(self):
return '学号:' + self.stu_no + '姓名:' + self.name + ",平时成绩: " + str(self.base_score) + ",考核成绩:" + str(self.exam_score)
# 定义函数,将对象集合写到文件,上面三个函数有缩进,属于Student类的函数,本函数属于全局函数
def print_to_file(path, stu_arr):
# 打开文件,操作完成后自动关闭文件
with open(path, 'w') as file:
# 调用operator给集合排序
sort_attr = operator.attrgetter('stu_no') # 指定排序属性
stu_arr.sort(key=sort_attr) # 排序
for stu in stu_list:
str = stu.__str__() # 将对象转换为字符串
file.write(str + '\r\n') # 将字符串写入文件
# 主函数,运行的入口
if __name__ == '__main__':
# 创建几个学生对象,按__init__的顺序输入参数
s1 = Student('1001', 'zhangsan', 31, 69)
s2 = Student('1003', 'wangwu', 28, 32)
s3 = Student('1004', 'zhaoliu', 77, 78)
s4 = Student('1002', 'lisi', 19, 89)
# 创建集合
stu_list = [s1, s2, s3, s4]
# 文件路径
f = 'd:\\aaa.txt'
print_to_file(f, stu_list)
#include"stdio.h"
#define SIZE 5
struct stu
{
char name[10];
int no;
int age;
char add[10];
}stu[SIZE];
void readdat();
void writedat();
void change();
main()
{
char k;
printf(" 欢迎进入学生信息管理系统\n");
printf("\n\n 1.学生信息输入系统 ");
printf(" 2.学生信息查询系统\n");
printf(" 3.学生信息修改系统\n\n\n");
began:
printf("\n\n请输入选项:");
scanf("%d",k);
switch(k)
{
case 1: writedat(); break;
case 2: readdat(); break;
case 3: change(); break;
default: goto began;
}
goto began;
while(1);
}
void writedat()
{
FILE *fp;
char i;
printf("\n\n请输入学生的姓名、学号、年龄和地址:\n");
for(i=0;iSIZE;i++)
{
printf("输入%d号学生信息:",i+1);
scanf("%s %d %d %s",stu[i].name,stu[i].no,stu[i].age,stu[i].add);
}
if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;iSIZE;i++)
{
if(fwrite(stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}
fclose(fp);
}
void readdat()
{
FILE *fp;
int i,k,kk;
jixu:
printf("查询全部请输入0,查询单个请输入1:");
scanf("%d",k);
if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
if(k==0)
{
printf("编号 姓名 学号 年龄 地址\n");
for(i=0;iSIZE;i++)
{
if(fread(stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",i+1,stu[i].name,stu[i].no,stu[i].age,stu[i].add);
}
}
else if(k==1)
{
printf("请输入学生的编号:");
scanf("%d",kk);
printf("编号 姓名 学号 年龄 地址\n");
if(fread(stu[kk-1],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);
}
else
{
printf("输入错误!");
goto jixu;
}
fclose(fp);
}
void change()
{
FILE *fp;
char i,kk;
while(1)
{
printf("请输入修改信息学生的编号(0退出):");
scanf("%d",kk);
if(kk==0)
return;
printf("编号 姓名 学号 年龄 地址\n");
if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
for(i=0;iSIZE;i++)
if(fread(stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);
printf("请输入学生的姓名、学号、年龄和地址:\n");
scanf("%s %d %d %s",stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);
if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;iSIZE;i++)
{
if(fwrite(stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}
fclose(fp);
}
}
代码如下:
#include stdio.h
#include stdlib.h
#include memory.h
#define MAX 50
typedef struct {
char stuId[10];
char name[20];
int score;
}Student;
void input(Student students[MAX], int n)
{
int i;
for (i = 0; i n; i++) {
scanf("%s", students[i].stuId);
scanf("%s", students[i].name);
scanf("%d", students[i].score);
}
}
void sort(Student students[MAX], int n)
{
int i, j;
Student temp;
for (i = 0; i n - 1; i++) {
for (j = 0; j n - i - 1; j++) {
if (students[j].score students[j + 1].score) {
memcpy(temp, students[j], sizeof(Student));
memcpy(students[j], students[j + 1], sizeof(Student));
memcpy(students[j + 1], temp, sizeof(Student));
}
}
}
}
void print(Student students[MAX], int n)
{
int i;
for (i = 0; i n; i++) {
printf("%s %s %d\n", students[i].stuId, students[i].name, students[i].score);
}
}
int main()
{
Student students[MAX];
int n;
scanf("%d", n);
input(students, n);
sort(students, n);
printf("输出:\n");
print(students, n);
system("pause");
return 0;
}
运行结果:
定义包含一个学生信息的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于编写一个学生类,学生信息包括、定义包含一个学生信息的信息别忘了在本站进行查找喔。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签: #定义包含一个学生信息
相关文章