创建一个student类表示出学号姓名出生年月系别并用toshow()输出
时间: 2024-10-19 22:17:26 浏览: 16
创建一个`Student`类来表示学生的信息,包括学号、姓名、出生年月和系别是一个常见的面向对象设计任务。下面是一个简单的Python类示例:
```python
class Student:
def __init__(self, student_id, name, birth_month_year, department):
self.student_id = student_id
self.name = name
self.birth_month_year = birth_month_year
self.department = department
def toshow(self):
"""用于输出学生信息"""
print(f"学号:{self.student_id}, 姓名:{self.name}, 出生日期:{self.birth_month_year}, 系别:{self.department}")
# 使用示例
student1 = Student(001, "张三", "1998-05-01", "计算机科学系")
student1.toshow()
```
在这个例子中,`__init__`方法是构造函数,用于初始化学生的属性;`toshow`方法用于显示学生的详细信息。你可以通过实例化`Student`类并调用`toshow`方法来查看学生数据。
相关问题
设计一个简单的学生成绩管理系统。设有学生成绩文件student.txt,每位学生成绩信息包含学号(num)、姓名(name)、性别(sex)、出生日期(birthday,包括年、月、日,分别表示为year,month,day)、3门功课的成绩(高数、C语言、大学物理)、总分和平均分。设计程序,要求从文件student.txt中读出学生成绩表,之后参对成绩表进行如下操作: (1)建立学生成绩信息结构数组(从student.txt读入数据) (2)显示。即输出出所有成绩。 (3)添加。可添加一条或多条记录。 (4)排序。分为两个方面,按学号递增排序和按总分递减排序。 (5)查找。分为三方面:按学号查找、按姓名查找和按分数查找。 (6)计算。计算各门课的平均分数。 (7)保存。退出程序前将结果保存到studeng.txt。 2)要求 (1)设计一个简单的界面 (2)每一个功能设为一个模块用c语言表述出来
以下是一个简单的学生成绩管理系统的设计:
1. 定义学生成绩信息结构体
```c
typedef struct {
int num; // 学号
char name[20]; // 姓名
char sex[4]; // 性别
int year; // 出生年份
int month; // 出生月份
int day; // 出生日期
float score_math; // 高数成绩
float score_c; // C语言成绩
float score_physics; // 大学物理成绩
float score_total; // 总分
float score_average; // 平均分
} student;
```
2. 从文件中读取学生成绩信息,存储到结构体数组中
```c
void read_file(student stu[], int *count) {
FILE *fp = fopen("student.txt", "r");
if (fp == NULL) {
printf("Cannot open file.\n");
return;
}
while (!feof(fp)) {
fscanf(fp, "%d %s %s %d %d %d %f %f %f %f %f\n",
&stu[*count].num,
stu[*count].name,
stu[*count].sex,
&stu[*count].year,
&stu[*count].month,
&stu[*count].day,
&stu[*count].score_math,
&stu[*count].score_c,
&stu[*count].score_physics,
&stu[*count].score_total,
&stu[*count].score_average);
(*count)++;
}
fclose(fp);
}
```
3. 显示所有学生成绩信息
```c
void show_all(student stu[], int count) {
printf("学号\t姓名\t性别\t出生日期\t高数\tC语言\t大学物理\t总分\t平均分\n");
for (int i = 0; i < count; i++) {
printf("%d\t%s\t%s\t%d-%d-%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",
stu[i].num,
stu[i].name,
stu[i].sex,
stu[i].year,
stu[i].month,
stu[i].day,
stu[i].score_math,
stu[i].score_c,
stu[i].score_physics,
stu[i].score_total,
stu[i].score_average);
}
}
```
4. 添加学生成绩信息
```c
void add(student stu[], int *count) {
printf("请输入学生信息:学号 姓名 性别 出生年份 出生月份 出生日期 高数成绩 C语言成绩 大学物理成绩\n");
scanf("%d %s %s %d %d %d %f %f %f",
&stu[*count].num,
stu[*count].name,
stu[*count].sex,
&stu[*count].year,
&stu[*count].month,
&stu[*count].day,
&stu[*count].score_math,
&stu[*count].score_c,
&stu[*count].score_physics);
stu[*count].score_total = stu[*count].score_math + stu[*count].score_c + stu[*count].score_physics;
stu[*count].score_average = stu[*count].score_total / 3;
(*count)++;
}
```
5. 按学号递增排序
```c
void sort_by_num(student stu[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (stu[i].num > stu[j].num) {
student tmp = stu[i];
stu[i] = stu[j];
stu[j] = tmp;
}
}
}
}
```
6. 按总分递减排序
```c
void sort_by_total(student stu[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (stu[i].score_total < stu[j].score_total) {
student tmp = stu[i];
stu[i] = stu[j];
stu[j] = tmp;
}
}
}
}
```
7. 按学号查找
```c
void search_by_num(student stu[], int count) {
int num;
printf("请输入要查找的学生学号:");
scanf("%d", &num);
for (int i = 0; i < count; i++) {
if (stu[i].num == num) {
printf("学号\t姓名\t性别\t出生日期\t高数\tC语言\t大学物理\t总分\t平均分\n");
printf("%d\t%s\t%s\t%d-%d-%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",
stu[i].num,
stu[i].name,
stu[i].sex,
stu[i].year,
stu[i].month,
stu[i].day,
stu[i].score_math,
stu[i].score_c,
stu[i].score_physics,
stu[i].score_total,
stu[i].score_average);
return;
}
}
printf("没有找到该学生。\n");
}
```
8. 按姓名查找
```c
void search_by_name(student stu[], int count) {
char name[20];
printf("请输入要查找的学生姓名:");
scanf("%s", name);
for (int i = 0; i < count; i++) {
if (strcmp(stu[i].name, name) == 0) {
printf("学号\t姓名\t性别\t出生日期\t高数\tC语言\t大学物理\t总分\t平均分\n");
printf("%d\t%s\t%s\t%d-%d-%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",
stu[i].num,
stu[i].name,
stu[i].sex,
stu[i].year,
stu[i].month,
stu[i].day,
stu[i].score_math,
stu[i].score_c,
stu[i].score_physics,
stu[i].score_total,
stu[i].score_average);
return;
}
}
printf("没有找到该学生。\n");
}
```
9. 按分数查找
```c
void search_by_score(student stu[], int count) {
float score;
printf("请输入要查找的学生成绩:");
scanf("%f", &score);
for (int i = 0; i < count; i++) {
if (stu[i].score_total == score) {
printf("学号\t姓名\t性别\t出生日期\t高数\tC语言\t大学物理\t总分\t平均分\n");
printf("%d\t%s\t%s\t%d-%d-%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",
stu[i].num,
stu[i].name,
stu[i].sex,
stu[i].year,
stu[i].month,
stu[i].day,
stu[i].score_math,
stu[i].score_c,
stu[i].score_physics,
stu[i].score_total,
stu[i].score_average);
}
}
printf("查找完成。\n");
}
```
10. 计算各门课的平均分数
```c
void calculate_average(student stu[], int count) {
float math_sum = 0, c_sum = 0, physics_sum = 0;
for (int i = 0; i < count; i++) {
math_sum += stu[i].score_math;
c_sum += stu[i].score_c;
physics_sum += stu[i].score_physics;
}
printf("高数平均分:%.1f\nC语言平均分:%.1f\n大学物理平均分:%.1f\n",
math_sum / count, c_sum / count, physics_sum / count);
}
```
11. 保存结果到文件
```c
void save_to_file(student stu[], int count) {
FILE *fp = fopen("student.txt", "w");
if (fp == NULL) {
printf("Cannot open file.\n");
return;
}
for (int i = 0; i < count; i++) {
fprintf(fp, "%d %s %s %d %d %d %.1f %.1f %.1f %.1f %.1f\n",
stu[i].num,
stu[i].name,
stu[i].sex,
stu[i].year,
stu[i].month,
stu[i].day,
stu[i].score_math,
stu[i].score_c,
stu[i].score_physics,
stu[i].score_total,
stu[i].score_average);
}
fclose(fp);
}
```
12. 程序主函数
```c
int main() {
int choice;
student stu[100];
int count = 0;
read_file(stu, &count);
while (1) {
printf("\n请选择要进行的操作:\n");
printf("1. 显示所有学生成绩信息\n");
printf("2. 添加学生成绩信息\n");
printf("3. 按学号递增排序\n");
printf("4. 按总分递减排序\n");
printf("5. 按学号查找\n");
printf("6. 按姓名查找\n");
printf("7. 按分数查找\n");
printf("8. 计算各门课的平均分数\n");
printf("9. 保存结果到文件\n");
printf("0. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
show_all(stu, count);
break;
case 2:
add(stu, &count);
break;
case 3:
sort_by_num(stu, count);
break;
case 4:
sort_by_total(stu, count);
break;
case 5:
search_by_num(stu, count);
break;
case 6:
search_by_name(stu, count);
break;
case 7:
search_by_score(stu, count);
break;
case 8:
calculate_average(stu, count);
break;
case 9:
save_to_file(stu, count);
break;
case 0:
return 0;
default:
printf("无效的选择,请重新选择。\n");
break;
}
}
return 0;
}
```
用C语言设计一个信息管理系统,比如设计一学生信息管理系统, 学生信息包括:学号,姓名,性别,出生年月,电话,英语,数学,总成绩等。使之能提供以下功能: 1) 系统以菜单方式工作 2) 学生信息录入功能(学生信息用文件保存)---输入(注意学号不能重复) 3) 学生信息浏览功能---输出 4) 修改学生信息(注意学号不能修改) 5) 根据输入英语、数学成绩,计算总成绩。 6) 按学号查询 7) 学生信息删除(根据学号为关键字) 8) 按照总成绩进行排序 9) 学生信息的删除与修改(可选项)
好的,下面是一个简单的学生信息管理系统的代码示例,包括以上所提到的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100 // 最大学生数目
#define FILENAME "student_info.txt" // 文件名
#define MAX_NAME_LEN 10 // 姓名最大长度
// 学生信息结构体
typedef struct student {
char id[10]; // 学号
char name[MAX_NAME_LEN]; // 姓名
char gender[10]; // 性别
char birth[20]; // 出生年月
char phone[20]; // 电话
int english; // 英语成绩
int math; // 数学成绩
int score; // 总成绩
} Student;
// 学生数组
Student students[MAX_STUDENT_NUM];
int student_num = 0; // 学生数目
// 显示菜单
void show_menu() {
printf("\n*********** 学生信息管理系统 ***********\n");
printf("* 1. 录入学生信息 *\n");
printf("* 2. 浏览学生信息 *\n");
printf("* 3. 修改学生信息 *\n");
printf("* 4. 计算学生成绩 *\n");
printf("* 5. 按学号查询学生信息 *\n");
printf("* 6. 删除学生信息 *\n");
printf("* 7. 按总成绩排序学生信息 *\n");
printf("* 0. 退出系统 *\n");
printf("****************************************\n");
}
// 判断学号是否已存在
int is_id_exist(char *id) {
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, id) == 0) {
return 1;
}
}
return 0;
}
// 录入学生信息
void add_student_info() {
printf("请输入学生信息:\n");
Student s;
printf("学号:");
scanf("%s", s.id);
if (is_id_exist(s.id)) {
printf("学号已存在!\n");
return;
}
printf("姓名:");
scanf("%s", s.name);
printf("性别:");
scanf("%s", s.gender);
printf("出生年月:");
scanf("%s", s.birth);
printf("电话:");
scanf("%s", s.phone);
printf("英语成绩:");
scanf("%d", &s.english);
printf("数学成绩:");
scanf("%d", &s.math);
s.score = s.english + s.math;
students[student_num++] = s;
printf("学生信息录入成功!\n");
}
// 浏览学生信息
void show_student_info() {
if (student_num == 0) {
printf("暂无学生信息!\n");
return;
}
printf("学号\t姓名\t性别\t出生年月\t电话\t英语成绩\t数学成绩\t总成绩\n");
for (int i = 0; i < student_num; i++) {
printf("%s\t%s\t%s\t%s\t%s\t%d\t\t%d\t\t%d\n",
students[i].id, students[i].name, students[i].gender, students[i].birth,
students[i].phone, students[i].english, students[i].math, students[i].score);
}
}
// 修改学生信息
void modify_student_info() {
if (student_num == 0) {
printf("暂无学生信息!\n");
return;
}
printf("请输入学生学号:");
char id[10];
scanf("%s", id);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("请输入修改后的学生信息:\n");
printf("姓名:");
scanf("%s", students[i].name);
printf("性别:");
scanf("%s", students[i].gender);
printf("出生年月:");
scanf("%s", students[i].birth);
printf("电话:");
scanf("%s", students[i].phone);
printf("英语成绩:");
scanf("%d", &students[i].english);
printf("数学成绩:");
scanf("%d", &students[i].math);
students[i].score = students[i].english + students[i].math;
printf("学生信息修改成功!\n");
return;
}
}
printf("未找到该学生信息!\n");
}
// 计算学生成绩
void calculate_score() {
if (student_num == 0) {
printf("暂无学生信息!\n");
return;
}
printf("请输入英语成绩和数学成绩:");
int english, math;
scanf("%d%d", &english, &math);
for (int i = 0; i < student_num; i++) {
if (students[i].english == english && students[i].math == math) {
printf("学号\t姓名\t性别\t出生年月\t电话\t英语成绩\t数学成绩\t总成绩\n");
printf("%s\t%s\t%s\t%s\t%s\t%d\t\t%d\t\t%d\n",
students[i].id, students[i].name, students[i].gender, students[i].birth,
students[i].phone, students[i].english, students[i].math, students[i].score);
return;
}
}
printf("未找到该学生成绩!\n");
}
// 按学号查询学生信息
void query_student_info() {
if (student_num == 0) {
printf("暂无学生信息!\n");
return;
}
printf("请输入学生学号:");
char id[10];
scanf("%s", id);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("学号\t姓名\t性别\t出生年月\t电话\t英语成绩\t数学成绩\t总成绩\n");
printf("%s\t%s\t%s\t%s\t%s\t%d\t\t%d\t\t%d\n",
students[i].id, students[i].name, students[i].gender, students[i].birth,
students[i].phone, students[i].english, students[i].math, students[i].score);
return;
}
}
printf("未找到该学生信息!\n");
}
// 删除学生信息
void delete_student_info() {
if (student_num == 0) {
printf("暂无学生信息!\n");
return;
}
printf("请输入学生学号:");
char id[10];
scanf("%s", id);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, id) == 0) {
for (int j = i; j < student_num - 1; j++) {
students[j] = students[j + 1];
}
student_num--;
printf("学生信息删除成功!\n");
return;
}
}
printf("未找到该学生信息!\n");
}
// 按总成绩排序学生信息
void sort_student_info() {
if (student_num == 0) {
printf("暂无学生信息!\n");
return;
}
for (int i = 0; i < student_num - 1; i++) {
for (int j = 0; j < student_num - 1 - i; j++) {
if (students[j].score < students[j + 1].score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("学号\t姓名\t性别\t出生年月\t电话\t英语成绩\t数学成绩\t总成绩\n");
for (int i = 0; i < student_num; i++) {
printf("%s\t%s\t%s\t%s\t%s\t%d\t\t%d\t\t%d\n",
students[i].id, students[i].name, students[i].gender, students[i].birth,
students[i].phone, students[i].english, students[i].math, students[i].score);
}
}
// 保存学生信息到文件
void save_student_info_to_file() {
FILE *fp = fopen(FILENAME, "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
for (int i = 0; i < student_num; i++) {
fprintf(fp, "%s,%s,%s,%s,%s,%d,%d,%d\n",
students[i].id, students[i].name, students[i].gender, students[i].birth,
students[i].phone, students[i].english, students[i].math, students[i].score);
}
fclose(fp);
}
// 从文件中读取学生信息
void load_student_info_from_file() {
FILE *fp = fopen(FILENAME, "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
char buf[1024];
while (fgets(buf, sizeof(buf), fp) != NULL) {
Student s;
sscanf(buf, "%[^,],%[^,],%[^,],%[^,],%[^,],%d,%d,%d",
s.id, s.name, s.gender, s.birth, s.phone, &s.english, &s.math, &s.score);
students[student_num++] = s;
}
fclose(fp);
}
int main() {
load_student_info_from_file(); // 从文件中读取学生信息
int choice = -1;
while (choice != 0) {
show_menu();
printf("请输入功能编号:");
scanf("%d", &choice);
switch (choice) {
case 1: // 录入学生信息
add_student_info();
break;
case 2: // 浏览学生信息
show_student_info();
break;
case 3: // 修改学生信息
modify_student_info();
break;
case 4: // 计算学生成绩
calculate_score();
break;
case 5: // 按学号查询学生信息
query_student_info();
break;
case 6: // 删除学生信息
delete_student_info();
break;
case 7: // 按总成绩排序学生信息
sort_student_info();
break;
case 0: // 退出系统
save_student_info_to_file(); // 保存学生信息到文件
printf("感谢使用学生信息管理系统!\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
注:该示例代码仅供参考,实际开发中可能需要增加一些错误处理和界面美化等功能。
阅读全文