当前位置:首页 > 代码 > 正文

学生信息录入代码(程序录入学生信息)[20240430更新]

admin 发布:2024-04-30 13:16 162


本篇文章给大家谈谈学生信息录入代码,以及程序录入学生信息对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

c语言学生信息管理系统代码

代码如下:

#includestdio.h

#includemalloc.h

#includestdlib.h

#includestring.h

#includeconio.h

typedef struct examinee //考生信息结构

{   char examno[20]; //准考证号

char name[10]; //姓名

char sex[4]; //性别

short age; //年龄

char examtype[10]; //报考科目

}ElemType;

typedef struct Node //定义链表结点

{

ElemType data; //数据域

struct Node *next; //指针域

}Node,*List,*position;

List make_empty( List L ); //创建一个带头结点的空表

int is_empty( List L ); //测试链表是否是空表

int is_last( position p, List L ); //测试当前位置是否是表尾

position make_node( position p,int n ); //创建结点并输入考生信息

void put_information( position p ); //是否输出该考生信息

void put_name_information( List L ); //输出姓名为xx的考生信息

int put_pos_information( position p ); //输出该地址考生信息

void link_to_tail( List L, position p ); //将结点连接到表尾

int ciculation_make(); //循环创建考生信息

int judge_put_all(); //是否输出所有考生信息

void put_all(List L); //输出所有考生信息。

position find( List L ); //查找第一个姓名为xx的元素并返回位置

position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置

//int judge_delete_val(); //询问是否删除考生数据

int delete_val( List L ); //删除指定考生信息并输出其信息

void menu(List L); //菜单函数

List L;

//position p;

int

main( void ) 

{

List L = NULL; //定义头结点指针

position p = NULL; //定义表工作指针

L = make_empty( L ); //创建空表

printf("\t\t\t★★考生报名管理程序★★\n\t\t----------------------------------------\n");

menu(L);

return 0;

}

//创建一个带头结点的空表

List

make_empty( List L)

{

L = ( List ) malloc (sizeof( Node ));

if(NULL == L)

{

printf("内存分配失败");

exit( 1 );

}

L-next = NULL;

//printf("空表创建成功。\n");

return L;

}

//创建结点并输入考生信息

position

make_node( position p ,int n)

{

if(n) //n为1是创建结点并输入,n为0是修改

{

p = ( position ) malloc ( sizeof ( Node ));

p-next = NULL ;

}

printf("请输入考生准考证号:");

gets(p-data.examno);

printf("请输入考生姓名:");

gets(p-data.name);

do

{

printf("请输入考生性别,只能输入“男”或者“女”:");

gets(p-data.sex);

}

while( 0 != strcmp( p-data.sex, "男" ) 0 != strcmp( p-data.sex, "女" )); //判断性别是否有误

printf("请输入考生年龄:");

scanf("%hd",p-data.age);

getchar();  //如果把这句删掉,就“无法执行”下面的报考类别

/*下面的do while用来判断报考类别是否输入有误*/

do

{

printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");

gets(p-data.examtype);

}

while( 0 != strcmp( "英语", p-data.examtype ) 0 != strcmp( "数学", p-data.examtype ) 0 != strcmp( "数据结构", p-data.examtype ));

if(n)

{

printf("报名成功\n");

}

else

{

printf("修改成功\n");

}

return p;

}

//前插法;

void

link_to_tail( List L, position p)

{

p-next = L-next;

L-next = p;

}

//查找第一个姓名为xx的元素并返回位置

position

find( List L )

{

position p = L-next;

char name[10];

printf("请输入你要查找的考生姓名:");

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

p=p-next;

}

return p;

}

//测试链表是否是空表

int

is_empty( List L )

{

return L-next == NULL;

}

//测试当前位置是否是表尾

int

is_last( position p, List L )

{

return p-next == NULL;

}

//输出姓名为xx的考生信息

void

put_name_information( List L )

