挺开心的 今天学的 自己写的 字节多了- //
- // 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;
-
- }
复制代码
|
|