黑马程序员技术交流社区
标题:
学生管理系统
[打印本页]
作者:
muyan091115
时间:
2016-5-21 23:16
标题:
学生管理系统
挺开心的 今天学的 自己写的 字节多了
//
// main.c
// StudentsSystem
//
// Created by 蒋伟 on 16/5/21.
// Copyright (c) 2016年 蒋伟. All rights reserved.
//
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LENGTH 20
/**
定义枚举类型性别
*/
typedef enum {
GenderMale,
GenderFamale
} Gender;
/**
* 定义学生结构体类型
*/
typedef struct {
int id;
char * name;
Gender gender;
int age;
int score;
} Student;
/**
* 初始化学生信息数组
*/
Student students[LENGTH] =
{
{1,"xiaoMing",GenderMale,18,100},
{2,"xiaoHong",GenderFamale,16,97},
{3,"xiaoQiang",GenderMale,25,59},
{4,"xiaoHuan",GenderFamale,17,99},
{5,"xiaoHuang",GenderFamale,26,72},
{6,"xiaoQing",GenderFamale,23,86},
{7,"xiaoFang",GenderMale,32,23},
{8,"xiaoWang",GenderFamale,24,98},
{9,"xiaoJiang",GenderMale,23,100},
{10,"xiaoLian",GenderMale,35,16},
};
/**
* 代表学生个数的真实长度
*/
int realLength = 10;
/**
* 打印主菜单并接受用户下一步操作
*
* @return 用户的下一步操作
*/
int showMenu();
/**
* 查询学生信息
*/
void query();
/**
* 增加学生信息
*/
void addStudent();
/**
* 删除学生信息
*/
void deleteStudent();
/**
* 修改学生信息
*/
void modifyStudent();
/**
* 打印查询菜单并接受用户下一步操作
*
* @return 用户下一步操作
*/
int showQueryMenu();
/**
* 查询所有学生信息
*/
void queryAll();
/**
* 根据学生编号查询
*/
void queryById();
/**
* 根据学生姓名查询
*/
void queryByName();
/**
* 根据学生性别查询
*/
void queryByGender();
/**
* 根据学生年龄查询
*/
void queryByAge();
/**
* 根据学生信息查询
*/
void queryByScore();
int main(int argc, const char * argv[]) {
while(1){
int userSelect = showMenu();
printf("\n");
switch(userSelect){
case 1:
query();
break;
case 2:
addStudent();
break;
case 3:
deleteStudent();
break;
case 4:
modifyStudent();
break;
case 5:
printf("谢谢使用!\n");
return 0;
default:
printf("输入有误,请重新输入!\n\n");
}
}
}
/**
* 打印主菜单并接受用户下一步操作
*
* @return 用户的下一步操作
*/
int showMenu(){
printf("**********************\n");
printf("* 欢迎使用学生管理系统 *\n");
printf("* 1 查询学生 *\n");
printf("* 2 增加学生 *\n");
printf("* 3 删除学生 *\n");
printf("* 4 修改学生 *\n");
printf("* 5 退出系统 *\n");
printf("**********************\n");
int userSelect = 0;
printf("请输入菜单的编号:");
scanf("%d",&userSelect);
return userSelect;
}
/**
* 查询学生信息
*/
void query(){
while(1){
int userSelect = showQueryMenu();
switch(userSelect){
case 1:
queryAll();
return;
case 2:
queryById();
return;
case 3:
queryByName();
return;
case 4:
queryByGender();
return;
case 5:
queryByAge();
return;
case 6:
queryByScore();
return;
case 7:
return;
default:
printf("输入错误,请重新输入!");
}
}
}
/**
* 增加学生信息
*/
void addStudent(){
Student stu;
stu.id = students[realLength-1].id + 1;
char name1[10];
printf("\n请输入添加学生的姓名:");
rewind(stdin);
fgets(name1,10,stdin);
size_t len = strlen(name1);
if(name1[len - 1] == '\n'){
name1[len - 1] = '\0';
}
char *name = calloc(len+1,1);
strcpy(name,name1);
stu.name = name;
printf("请输入添加学生的性别(0->男,1->女:)");
scanf("%d",&stu.gender);
printf("请输入添加学生的年龄:");
scanf("%d",&stu.age);
printf("请输入添加学生的分数:");
scanf("%d",&stu.score);
if(realLength >=20){
printf("已经添加不进去了!");
return;
}
students[realLength] = stu;
printf("\n添加成功!信息如下:\n");
printf("\n编号 姓名 性别 年龄 成绩\n");
printf("%d\t\t\t%s\t\t\t%s\t\t%d\t\t%d\n",
students[realLength].id,
students[realLength].name,
students[realLength].gender?"女":"男",
students[realLength].age,
students[realLength].score);
realLength++;
printf("\n");
}
/**
* 删除学生信息
*/
void deleteStudent(){
printf("请输入您需要删除的学生的学号:");
int id;
scanf("%d",&id);
int index = -1;
for(int i = 0; i < realLength; i++){
if(students[i].id == id){
index = i;
}
}
if(index == -1){
printf("\n没有学号为%d的学生!无法删除!\n\n",id);
}else{
for(int i = index; i < realLength - 1; i++){
students[i] = students[i+1];
}
realLength -- ;
printf("\n删除成功!\n\n");
}
}
/**
* 修改学生信息
*/
void modifyStudent(){
printf("请输入您需要修改的学生的学号:");
int id;
scanf("%d",&id);
int index = -1;
for(int i = 0; i < realLength; i++){
if(students[i].id == id){
index = i;
}
}
if(index == -1){
printf("\n没有学号为%d的学生!无法修改!\n\n",id);
}else{
while(1){
int userSelect;
printf("\n请输入需要修改的信息:1,姓名 2,性别 3,年龄 4,分数:");
scanf("%d",&userSelect);
switch(userSelect){
case 1:{
char name1[10];
printf("\n请输入新的姓名:");
rewind(stdin);
fgets(name1,10,stdin);
size_t len = strlen(name1);
if(name1[len - 1] == '\n'){
name1[len - 1] = '\0';
}
char *name = calloc(len+1,1);
strcpy(name,name1);
students[index].name = name;
printf("\n修改成功!\n\n");
return;
}
case 2:{
Gender newGender;
printf("\n请输入新的性别:");
scanf("%d",&newGender);
students[index].gender = newGender;
printf("\n修改成功!\n\n");
return;
}
case 3:{
int newAge;
printf("\n请输入新的年龄:");
scanf("%d",&newAge);
students[index].age = newAge;
printf("\n修改成功!\n\n");
return;
}
case 4:{
int newScore;
printf("\n请输入新的分数:");
scanf("%d",&newScore);
students[index].score = newScore;
printf("\n修改成功!\n\n");
return;
}
default:
printf("输入有误!");
}
}
}
}
/**
* 打印查询菜单并接受用户下一步操作
*
* @return 用户下一步操作
*/
int showQueryMenu(){
printf("**********************\n");
printf("* 1 查询所有学生 *\n");
printf("* 2 根据学号查询 *\n");
printf("* 3 根据姓名查询 *\n");
printf("* 4 根据性别查询 *\n");
printf("* 5 根据年龄查询 *\n");
printf("* 6 根据成绩查询 *\n");
printf("* 7 返回主菜单 *\n");
printf("**********************\n");
int userSelect = 0;
printf("请输入菜单的编号:");
scanf("%d",&userSelect);
return userSelect;
}
复制代码
作者:
muyan091115
时间:
2016-5-21 23:17
/**
* 查询所有学生信息
*/
void queryAll(){
printf("\n编号 姓名 性别 年龄 成绩\n");
for(int i = 0; i < realLength; i++){
printf("%d\t\t\t%s\t\t\t%s\t\t%d\t\t%d\n",
students[i].id,
students[i].name,
students[i].gender?"女":"男",
students[i].age,
students[i].score
);
}
printf("\n");
}
/**
* 根据学生编号查询
*/
void queryById(){
printf("\n请输入需要查询的学生的Id:");
int id = 0;
scanf("%d",&id);
int index = -1;
for(int i = 0; i < realLength; i++){
if(students[i].id == id){
index = i;
}
}
if(index == -1){
printf("\n没有学号为%d的学生!\n\n",id);
}else{
printf("\n编号 姓名 性别 年龄 成绩\n");
printf("%d\t\t\t%s\t\t\t%s\t\t%d\t\t%d\n",
students[index].id,
students[index].name,
students[index].gender?"女":"男",
students[index].age,
students[index].score);
printf("\n");
}
}
/**
* 根据学生姓名查询
*/
void queryByName(){
printf("\n请输入需要查询的学生的姓名:");
char name[10];
rewind(stdin);
fgets(name,10,stdin);
size_t len = strlen(name);
if(name[len - 1] == '\n'){
name[len - 1] = '\0';
}
int index = -1;
for(int i = 0; i < realLength; i++){
if(strcmp(students[i].name,name) == 0){
index = i;
}
}
if(index == -1){
printf("\n没有性别为%s的学生!\n\n",name);
}else{
printf("\n编号 姓名 性别 年龄 成绩\n");
printf("%d\t\t\t%s\t\t\t%s\t\t%d\t\t%d\n",
students[index].id,
students[index].name,
students[index].gender?"女":"男",
students[index].age,
students[index].score);
printf("\n");
}
}
/**
* 根据学生性别查询
*/
void queryByGender(){
printf("\n请输入需要查询的学生的性别\n");
printf("0->男,1->女:");
int gender = 0;
scanf("%d",&gender);
int index = -1;
for(int i = 0; i < realLength; i++){
if(students[i].gender == gender){
index = i;
}
}
if(index == -1){
printf("\n没有性别为%d的学生!\n\n",gender);
}else{
printf("\n编号 姓名 性别 年龄 成绩\n");
for(int i = 0; i < realLength; i++){
if(students[i].gender == gender){
printf("%d\t\t\t%s\t\t\t%s\t\t%d\t\t%d\n",
students[i].id,
students[i].name,
students[i].gender?"女":"男",
students[i].age,
students[i].score
);
}
}
printf("\n");
}
}
/**
* 根据学生年龄查询
*/
void queryByAge(){
int min = 0, max = 0;
printf("\n请输入需要查询的学生的年龄段(xx-xx):\n");
scanf("%d-%d",&min, &max);
int index = -1;
for(int i = 0; i < realLength; i++){
if(students[i].age >= min && students[i].age <= max ){
index = i;
}
}
if(index == -1){
printf("\n没有年龄在%d-%d之间的学生!\n\n",min,max);
}else{
printf("\n编号 姓名 性别 年龄 成绩\n");
for(int i = 0; i < realLength; i++){
if(students[i].age >= min && students[i].age <= max){
printf("%d\t\t\t%s\t\t\t%s\t\t%d\t\t%d\n",
students[i].id,
students[i].name,
students[i].gender?"女":"男",
students[i].age,
students[i].score
);
}
}
printf("\n");
}
}
/**
* 根据学生成绩查询
*/
void queryByScore(){
int min = 0, max = 0;
printf("\n请输入需要查询的学生的分数段(xx-xx):\n");
scanf("%d-%d",&min, &max);
int index = -1;
for(int i = 0; i < realLength; i++){
if(students[i].score >= min && students[i].score <= max){
index = i;
}
}
if(index == -1){
printf("\n没有分数在%d-%d之间的学生!\n\n",min,max);
}else{
printf("\n编号 姓名 性别 年龄 成绩\n");
for(int i = 0; i < realLength; i++){
if(students[i].score >= min && students[i].score <= max){
printf("%d\t\t\t%s\t\t\t%s\t\t%d\t\t%d\n",
students[i].id,
students[i].name,
students[i].gender?"女":"男",
students[i].age,
students[i].score
);
}
}
printf("\n");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2