{

position p = find(L);

if(p!=NULL)

{

printf("您要查找的考生信息:\n");

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

else

{

printf("没有您要找的学生。\n");

}

}

//循环创建考生信息

int

ciculation_make()

{

int n = 2;

do

{

printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//是否输出考生信息

void

put_information( position p )

{

int n=2;

do

{

printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

if(n)

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

}

//是否输出所有考生信息

int

judge_put_all()

{

int n = 2;

do

{

printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//输出所有考生信息

void

put_all(List L)

{

if(L-next == NULL)

{

printf("现无考生报名!\n");

}

else

{

position p=L-next;

while( p != NULL )

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

p=p-next;

}

}

//getchar();

}

//询问是否删除考生数据

int

judge_delete_val()

{

int n = 2;

do

{

printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//查找第一个姓名为xx的元素并返回其直接前驱的位置

position

find_previous( List L )

{

position q = L;

position p = L-next;

char name[10];

printf("请输入你要查找的考生姓名:");

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

q=p;

p=p-next;

}

if( p != NULL )

{

return q;

}

else

return p;

}

//删除指定考生信息并输出其信息

int

delete_val(List L)

{

int n=2;

position q=NULL;

position p=find_previous( L ); //返回考生信息地址

if( NULL == p )

{

printf("你要删除的考生不存在\n");

return 0;

}

else

{

q = p-next;

p-next = q-next;

printf("删除成功。\n删除的考生信息为:\n");

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",q-data.examno,q-data.name,q-data.sex,q-data.age,q-data.examtype);

free(q);

return 1;

}

}

//输出该地址考试信息

int

put_pos_information( position p )

{

if(p != NULL )

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

return 1;

}

else

{

printf("没有您要查找的学生。");

return 0;

}

}

//菜单函数

void

menu(List L)

{

printf("\t\t\t   a. 考生报名入口\n");

printf("\t\t\t   b. 查询考生信息\n");

printf("\t\t\t   c. 修改考生信息\n");

printf("\t\t\t   d. 删除考生信息\n");

printf("\t\t\t   e. 全部考生信息\n");

printf("\t\t\t   f. 程序作者信息\n");

printf("\t\t\t   g.   退出程序\n");

char n='h';

while(n != 'g')

{

do  //确定正确输入

{

printf("请通过字母序号选择功能:");

n = getchar();

getchar();

putchar('\n');

if( n 'a' || n 'g')

{

printf("错误的字母序号。\n");

}

}

while( n 'a' || n 'g' );

switch (n)

{

case 'a':

{

printf("请输入报名考生信息:\n");

position p = make_node( p, 1 ); //创建新结点

link_to_tail( L, p ); //将新结点连接到表上

put_information( p );   //是否输出该考生信息

putchar('\n');

}

break;

case 'b':

{

put_name_information( L );

putchar('\n');

}

break;

case 'c':

{

int n=0;

position p = NULL;

printf("您正在进行修改操作。\n");

p = find(L);

n = put_pos_information( p );

if(n)

{

make_node( p , 0 );

put_information( p );   //是否输出该考生信息

}

putchar('\n');

}

break;

case 'd':

{

printf("您正在进行删除操作。\n");

delete_val( L );

putchar('\n');

}

break;

case 'e':

{

put_all( L );

putchar('\n');

}

break;

case 'f':

{

printf("              修改日期    版本号      修改人      修改内容    \n");

printf("        --------------------------------------------------------\n");

printf("              2018.6.19    v2.0       陈百川     增加主菜单\n");

printf("              2018.6.23    v3.0       陈百川   增加生成文件功能\n\n");

printf("            该版本号为v2.0\n");

putchar('\n');

}

break;

default:

break;

}

}

printf("                     感谢本次使用,祝您生活愉快。");

getch();

}

扩展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

参考资料:

百度百科——C语言

用C语言编写录入学生信息(学号、性别、年龄、院系 )

//自己再添上性别 什么的就行

#include string.h

#include stdio.h

#include stdlib.h

#define _COURSES 3//定义科目数

#define _LEN sizeof(student)//定义结构体大小

//枚举返回值情况

enum status

{

OVERFLOW = -1, //内存(溢出)问题

DONE = 0, //成功

NOFOUND = 1, //不存在

OPENFAIL = 2, //打开(文件)失败

BACK = 3 //返回

};

//end

//定义学生信息结构体

typedef struct StudentInfo

{

//数据域

unsigned int num;//学号

char name[11];//姓名

float scores[_COURSES];//各科成绩

//指针域

struct StudentInfo *next;//存放下一节点的地址

}student;

//end

student *head=NULL;//声明链表头结点

student *curr=NULL;//声明指向当前节点的指针

int total = 0;//声明当前节点个数

int init();//初始化链表

int add_stu();//添加新节点

int show_all();//显示所有学生信息

int find_stu();//查找指定信息节点

int modify_stu();//修改指定信息节点

int remove_stu();//删除指定信息节点

int sort_list();//对链表排序

int save_to_file();//将所有信息保存至文件

int read_from_file();//从文件中读取信息

void about();//关于

int quit();//释放所有节点空间

int entering(student *input);//录入学生信息

void show_stu(student *show, int serial);//显示指定学生信息

void start();//程序开始界面

void change(student *former, student *latter, student *temp);//交换两个节点的数据域

void main()

{

int choice=0;

init();

while(1)

{

system("cls");

start();

printf("请选择:");

scanf("%d",choice);

fflush(stdin);//清空缓冲区

switch (choice)

{

case 1:

{

add_stu();

break;

}

case 2:

{ show_all();

break;

}

case 3:

{

find_stu();

break;

}

case 4:

{

modify_stu();

break;

}

case 5:

{

remove_stu();

break;

}

case 6:

{

sort_list();

break;

}

case 7:

{

save_to_file();

break;

}

case 8:

{

read_from_file();

break;

}

case 9:

{

about();

break;

}

case 0:

{

quit();

exit(0);

break;

}

default:{break;}

}

system("pause");

}

}

/*******************************************************/

/*功能: 初始化带头结点的链表,头结点指针域置空 */

/* */

/*返回: */

/*******************************************************/

int init()

{

head = (student *)malloc(_LEN);//为头结点申请空间

if (!head)

{//如果申请空间失败,返回

return OVERFLOW;

}

head-next = NULL;//指向下一节点(空)

curr = head-next;//当前节点指针指向第一个结点

total = 0;//当前节点个数初始化为0(头结点不计算在内)

return DONE;

}

/*******************************************************/

/*功能:头插法添加新节点,并刷新学生人数 */

/* */

/*返回: */

/*******************************************************/

int add_stu()

{

student *add = (student *)malloc(_LEN);

curr = head-next;//当前节点指针指向第一个节点

printf("\t====当前已存入 %d 个同学\n",total);

printf("请输入第 %d 个学生的信息\n",total+1);

if (BACK == entering(add))

{

free(add);

return BACK;

}

head-next = add;//头结点指针域指向新建的节点

add-next = curr;//新建节点指针域指向第一个节点

curr = add; //当前节点指向新建的节点

total += 1; //更新学生总人数

return DONE;

}

/*******************************************************/

/*功能:显示所有学生信息 */

/* */

/*返回: */

/*******************************************************/

int show_all()

{

if ( 0 == total )

{

printf("\t====没有可供显示的学生信息!\n");

return NOFOUND;

}

curr = head-next;//当前节点指针指向第一个节点

printf("\t%4s%12s%12s","序号","学号","姓名");

for (int m=0; m_COURSES; m++)

{

printf("%7s","科目");

}

printf("\n");

printf("\t-------------------------------------------------------------\n");

for (int i=1; i=total; i++)

{

show_stu(curr,i);

curr = curr-next;//当前节点指针后移

}

printf("\t-------------------------------------------------------------\n");

return DONE;

}

/*******************************************************/

/*功能:查找指定学生信息 */

/* */

/*返回: */

/*******************************************************/

int find_stu()

{

char stu_name[11];

int flag=1;

printf("请输入要查找的学生姓名:");

scanf("%s",stu_name);

curr = head-next;//指向第一个节点

while (curr != NULL)

{

if (strcmp(stu_name,curr-name) == 0)

{

printf("\t%4s%12s%12s","序号","学号","姓名");

for (int m=0; m_COURSES; m++)

{

printf("%7s","科目");

}

printf("\n");

printf("\t-------------------------------------------------------------\n");

show_stu(curr,flag);

return DONE;

}

curr = curr-next;

++flag;

}

printf("\t====没有找到 %s !请仔细核对姓名再查找\n",stu_name);

return NOFOUND;

}

/*******************************************************/

/*功能:修改指定学生的所有信息 */

/* */

/*返回: */

/*******************************************************/

int modify_stu()

{

char stu_name[11];

int flag=1;

curr = head-next;//指向第一个节点

printf("请输入要修改的学生的姓名:");

scanf("%s",stu_name);

while (curr != NULL)

{

if (strcmp(stu_name,curr-name) == 0)

{

printf("\t%4s%12s%12s","序号","学号","姓名");

for (int m=0; m_COURSES; m++)

{

printf("%7s","科目");

}

printf("\n");

printf("\t-------------------------------------------------------------\n");

show_stu(curr,flag);

entering(curr);

printf("\t====成功修改了 %s 的所有信息!\n",stu_name);

return DONE;

}

curr = curr-next;

++flag;

}

printf("\t====没有找到 %s !请仔细核对姓名\n",stu_name);

return NOFOUND;

}

/*******************************************************/

/*功能:删除指定学生 */

/* */

/*返回: */

/*******************************************************/

int remove_stu()

{

student *pre=head;

char stu_name[11];

curr = head-next;//指向第一个节点

printf("请输入要删除的学生的姓名:");

scanf("%s",stu_name);

while (curr != NULL)

{

if (strcmp(stu_name,curr-name) == 0)

{

pre-next = curr-next; //

free(curr); //

--total; //

printf("\t====已成功删除\"%s\"\n",stu_name);

return DONE;

}

pre = pre-next;

curr = curr-next;

}

printf("\t====没有找到 %s !请仔细核对姓名\n",stu_name);

return NOFOUND;

}

/*******************************************************/

/*功能:对所有学生排序 */

/* */

/*返回: */

/*******************************************************/

int sort_list()

{

student *temp = (student *)malloc(_LEN);

student *curr_i = head-next;

student *curr_j = NULL;

char choice='0';

printf("\t \t1----按学号排序 .\t2----按姓名排序 . \n");

printf("\t \t3----按科目排序 .\t0----退 出 排 序. \n");

printf("请选择:");

scanf("%c",choice);

fflush(stdin);

switch (choice)

{

case '1':

{

while(curr_i-next != NULL)

{

curr_j = curr_i-next;

while (curr_j != NULL)

{

if (curr_i-num curr_j-num)

{

change(curr_i,curr_j,temp);

}

curr_j = curr_j-next;

}

curr_i = curr_i-next;

}

printf("\t====排序成功!\n");

break;

}

case '2':

{

while(curr_i-next != NULL)

{

curr_j = curr_i-next;

while (curr_j != NULL)

{

if (strcmp(curr_i-name , curr_j-name) 0)

{

change(curr_i,curr_j,temp);

}

curr_j = curr_j-next;

}

curr_i = curr_i-next;

}

printf("\t====排序成功!\n");

break;

}

case '3':

{

while(curr_i-next != NULL)

{

curr_j = curr_i-next;

while (curr_j != NULL)

{

if (curr_i-scores[0] curr_j-scores[0])

{

change(curr_i,curr_j,temp);

}

curr_j = curr_j-next;

}

curr_i = curr_i-next;

}

printf("\t====排序成功!\n");

break;

}

case '0':

{

free(temp);

return BACK;

}

default:

{printf("\t====输入有误!\n");break;}

}

free(temp);

return DONE;

}

/*******************************************************/

/*功能:保存数据到文件 */

/* */

/*返回: */

/*******************************************************/

int save_to_file()

{

curr=head-next;

if (total == 0)

{

printf("\t====目前还没有任何信息,不用保存!\n");

return BACK;

}

FILE *fp;

if((fp=fopen("record.dat","wb"))==NULL)

{

printf("\t====文件打开失败!\n");

return OPENFAIL;

}

while (curr != NULL)

{

//将数据成块写入文件

fwrite((char *)curr, _LEN, 1, fp);

curr=curr-next;

}

fclose(fp);

printf("\t====信息已成功保存至文件\"record.dat\"文件中\n");

return DONE;

}

/*******************************************************/

/*功能:从文件中读取数据 */

/* */

/*返回: */

/*******************************************************/

int read_from_file()

{

char judge='y';

FILE *fp;

if((fp=fopen("record.dat","r"))==NULL)

{

printf("文件不存在或者打开失败!\n");

return OPENFAIL;

}

printf("\t====读取文件会覆盖当前信息!是否确定载入文件?(y/n):");

scanf("%c",judge);

if (judge=='n' || judge=='N')

{

return BACK;

}

quit();//释放以前所有信息的空间

init();//重新初始化链表

curr = head;//当前节点指针指向头结点

student *add=(student *)malloc(_LEN);//申请空间存放读取的信息

while (fread((char *)add, _LEN, 1, fp))

{//由于存储的信息是最新的信息在前,所以读取的时候将其添加在链表尾

add-next=curr-next;

curr-next=add;

curr=add;

add=(student *)malloc(_LEN);

++total;

}

fclose(fp);

printf("\t====文件载入成功!当前已有%d个学生。\n",total);

return DONE;

}

/*******************************************************/

/*功能: */

/* */

/*返回: */

/*******************************************************/

void about()

{

printf("\t#############################################################\n");

printf("\n\t \t欢迎各位用户反馈Bug或提出宝贵的意见和建议 \n");

printf("\t \t联系方式 \n");

printf("\t \t手 机:13667102098 \n");

printf("\t \tE-mail:Never_S@126.com \n");

printf("\n\t \t\tC语言学生成绩管理系统1.0版\n\n");

printf("\t#############################################################\n");

}

/*******************************************************/

/*功能:释放内存 */

/* */

/*返回: */

/*******************************************************/

int quit()

{

curr =head-next;

student *temp=curr;

while(curr != NULL)

{

temp=curr-next;

free(curr);

curr=temp;

}

curr=NULL;

temp=NULL;

free(head);//释放头节点

return DONE;

}

//////////////////////////////////////////////////////////////////////////

/*******************************************************/

/*功能:录入一个学生的全部信息 */

/* */

/*返回: */

/*******************************************************/

int entering(student *input)

{

printf("\n请输入学生的学号(输入0退出添加):");

scanf("%d",input-num);

if (0 == input-num)

{

return BACK;

}

printf("请输入学生的姓名(五个汉字以内):");

scanf("%s",input-name);

printf("请输入%d门科目的成绩(用空格隔开):", _COURSES);

for (int i=0; i_COURSES; i++)

{

scanf("%f",input-scores[i]);

}

return DONE;

}

/*******************************************************/

/*功能:显示指定学生的所有信息 */

/* */

/*返回: */

/*******************************************************/

void show_stu(student *show, int serial)

{

printf("\t%4d%12d%12s",serial,show-num,show-name);

for (int i=0; i_COURSES; i++)

{

printf("%7.1f",show-scores[i]);

}

printf("\n");

}

/*******************************************************/

/*功能:根据权限进入不同的界面 */

/* */

/*返回: */

/*******************************************************/

void start()

{

printf("\n");

printf("\t\t\t欢迎使用学生成绩管理系统\n");

printf("\t*************************************************************\n");

printf("\t|\t1----添 加 学 生.\t2----显 示 信 息. |\n");

printf("\t|\t3----查 找 学 生.\t4----修 改 信 息. |\n");

printf("\t|\t5----删 除 学 生.\t6----学 生 排 序. |\n");

printf("\t|\t7----信 息 存 档.\t8----读 取 存 档. |\n");

printf("\t|\t9----关 于.\t0----退 出. |\n");

printf("\t*************************************************************\n");

}

/*******************************************************/

/*功能: */

/* */

/*返回: */

/*******************************************************/

void change(student *former, student *latter,student *temp)

{

*temp = *former;

strcpy(former-name , latter-name);

strcpy(latter-name , temp-name);

former-num = latter-num;

latter-num = temp-num;

for (int i=0; i_COURSES; i++)

{

former-scores[i] = latter-scores[i];

latter-scores[i] = temp-scores[i];

}

}

学生信息管理系统代码设计怎么写

#include stdio.h

#include string.h

struct student

{

long int num;

char name[20];

int age;

char sex[4];

char b[30];

char p[15];

};

int n=0;

struct student stu[100];

struct student *p;

void lr();

void ll();

void cx();

void xg();

void sc();

void main()

{

int z;

printf("+---------------------------+\n");

printf("| 欢迎使用学生信息管理系统 |\n");

printf("+---------------------------+\n");

printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");

do

{

printf("\n\t\t\t--------------------------------\n");

printf("\t\t\t+ 主菜单 |\n");

printf("\t\t\t--------------------------------\n");

printf("\t\t\t+ [1]----录入学生信息 |\n");

printf("\t\t\t+ [2]----浏览学生信息 |\n");

printf("\t\t\t+ [3]----查询学生信息 |\n");

printf("\t\t\t+ [4]----删除学生信息 |\n");

printf("\t\t\t+ [5]----修改学生信息 |\n");

printf("\t\t\t+ [0]----退出系统 |\n");

printf("\t\t\t--------------------------------\n");

printf("请输入您的选择:");

scanf("%d", z);

switch(z)

{

case 0 : break;

case 1 :lr();break;

case 2 :ll();break;

case 3 :cx();break;

case 4 :sc();break;

case 5 :xg();break;

default:printf("\n无效选项!");

}

}

while(z!= 0);

}

void lr()/*录入函数*/

{

int y;

if(n==0)

p=stu;

do

{

printf("--------------------\n");

printf("请输入学生的学号:");

scanf("%ld",p-num);

printf("请输入学生的姓名:");

scanf("%s",p-name);

printf("请输入学生的年龄:");

scanf("%d",p-age);

printf("请输入学生的性别:");

scanf("%s",p-sex);

printf("请输入学生的地址:");

scanf("%s",p-b);

printf("请输入学生的电话:");

scanf("%s",p-p);

n++;

p++;

printf("\n1.继续输入.\n0.输入完毕.\n");

printf("请选择:");

scanf("%d",y);

}

while(y==1);

printf("提示:输入完毕!你一共输入%d个\n",n);

}

void ll()/*浏览函数*/

{

int i,j;

if(n!=0)

{ printf("学生总数:%d\n", n);

printf("学号\t姓名\t年龄\t性别\t地址\t\t电话\n");

printf("-----------------------------------------------------\n");

for(i=0;in;i++)

printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

}

else printf("提示:无学生数据,请输入数据!");

}

void cx()/*查询函数*/

{

int c;

int w,i,j=0;

char name[20];

if(n!=0)

{

do{ printf("\n");

printf("+--------------------+\n");

printf("| 按学号查询 请按 1 |\n");

printf("| 按姓名查询 请按 2 |\n");

printf("| 取消 请按 0 |\n");

printf("+--------------------+\n");

printf("请输入您的选择:");

scanf("%d", c);

switch(c)

{

case 0:break;

case 1:

printf("请输入学生的学号;");

scanf("%ld", w);

printf("\n");

for(i=0;in;i++)

if(stu[i].num==w)

{

printf("\n学号\t姓名\t年龄\t性别\t地址\t\t电话\n");

printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

j=1;

}

if(j==0)

printf("提示:没有该学生记录,请核对!");

break;

case 2:

printf("请输入学生的姓名:");

scanf("%s", name);

printf("\n");

for(i=0;in;i++)

if(strcmp(name,stu[i].name)==0)

{

printf("\n学号\t姓名\t年龄\t性别\t地址\t\t电话\n");

j=1;

printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

}

if(j==0)

printf("提示:没有该学生记录,请核对!");

break;

default:

printf("\n提示:无效选项!");

break;

}

}while(c!= 0);

}else printf("提示:无学生数据,请输入数据!");

return;

}

void xg()/*修改函数*/

{

long int num;

int i,j,c;

if(n!=0)

{

printf("请输入您要修改的学生的学号:");

scanf("%ld", num);

printf("\n");

for(i=0;in;i++)

if(stu[i].num==num)

j=i;

do{

printf("请选择您要修改的学生的信息内容:\n");

printf("+----------------------+\n");

printf("| 姓名 请按 1 |\n");

printf("| 年龄 请按 2 |\n");

printf("| 性别 请按 3 |\n");

printf("| 学号 请按 4 |\n");

printf("| 地址 请按 5 |\n");

printf("| 电话 请按 6 |\n");

printf("| 取消 请按 0 |\n");

printf("+----------------------+\n");

printf("请输入您的选择:");

scanf("%d", c);

printf("\n");

switch(c)

{

case 0:break;

case 1:printf("请输入新姓名:");

scanf("%s",stu[j].name);

break;

case 2:printf("请输入新年龄:");

scanf("%d",stu[j].age);

break;

case 3:printf("请输入新性别:");

scanf("%s",stu[j].sex);

break;

case 4:printf("请输入新学号:");

scanf("%ld",stu[j].num);

break;

case 5:printf("请输入新地址:");

scanf("%s",stu[j].b);

break;

case 6:printf("请输入新电话:");

scanf("%s",stu[j].p);

break;

default:

printf("\n无效选项!");

break;

}

}while(c!= 0);

}else printf("提示:无学生数据,请输入数据!");

}

void sc()/*删除函数*/

{

long int num;

int i,j,e;

if(n!=0)

{

printf("学号\t姓名\t年龄\t性别\t地址\t\t电话\n");

printf("-----------------------------------------------------\n");

for(i=0;in;i++)

printf("%ld\t%s\t%d\t%s\t%s\t\t%s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);

printf("请输入您要删除的学生的学号:");

scanf("%ld", num);

printf("\n");

for(i=0;in;i++)

if(num==stu[i].num)

j=i;

if(j!=(n-1))

{

for(e=i-1;en;e++,j++)

{

stu[j].num=stu[j+1].num;

strcpy(stu[j].name,stu[j+1].name);

strcpy(stu[j].sex,stu[j+1].sex);

stu[j].age=stu[j+1].age;

strcpy(stu[j].b,stu[j+1].b);

strcpy(stu[j].p,stu[j+1].p);

n--;p--;

}

}else {n--;p--;}

printf("提示:删除完毕!");

}else printf("提示:无学生数据,请输入数据!");

}

学生基本信息管理系统C++源代码

#include iostream

#include iomanip

#include string

using namespace std;

typedef struct student {

unsigned m_id;

string m_name;

unsigned m_age;

string m_sex;

string m_address;

string m_contact;

string m_dormitory;

struct student *m_next;

}student;

class CStudent {

private :

student *head;

public :

CStudent() {

head = new student;

head-m_id = 0;

head-m_name = "noname";

head-m_next = NULL;

}

~CStudent() {

student *p = head,*q;

while(p) {

q = p;

p = q-m_next;

delete q;

}

}

student readdata(int model); // model = 1:不读取学号,2:不读取姓名,其他,读取所有信息

void entering();

bool insert(const student astu);

student *findid(unsigned id) const;

student *findname(const string name) const;

student *findsex(const string sex) const;

student *finddormitory(const string dormitory) const;

unsigned boys() const;

unsigned girls() const;

unsigned headcount() const;

bool eraseid();

bool erasename();

bool modifyid();

bool modifyname();

void Show() const;

void query() const;

void friend statistics(const CStudent aclss);

void friend erase(CStudent aclss);

void friend modify(CStudent aclss);

};

string readstring() {

string str;

while(cin.get() != '\n');

cin  str;

return str;

}

student CStudent::readdata(int model) {

student tmp;

if(model != 1) { cout  "学    号: "; cin  tmp.m_id; }

if(model != 2) { cout  "姓    名: "; tmp.m_name = readstring(); }

cin  tmp.m_age;

cout  "性    别: ";

tmp.m_sex = readstring();

cout  "住    址: ";

tmp.m_address = readstring();

cout  "联系方式: ";

tmp.m_contact  =readstring();

cout  "寝    室: ";

tmp.m_dormitory = readstring();

return tmp;

}

void CStudent::entering() {

student tmp;

cout  "学号(0 to return): ";

cin  tmp.m_id;

while(tmp.m_id) {

if(findid(tmp.m_id) == NULL) {

cout  "姓    名: ";

tmp.m_name = readstring();

cout  "年    龄: ";

cin  tmp.m_age;

cout  "性    别: ";

tmp.m_sex = readstring();

cout  "住    址: ";

tmp.m_address = readstring();

cout  "联系方式: ";

tmp.m_contact = readstring();

cout  "寝    室: ";

tmp.m_dormitory = readstring();

insert(tmp);

}

else cout  "重复的学号:"  tmp.m_id  endl;

cout  "学号(0 to return): ";

cin  tmp.m_id;

}

}

student *CStudent::findid(unsigned id) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_id == id) return p;

return NULL;

}

student *CStudent::findname(const string name) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_name == name) return p;

return NULL;

}

student *CStudent::findsex(const string sex) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_sex == sex) return p;

return NULL;

}

