问题描述:
/* * Copyright (c)2015,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:aaaa.cbp * 作 者:张芸嘉 * 完成日期:2015年12月24日 * 版 本 号:v1.0 * 问题描述: 本项目为学生信息管理系统,设计一个可以管理学生信息的软件系统。 * 输入描述:学生信息 * 程序输出: */架构:
代码:
头文件 list.h
/*********************************************************** * 版权所有 (C)2015, 张芸嘉 * * 文件名称:xxxxgl.cbp * 文件标识:无 * 内容摘要:学生信息管理系统 * 其它说明:无 * 当前版本: V2.0 * 作 者:张芸嘉 * 完成日期: 20151224 * * 修改记录1: * 修改日期: 20151222 * 版本号: V1.0 * 修改人: 张芸嘉 * 修改内容:创建 * * 修改记录2: * 修改日期: 20151223 * 版本号: V1.1 * 修改人: 张芸嘉 * 修改内容:各模块建立1 * * 修改记录3: * 修改日期: 20151224 * 版本号: V1.2 * 修改人:张芸嘉 * 修改内容:各模块建立2 * * 修改记录4: * 修改日期: 20151224 * 版本号: V2.0 * 修改人: 张芸嘉 * 修改内容:完善 **********************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #define STUDENT 2 typedef struct student { int num; //学号 char name[20]; //姓名 int chinese ; //语文成绩 int English; //英语成绩 int math; //高数成绩 struct student *next; //指向下一个学生的指针 } student; extern student *head; extern int length; //链表的长度 //函数原型 student *init(); //初始化函数 void create(); //创建信息 void display(); //显示函数 void searchXH(); //按学号查找信息 void searchXM(); //按姓名查找信息 void insert(); //插入信息 void Delete(); //删除信息 void menu(); //主菜单函数
/*********************************************************** * 功能描述: 主函数 * 输入参数: * 输出参数: * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、性别、高数成绩、英语成绩 ************************************************************/ #include"list.h" int main(void) { system("color 1"); int a; menu(); int choice; while(1) { printf("请选择您需要的功能:"); scanf("%d",&a); switch(a) { case 0: return 0; case 1: create(); menu(); break; case 2: if(head) { display(); menu(); } else { printf("学生信息为空,请先建立学生信息!\n"); menu(); } break; case 3: if(head) { printf("请选择按学号查找或按姓名查找,若是按学号查找请输入0,按姓名查找请按1\n"); scanf("%d",&choice); if(choice==0) { searchXH(); } else { searchXM(); } menu(); } else { printf("学生信息为空,请先建立学生信息!\n"); menu(); } break; case 4: if(head) { Delete(); menu(); } else { printf("学生信息为空,请先建立学生信息!\n"); menu(); } break; case 5: if(head) { insert(); menu(); } else { printf("学生信息为空,请先建立学生信息!\n"); menu(); } break; default: break; } } system("pause"); return 0; }源文件函数 list.cpp
#include"list.h" int length; student *head; student *init() { return NULL; //返回空指针 } /*********************************************************** * 功能描述: 添加学生信息 * 输入参数: 学生信息 * 输出参数: 显示学生的信息 * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、语文成绩、高数成绩、英语成绩 ************************************************************/ void create() { student *p1,*p2; length=0; int number=0; p1=(student *)malloc(sizeof(student)); p1->num=-1; if(head==NULL) head=p1; printf("请输入学生的学号、姓名、语文成绩、高数成绩、英语成绩:\n"); while(number<=7) { p2=(student *)malloc(sizeof(student)); scanf("%d %s %d %d %d",&p2->num,p2->name,&p2->chinese,&p2->English,&p2->math); //输入学生信息 if(p2->num==0) { printf("学生信息建立完成!\n"); break; } length++; //链表的长度 p1->next=p2; p2->next=NULL; p1=p1->next; //移动指针,指向下一结点 number++; } return ; } /*********************************************************** * 功能描述: 显示学生信息 * 输入参数: * 输出参数: 显示学生的信息 * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、语文成绩、高数成绩、英语成绩 ************************************************************/ void display() { student *p=head->next; printf("链表中所有的学生信息如下:\n"); while(p!=NULL) { printf("%d %s %d %d %d\n",p->num,p->name,p->chinese,p->English,p->math); p=p->next; } return ; } /*********************************************************** * 功能描述: 按学号查找学生信息 * 输入参数: 学生学号 * 输出参数: 显示学生的信息 * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、语文成绩、高数成绩、英语成绩 ************************************************************/ void searchXH() { int num_; student *p=head->next; printf("需要查找的学生学号为:"); scanf("%d",&num_); while(p!=NULL) { if(p->num==num_) { printf("学号为%d的学生的信息如下:\n",num_); printf("%d %s %d %d %d\n",p->num,p->name,p->chinese,p->English,p->math); return; } p=p->next; } if(p==NULL) printf("无此记录!\n"); return ; } /*********************************************************** * 功能描述: 按姓名查找学生信息 * 输入参数: 学生姓名 * 输出参数: 显示学生的信息 * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、语文成绩、高数成绩、英语成绩 ************************************************************/ void searchXM() { char na_me[20]; student *p=head->next; printf("需要查找的学生姓名为:"); scanf("%s",na_me); while(p!=NULL) { if(!(strcmp(p->name,na_me))) { printf("姓名为%s的学生的信息如下:\n",na_me); printf("%d %s %d %d %d\n",p->num,p->name,p->chinese,p->English,p->math); return; } p=p->next; } if(p==NULL) printf("无此记录!\n"); return ; } /*********************************************************** * 功能描述: 指定位置插入学生信息 * 输入参数: 插入位置及学生信息 * 输出参数: 显示插入完成后的学生信息 * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、语文成绩、高数成绩、英语成绩 ************************************************************/ void insert() { int num_,i; student *p,*q; p=head; printf("请输入你要插入位置: "); scanf("%d",&num_); if(num_>length) { printf("找不到要插入的位置\n"); return ; } else { printf("请输入你要插入的学生的学号、姓名、语文成绩、英语成绩、高数成绩:\n"); q=(student *)malloc(sizeof(student)); scanf("%d %s %d %d %d",&q->num,q->name,&q->chinese,&q->English,&q->math); while(p!=NULL) { if(p->num==q->num) { printf("该学号已经存在,无法插入信息!\n"); return ; } p=p->next; } p=head; for(i=0; i<num_; i++) p=p->next; q->next=p->next; p->next=q; length++; printf("插入学生信息成功!\n"); return ; } } /*********************************************************** * 功能描述: 删除学生信息 * 输入参数: 删除学生学号 * 输出参数: * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、语文成绩、高数成绩、英语成绩 ************************************************************/ void Delete() { int num_; student *p,*q; q=head,p=head->next; printf("请输入要删除的学生的学号:\n"); scanf("%d",&num_); while(p!=NULL) { if(p->num==num_) { q->next=p->next; free(p); length--; printf("删除成功!\n"); return ; } p=p->next; q=q->next; } if(p==NULL) { printf("找不到要删除的学号!\n"); return ; } } /*********************************************************** * 功能描述: 主菜单 * 输入参数: 所需功能代号 * 输出参数: * 返回值 : (1) * 其它说明: 学生信息包括学号、姓名、语文成绩、高数成绩、英语成绩 ************************************************************/ void menu() { system("color 08"); printf("***************************************************************\n"); printf("** ︵__╭╭╭╭╭___︵ **\n"); printf("**│ │ **\n"); printf("**│ │ ╭─────────╮ **\n"); printf("**│ ● ● │ │ 欢迎使用 │ **\n"); printf("**│ ╭──╮ │ │学生信息管理系统^o^ │ **\n"); printf("**│ │●●│ │ ╭╮╰─────────╯ **\n"); printf("**│ ╰──╯ │○ ╰╯ **\n"); printf("**╰──┬◎───┬◎──╯ **\n"); printf("***************************************************************\n"); printf("| 1、 添加学生信息 |\n"); printf("| 2、 显示学生信息 |\n"); printf("| 3、 查找某个学生信息 |\n"); printf("| 4、 删除指定学号的学生 |\n"); printf("| 5、 指定的位置上插入学生信息 |\n"); printf("****************************************************************\n"); return ; }运行结果:
显示学生信息
按学号查找学生信息
按姓名查找学生信息
删除指定学号学生信息
指定位置上插入学生信息
知识点总结:
此程序逻辑结构属于线性结构,存储结构为链式存储结构,程序中包含单链表以及结构体数组等知识点。
学习心得:
通过这次课程设计让我对链表的结构有了更深的了解,在以后的应用中也会更加熟悉。也让我认识到,想要真正做出一个项目会有很多困难和挫折,需要下很大的功夫。这几天,我深刻体验到了团队的力量,如果没有老师、同学的帮助,我的项目也不会这么顺利的完成。总之,这次课程设计真的让我收获了很多,学到了很多,我相信以后会更好!!!!!