学生管理系统(初级)
结构体
typedef struct student
{
int id;
char name[ 20 ] ;
int age;
char sex[ 10 ] ;
double grade;
} student;
主函数
int main ( int argc, const char * argv[ ] )
{
int id, age, choice;
char name[ 20 ] , sex[ 10 ] ;
double grade;
while ( 1 ) {
printf ( "------学生管理系统------\n" ) ;
printf ( "1. 添加学生信息\n" ) ;
printf ( "2. 删除学生信息\n" ) ;
printf ( "3. 修改学生信息\n" ) ;
printf ( "4. 查询学生信息\n" ) ;
printf ( "5. 显示所有学生信息\n" ) ;
printf ( "6. 退出\n" ) ;
printf ( "请输入你的选择: " ) ;
scanf ( "%d" , & choice) ;
switch ( choice) {
case 1 :
printf ( "输入学生ID: " ) ;
scanf ( "%d" , & id) ;
printf ( "输入学生姓名: " ) ;
scanf ( "%s" , name) ;
printf ( "输入学生年龄: " ) ;
scanf ( "%d" , & age) ;
printf ( "输入学生性别: " ) ;
scanf ( "%s" , sex) ;
printf ( "输入学生成绩: " ) ;
scanf ( "%lf" , & grade) ;
addStudent ( id, name, age, sex, grade) ;
break ;
case 2 :
printf ( "输入要删除的学生ID: " ) ;
scanf ( "%d" , & id) ;
deleteStudent ( id) ;
break ;
case 3 :
printf ( "输入要修改的学生ID: " ) ;
scanf ( "%d" , & id) ;
printf ( "输入姓名: " ) ;
scanf ( "%s" , name) ;
printf ( "输入年龄: " ) ;
scanf ( "%d" , & age) ;
printf ( "输入性别: " ) ;
scanf ( "%s" , sex) ;
printf ( "输入成绩: " ) ;
scanf ( "%lf" , & grade) ;
updateStudent ( id, name, age, sex, grade) ;
break ;
case 4 :
printf ( "输入要查询的学生ID: " ) ;
scanf ( "%d" , & id) ;
queryStudent ( id) ;
break ;
case 5 :
showAllStudents ( ) ;
break ;
case 6 :
return 0 ;
default :
printf ( "无效选择,请重新输入!\n" ) ;
}
}
return 0 ;
}
添加学生信息
void addStudent ( int id, char name[ 20 ] , int age, char sex[ 10 ] , double grade) {
if ( stu_count < MAX) {
for ( int i= 0 ; i<= stu_count; i++ ) {
if ( stu[ i] . id == id) {
printf ( "Id重复,请重新选择\n" ) ;
return ;
}
}
stu[ stu_count] . id = id;
strcpy ( stu[ stu_count] . name, name) ;
stu[ stu_count] . age = age;
strcpy ( stu[ stu_count] . sex, sex) ;
stu[ stu_count] . grade = grade;
stu_count++ ;
printf ( "学生添加成功!\n" ) ;
} else {
printf ( "学生数量已满,无法再添加学生!" ) ;
}
}
删除学生信息
void deleteStudent ( int id) {
int found = 0 ;
for ( int i= 0 ; i< stu_count; i++ ) {
if ( stu[ i] . id == id) {
found = 1 ;
for ( int j= i; j< stu_count; j++ ) {
stu[ j] = stu[ j+ 1 ] ;
}
stu_count-- ;
printf ( "学生信息删除成功!\n" ) ;
break ;
}
}
if ( found != 1 ) {
printf ( "未找到id为%d的学生!\n" , id) ;
}
}
修改学生信息
void updateStudent ( int id, char name[ 20 ] , int age, char sex[ 10 ] , double grade) {
int found = 0 ;
for ( int i= 0 ; i< stu_count; i++ ) {
if ( stu[ i] . id == id) {
found = 1 ;
stu[ i] . id = id;
strcpy ( stu[ i] . name, name) ;
stu[ i] . age = age;
strcpy ( stu[ i] . sex, sex) ;
stu[ i] . grade = grade;
printf ( "学生数据修改成功!\n" ) ;
break ;
}
}
if ( found != 1 ) {
printf ( "未找到id为%d的学生!\n" , id) ;
}
}
查询学生信息
void queryStudent ( int id) {
int found = 0 ;
for ( int i= 0 ; i< stu_count; i++ ) {
if ( stu[ i] . id == id) {
found = 1 ;
printf ( "Id为%d的学生信息:\n" , stu[ i] . id) ;
printf ( "\t\t姓名:%s\n" , stu[ i] . name) ;
printf ( "\t\t年龄:%d\n" , stu[ i] . age) ;
printf ( "\t\t性别:%s\n" , stu[ i] . sex) ;
printf ( "\t\t总分:%.2lf\n" , stu[ i] . grade) ;
break ;
}
}
if ( found != 1 ) {
printf ( "未找到id为%d的学生!\n" , id) ;
}
}
查询全部学生信息
void showAllStudents ( ) {
if ( stu_count == 0 ) {
printf ( "没有学生信息!\n" ) ;
} else {
for ( int i = 0 ; i < stu_count; i++ ) {
printf ( "ID: %d\n 姓名: %s\n 年龄: %d\n 性别: %s\n 成绩: %.2f\n" , stu[ i] . id, stu[ i] . name, stu[ i] . age, stu[ i] . sex, stu[ i] . grade) ;
}
}
}
完成代码
# include <stdio.h>
# include <string.h>
# define MAX 100
typedef struct student
{
int id;
char name[ 20 ] ;
int age;
char sex[ 10 ] ;
double grade;
} student;
student stu[ MAX] ;
int stu_count = 0 ;
void addStudent ( int id, char name[ 20 ] , int age, char sex[ 10 ] , double grade) {
if ( stu_count < MAX) {
for ( int i= 0 ; i<= stu_count; i++ ) {
if ( stu[ i] . id == id) {
printf ( "Id重复,请重新选择\n" ) ;
return ;
}
}
stu[ stu_count] . id = id;
strcpy ( stu[ stu_count] . name, name) ;
stu[ stu_count] . age = age;
strcpy ( stu[ stu_count] . sex, sex) ;
stu[ stu_count] . grade = grade;
stu_count++ ;
printf ( "学生信息添加成功!\n" ) ;
} else {
printf ( "学生数量已满,无法再添加学生!" ) ;
}
}
void updateStudent ( int id, char name[ 20 ] , int age, char sex[ 10 ] , double grade) {
int found = 0 ;
for ( int i= 0 ; i< stu_count; i++ ) {
if ( stu[ i] . id == id) {
found = 1 ;
stu[ i] . id = id;
strcpy ( stu[ i] . name, name) ;
stu[ i] . age = age;
strcpy ( stu[ i] . sex, sex) ;
stu[ i] . grade = grade;
printf ( "学生信息修改成功!\n" ) ;
break ;
}
}
if ( found != 1 ) {
printf ( "未找到id为%d的学生!\n" , id) ;
}
}
void deleteStudent ( int id) {
int found = 0 ;
for ( int i= 0 ; i< stu_count; i++ ) {
if ( stu[ i] . id == id) {
found = 1 ;
for ( int j= i; j< stu_count; j++ ) {
stu[ j] = stu[ j+ 1 ] ;
}
stu_count-- ;
printf ( "学生信息删除成功!\n" ) ;
break ;
}
}
if ( found != 1 ) {
printf ( "未找到id为%d的学生!\n" , id) ;
}
}
void queryStudent ( int id) {
int found = 0 ;
for ( int i= 0 ; i< stu_count; i++ ) {
if ( stu[ i] . id == id) {
found = 1 ;
printf ( "Id为%d的学生信息:\n" , stu[ i] . id) ;
printf ( "\t\t姓名:%s\n" , stu[ i] . name) ;
printf ( "\t\t年龄:%d\n" , stu[ i] . age) ;
printf ( "\t\t性别:%s\n" , stu[ i] . sex) ;
printf ( "\t\t总分:%.2lf\n" , stu[ i] . grade) ;
break ;
}
}
if ( found != 1 ) {
printf ( "未找到id为%d的学生!\n" , id) ;
}
}
void showAllStudents ( ) {
if ( stu_count == 0 ) {
printf ( "没有学生信息!\n" ) ;
} else {
for ( int i = 0 ; i < stu_count; i++ ) {
printf ( "ID: %d\n 姓名: %s\n 年龄: %d\n 性别: %s\n 成绩: %.2f\n" , stu[ i] . id, stu[ i] . name, stu[ i] . age, stu[ i] . sex, stu[ i] . grade) ;
}
}
} int main ( int argc, const char * argv[ ] )
{
int id, age, choice;
char name[ 20 ] , sex[ 10 ] ;
double grade;
while ( 1 ) {
printf ( "------学生管理系统------\n" ) ;
printf ( "1. 添加学生信息\n" ) ;
printf ( "2. 删除学生信息\n" ) ;
printf ( "3. 修改学生信息\n" ) ;
printf ( "4. 查询学生信息\n" ) ;
printf ( "5. 显示所有学生信息\n" ) ;
printf ( "6. 退出\n" ) ;
printf ( "请输入你的选择: " ) ;
scanf ( "%d" , & choice) ;
switch ( choice) {
case 1 :
printf ( "输入学生ID: " ) ;
scanf ( "%d" , & id) ;
printf ( "输入学生姓名: " ) ;
scanf ( "%s" , name) ;
printf ( "输入学生年龄: " ) ;
scanf ( "%d" , & age) ;
printf ( "输入学生性别: " ) ;
scanf ( "%s" , sex) ;
printf ( "输入学生成绩: " ) ;
scanf ( "%lf" , & grade) ;
addStudent ( id, name, age, sex, grade) ;
break ;
case 2 :
printf ( "输入要删除的学生ID: " ) ;
scanf ( "%d" , & id) ;
deleteStudent ( id) ;
break ;
case 3 :
printf ( "输入要修改的学生ID: " ) ;
scanf ( "%d" , & id) ;
printf ( "输入姓名: " ) ;
scanf ( "%s" , name) ;
printf ( "输入年龄: " ) ;
scanf ( "%d" , & age) ;
printf ( "输入性别: " ) ;
scanf ( "%s" , sex) ;
printf ( "输入成绩: " ) ;
scanf ( "%lf" , & grade) ;
updateStudent ( id, name, age, sex, grade) ;
break ;
case 4 :
printf ( "输入要查询的学生ID: " ) ;
scanf ( "%d" , & id) ;
queryStudent ( id) ;
break ;
case 5 :
showAllStudents ( ) ;
break ;
case 6 :
return 0 ;
default :
printf ( "无效选择,请重新输入!\n" ) ;
}
}
return 0 ;
}
运行效果
添加学生信息
查询学生信息
查询全部学生信息
修改学生信息
删除学生信息