student *CStudent::finddormitory(const string dormitory) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_dormitory == dormitory) return p;

return NULL;

}

bool CStudent::insert(const student astu) {

student *newnode,*p = head;

if(p-m_next == NULL) {

p-m_next = new student(astu);

p-m_next-m_next = NULL;

return true;

}

while(p-m_next) {

if(p-m_next-m_id == astu.m_id) {

cout  "重复的学号,插入失败!\n";

return false;

}

if(p-m_next-m_id  astu.m_id) {

newnode = new student(astu);

newnode-m_next = p-m_next;

p-m_next = newnode;

return true;

}

p = p-m_next;

}

p-m_next = new student(astu);

p-m_next-m_next = NULL;

return true;

}

unsigned  CStudent::boys() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next)

if(p-m_sex == "男") ++cnt;

return cnt;

}

unsigned CStudent::girls() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next)

if(p-m_sex == "女") ++cnt;

return cnt;

}

unsigned CStudent::headcount() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next,++cnt);

return cnt;

}

bool CStudent::eraseid() {

student *q,*p;

unsigned id;

cout  "输入要删除的学号:";

cin  id;

p = findid(id);

if(p == NULL) {

cout  "没有找到学号是\""  id  "\"的学生,删除失败!\n";

return false;

}

q = p-m_next;

p-m_next = q-m_next;

delete q;

return true;

}

