本文目录一览:

typedef用法

建议修改为

typedef struct tagNode

{

char *pItem;

tagNode *pNext;

}pNode;

然后使用pNode *a声明结构指针。 否则声明pNode pNext;时, 类型名pNode还没有生成

grtchar()

#include "iostream.h"

#includestdio.h

void main()

{

int i;

char Rname[10];

for(i=0;(Rname[i]=getchar())!='\n';i++) ;//加了一个括号就好了

Rname[i]='\0';

cout"你输入的是:";

for(i=0;Rname[i]!='\0';i++)coutRname[i];

}

完成学生信息系统的项目开发,要求实现学生信息的录入、查询、修改、排序和统计等主要功能。

已经编译运行通过:

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#include "conio.h"

struct subject{ //科目信息结构体

float Chinese; //语文

float Math; //数学

float English; //英语

};

struct student{

int no; //学号

char name[20]; //姓名

char sex; //性别

char address[20]; //地址

char telephone[20];//电话

subject score; //3门科目的成绩

float avg; //3门平均成绩

}stud[50]; //结构体数组

int count=0; //计数变量,记录学生人数

void add(){ //增加学生信息函数

student a; //临时结构体变量a

char x,j; //Yes or No输入字符变量

//循环输入学生信息

for(int i=0;i50;i++){

system("cls"); //清屏函数

int t=0;

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

scanf("%d",a.no);

//寻找学号是否已存在

for(int k=0;kcount;k++){

if(stud[k].no==a.no){

t=1;

}

}

//存在与否,分别输出

if(t==1)

printf("输入的学号已存在,请重新输入\n");

else{

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

scanf("%s",a.name);

printf("请输入学生的性别(m代表男,f代表女):");

scanf("%c",a.sex);

scanf("%c",a.sex);

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

scanf("%s",a.address);

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

scanf("%s",a.telephone);

printf("请输入学生的语文成绩:");

scanf("%f",a.score.Chinese);

printf("请输入学生的数学成绩:");

scanf("%f",a.score.Math);

printf("请输入学生的英语成绩:");

scanf("%f",a.score.English);

a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;

//判定是否要增加该记录

printf("确定要增加该记录吗?(y/n)");

scanf("%c",x);

scanf("%c",x);

if(x=='y'){

stud[count]=a;

count++;

}

}

//判定是否要继续增加记录

printf("要继续增加记录吗?(y/n)");

scanf("%c",j);

scanf("%c",j);

if(j=='n')

break;

}

printf("\n按任意键返回主菜单:");

getch(); //从键盘接收任意一个字符就返回

}

void show(){ //显示所有学生信息函数

system("cls");

//循环显示

for(int i=0;icount;i++){

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);

printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,

stud[i].score.Math,stud[i].score.English,stud[i].avg);

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

}

printf("\n按任意键返回主菜单:");

getch();

}

void sort(){ //根据学生的学号由小到大进行排序

system("cls");

//冒泡排序法

for(int i=0;icount-1;i++){

for(int j=0;jcount-1-i;j++){

if(stud[j].nostud[j+1].no){

student t=stud[j];

stud[j]=stud[j+1];

stud[j+1]=t;

}

}

}

printf("排序已完成,按任意键返回主菜单:");

getch();

}

void query1(){ //根据学号查询并显示单个学生信息

int x; //输入学生学号整型变量

char k; //Yes or No输入字符变量

while(true){

system("cls");

int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标

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

scanf("%d",x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t

for(int i=0;icount;i++){

if(stud[i].no==x)

t=i;

}

//判定信息是否存在,分别输出

if(t==-1)

printf("您所查询的学生信息不存在,");

else{

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);

printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,

stud[t].score.Math,stud[t].score.English,stud[t].avg);

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

}

//判定是否要继续查询

printf("是否继续查询?(y/n)");

scanf("%c",k);

scanf("%c",k);

if(k=='n')

break;

}

printf("\n按任意键返回主菜单:");

getch();

}

void query2(){ //根据姓名查询并显示单个学生信息

char x[20]; //输入学生姓名字符串变量

char k; //Yes or No输入字符变量

while(true){

system("cls");

student a[50]; //要查询的学生姓名所对应的数组下标,-1代表在数组中没对应下标

int t=0;

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

scanf("%s",x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t

for(int i=0;icount;i++){

if(strcmp(stud[i].name,x)==0){

a[t]=stud[i];

t++;

}

}

//判定信息是否存在,分别输出

if(t==0)

printf("您所查询的学生信息不存在,");

else{

for(int i=0;it;i++){

printf("学号:%-8d姓名:%-16s性别:%c\n",a[i].no,a[i].name,a[i].sex);

printf("地址:%s\n电话:%s\n",a[i].address,a[i].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",a[i].score.Chinese,

a[i].score.Math,a[i].score.English,a[i].avg);

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

}

}

//判定是否要继续查询

printf("是否继续查询?(y/n)");

scanf("%c",k);

scanf("%c",k);

if(k=='n')

break;

}

printf("\n按任意键返回主菜单:");

getch();

}

void good(){ //显示平均成绩和单科成绩最高的学生资料

int i=0;

system("cls");

//寻找平均成绩中的最高值

float max1=stud[0].avg;

for(i=1;icount;i++)

if(stud[i].avgmax1)

max1=stud[i].avg;

//输出平均成绩中最高值的学生信息

for(i=0;icount;i++){

if(max1==stud[i].avg){

printf("平均成绩最高的学生信息:\n\n");

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);

printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,

stud[i].score.Math,stud[i].score.English,stud[i].avg);

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

}

}