bool CStudent::erasename() {

student *q,*p;

string name;

cout  "输入要删除人的姓名:";

name = readstring();

p = findname(name);

if(p == NULL) {

cout  "没有找到姓名是\""  name  "\"的学生,删除失败!\n";

return false;

}

q = p-m_next;

p-m_next = q-m_next;

delete q;

return true;

}

bool CStudent::modifyid() {

student tmp,*p;

unsigned id;

cout  "输入要修改的学号:";

cin  id;

p = findid(id);

if(p == NULL) {

cout  "没有找到学号是\""  id  "\"的学生,修改失败!\n";

return false;

}

tmp = readdata(1);

tmp.m_id = id;

*p = tmp;

return true;

}

bool CStudent::modifyname() {

student *p,tmp;

string name;

cout  "输入要修改人的姓名:";

name = readstring();

p = findname(name);

if(p == NULL) {

cout  "没有找到姓名是\""  name  "\"的学生,修改失败!\n";

return false;

}

tmp = readdata(2);

tmp.m_name = name;

*p = tmp;

return true;

}

int menu() {

int choice;

do {

system("cls");

cout  "\t****************************\n";

cout  "\t*   学生基本信息管理系统   *\n";

cout  "\t*==========================*\n";

cout  "\t*    1、录入学生信息       *\n";

cout  "\t*    2、显示学生信息       *\n";

cout  "\t*    3、查询学生信息       *\n";

cout  "\t*    4、添加学生信息       *\n";

cout  "\t*    5、统计学生信息       *\n";

cout  "\t*    6、删除学生信息       *\n";

cout  "\t*    7、修改学生信息       *\n";

cout  "\t*    0、退出管理系统       *\n";

cout  "\t****************************\n";

cout  "\n\t请选择:";

cin  choice;

}while(choice  0 || choice  7);

return choice;

}

void show(student *p) {

cout  p-m_id  " "  p-m_name  " "  p-m_age  " ";

cout  p-m_sex  " "  p-m_address  " ";

cout  p-m_contact  " "  p-m_dormitory  endl;

}

void CStudent::Show() const {

student *p;

cout  "----------------------------------------------------------\n";

for(p = head-m_next; p; p = p-m_next) show(p);

cout  "----------------------------------------------------------\n";

system("pause");

}

void CStudent::query() const {

int select;

unsigned id;

string name;

student *p;

cout  "1、按学号查询\n2、按姓名查询\n0、返回\n";

cin  select;

switch(select) {

case 1 : cout  "请输入学号:"; cin  id;

if(p = findid(id)) show(p-m_next);

break;

case 2 : cout  "请输入姓名:"; name = readstring();

if(p = findname(name)) show(p-m_next);

break;

case 0 : return;

default : cout  "选择错误。\n";

}

system("pause");

}

void statistics(const CStudent a) {

unsigned total = a.headcount();

unsigned boys = a.boys();

unsigned girls = a.girls();

cout  "学生总数:"  total  "人。\n";

cout  "其中,男生:"  boys  "名。";

cout  "女生:"  girls  "名。\n";

system("pause");

}

void erase(CStudent a) {

int select;

unsigned id;

string name;

student *p,*q;

cout  "1、按学号删除\n2、按姓名删除\n0、返回\n";

cin  select;

switch(select) {

case 1 : cout  "请输入学号:"; cin  id;

if(p = a.findid(id)) {

q = p-m_next;

p-m_next = q-m_next;

delete q;

cout  "成功删除 "  id  " 的信息。\n";

}

break;

case 2 : cout  "请输入姓名:"; name = readstring();

if(p = a.findname(name)) {

q = p-m_next;

p-m_next = q-m_next;

delete q;

cout  "成功删除 "  name  " 的信息。\n";

}

break;

case 0 : return;

default : cout  "选择错误。\n";

}

system("pause");

}

void modify(CStudent a) {

int select;

cout  "1、按学号修改\n2、按姓名修改\n0、返回\n";

cin  select;

switch(select) {

case 1 : if(a.modifyid()) cout  "修改成功。\n"; break;

case 2 : if(a.modifyname()) cout  "修改成功。\n"; break;

case 0 : return;

default : cout  "选择错误。\n";

}

system("pause");

}

int main() {

CStudent a;

int an;

do {

an = menu();

switch(an) {

case 1 : a.entering(); break;

case 2 : a.Show(); break;

case 3 : a.query(); break;

case 4 : a.entering(); break;

case 5 : statistics(a); break;

case 6 : erase(a); break;

case 7 : modify(a); break;

case 0 : break;

default : cout  "选择错误。\n"; break;

}

}while(an);

return 0;

}

学生信息录入代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于程序录入学生信息、学生信息录入代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/881.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载