//寻找语文成绩中的最高值

float max2=stud[0].score.Chinese;

for(i=1;icount;i++)

if(stud[i].score.Chinesemax2)

max2=stud[i].score.Chinese;

//输出语文成绩中最高值的学生信息

for(i=0;icount;i++){

if(max2==stud[i].score.Chinese){

printf("语文成绩最高的学生信息:\n\n");

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);

printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,

stud[i].score.Math,stud[i].score.English,stud[i].avg);

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

}

}

//寻找数学成绩中的最高值

float max3=stud[0].score.Math;

for(i=1;icount;i++)

if(stud[i].score.Mathmax3)

max3=stud[i].score.Math;

//输出数学成绩中最高值的学生信息

for(i=0;icount;i++){

if(max3==stud[i].score.Math){

printf("数学成绩最高的学生信息:\n\n");

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);

printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,

stud[i].score.Math,stud[i].score.English,stud[i].avg);

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

}

}

//寻找英语成绩中的最高值

float max4=stud[0].score.English;

for(i=1;icount;i++)

if(stud[i].score.Englishmax4)

max4=stud[i].score.English;

//输出英语成绩中最高值的学生信息

for(i=0;icount;i++){

if(max4==stud[i].score.English){

printf("英语成绩最高的学生信息:\n\n");

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);

printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,

stud[i].score.Math,stud[i].score.English,stud[i].avg);

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

}

}

printf("\n按任意键返回主菜单:");

getch();

}

void update(){

int x; //输入学生学号整型变量

student a; //临时结构体变量a

char k,j; //Yes or No输入字符变量

while(true){

system("cls");

int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标

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

scanf("%d",x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t

for(int i=0;icount;i++){

if(stud[i].no==x)

t=i;

}

//判定信息是否存在,分别输出

if(t==-1)

printf("您所要修改的学生信息不存在,");

else{

//输出要修改学生的原信息

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);

printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,

stud[t].score.Math,stud[t].score.English,stud[t].avg);

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

//判定是否要修改

printf("确定要修改该记录吗?(y/n)");

scanf("%c",k);

scanf("%c",k);

//确定要修改后,输入新信息

if(k=='y'){

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

scanf("%d",a.no);

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

scanf("%s",a.name);

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

scanf("%c",a.sex);

scanf("%c",a.sex);

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

scanf("%s",a.address);

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

scanf("%s",a.telephone);

printf("请输入新的学生的语文成绩:");

grtchar怎么用(gnuplot怎么用)

scanf("%f",a.score.Chinese);

printf("请输入新的学生的数学成绩:");

scanf("%f",a.score.Math);

printf("请输入新的学生的英语成绩:");

scanf("%f",a.score.English);

a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;

stud[t]=a;

printf("修改成功,");

}

}

//判定是否继续

printf("是否继续修改?(y/n)");

scanf("%c",j);

scanf("%c",j);

if(j=='n')

break;

}

printf("\n按任意键返回主菜单:");

getch();

}

void del(){

int x; //输入学生学号整型变量

char k,j; //Yes or No输入字符变量

while(true){

system("cls");

int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标

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

scanf("%d",x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t

for(int i=0;icount;i++){

if(stud[i].no==x)

t=i;

}

//判定信息是否存在,分别输出

if(t==-1)

printf("您所要删除的学生信息不存在,");

else{

//输出要删除学生的原信息

printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);

printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);

printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,

stud[t].score.Math,stud[t].score.English,stud[t].avg);

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

//判定是否删除

printf("确认要删除吗?(y/n)");

scanf("%c",k);

scanf("%c",k);

//确定要删除后,删除该信息

if(k=='y'){

for(int i=t;icount-1;i++)

stud[i]=stud[i+1];

printf("删除成功,");

count--;

}

}

//判定是否继续

printf("是否继续删除?(y/n)");

scanf("%c",j);

scanf("%c",j);

if(j=='n')

break;

}

printf("\n按任意键返回主菜单:");

getch();

}

void grt(){

system("cls");

printf("\n按任意键返回主菜单:");

getch();

}

void grt1()

{

int choice=0; //保存用户输入的选择项

do{

system("cls"); //清屏函数

printf("\t----------------学生信息管理系统----------------\n\n");

printf("\t\t在菜单中选择以下的操作类型\n");

printf("\t\t1.增加记录\n\t\t2.显示所有学生信息\n\t\t3.信息排序\n\t\t4.根据学号查询单个学生信息\n\t\t5.根据姓名查询单个学生信息\n");

printf("\t\t6.平均成绩和单科成绩最高的学生资料\n\t\t7.修改记录\n\t\t8.删除记录\n\t\t9.退出程序\n\t\t0.制作人\n");

printf("\t\t请输入你的选择:");

scanf("%d",choice);

switch(choice)

{

case 1:

add();

break;

case 2:

show();

break;

case 3:

sort();

break;

case 4:

query1();

break;

case 5:

query2();

break;

case 6:

good();

break;

case 7:

update();

break;

case 8:

del();

break;

case 0:

grt();

break;

}

}while(choice!=9);

}

void main()

{

char x[10];

printf("\t----------------学生信息管理系统----------------\n\n");

grt1();

}