C语言程序(学生信息管理系统)(难题)急急·····

作者&投稿:马溥 (若有异议请与网页底部的电邮联系)
C语言程序(学生信息管理系统)(难题)急急······拜托了!!!~

#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
#define N 3 /*定义常数*/
typedef struct z1 /*定义数据结构*/
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
/*以下是函数原型*/
STUDENT *init(); /*初始化函数*/
STUDENT *create(); /*创建链表*/
STUDENT *delete(STUDENT *h); /*删除记录*/
void print(STUDENT *h); /* 显示所有记录*/
void search(STUDENT *h); /*查找*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*读入记录*/
void computer(STUDENT *h); /*计算总分和均分*/
STUDENT *insert(STUDENT *h); /*插入记录*/
void append(); /*追加记录*/
void copy(); /*复制文件*/
STUDENT *sort(STUDENT *h); /*排序*/
STUDENT *index(STUDENT *h); /*索引*/
void total(STUDENT *h); /*分类合计*/
int menu_select(); /*菜单函数*/
/******主函数开始*******/
main()
{
int i;
STUDENT *head; /*链表定义头指针*/
head=init(); /*初始化链表*/
clrscr(); /*清屏*/
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{ /*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();break; /*执行初始化*/
case 1:head=create();break; /*创建链表*/
case 2:head=delete(head);break; /*删除记录*/
case 3:print(head);break; /*显示全部记录*/
case 4:search(head);break; /*查找记录*/
case 5:save(head);break; /*保存文件*/
case 6:head=load(); break; /*读文件*/
case 7:computer(head);break; /*计算总分和均分*/
case 8:head=insert(head); break; /*插入记录*/
case 9:copy();break; /*复制文件*/
case 10:head=sort(head);break; /*排序*/
case 11:append();break; /*追加记录*/
case 12:head=index(head);break; /*索引*/
case 13:total(head);break; /*分类合计*/
case 14:exit(0); /*如菜单返回值为14程序结束*/
}
}
}
/*菜单函数,返回值为整数*/
menu_select()
{
char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/
" 0. init list", /*初始化*/
" 1. Enter list", /*输入记录*/
" 2. Delete a record from list", /*从表中删除记录*/
" 3. print list ", /*显示单链表中所有记录*/
" 4. Search record on name", /*按照姓名查找记录*/
" 5. Save the file", /*将单链表中记录保存到文件中*/
" 6. Load the file", /*从文件中读入记录*/
" 7. compute the score", /*计算所有学生的总分和均分*/
" 8. insert record to list ", /*插入记录到表中*/
" 9. copy the file to new file", /*复制文件*/
" 10. sort to make new file", /*排序*/
" 11. append record to file", /*追加记录到文件中*/
" 12. index on nomber", /*索引*/
" 13. total on nomber", /*分类合计*/
" 14. Quit"}; /*退出*/
char s[3]; /*以字符形式保存选择号*/
int c,i; /*定义整形变量*/
gotoxy(1,25); /*移动光标*/
printf("press any key enter menu......
"); /*压任一键进入主菜单*/
getch(); /*输入任一键*/
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
gotoxy(10,2); /*移动光标*/
putch(0xc9); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xcd); /*输出上边框水平线*/
putch(0xbb); /*输出右上角边框 ┓*/
for(i=3;i<20;i++)
{
gotoxy(10,i);putch(0xba); /*输出左垂直线*/
gotoxy(54,i);putch(0xba);
} /*输出右垂直线*/
gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xcd); /*输出下边框水平线*/
putch(0xbc); /*输出右下角边框┛*/
window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr(); /*清屏*/
for(i=0;i<16;i++) /*输出主菜单数组*/
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
gotoxy(10,21); /*移动光标*/
do{
printf("
Enter you choice(0~14):"); /*在菜单窗口外显示提示信息*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整形数*/
}while(c14); /*选择项不在0~14之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
STUDENT *init()
{
return NULL;
}

/*创建链表*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info) /*如果指针info为空*/
{
printf("
out of memory"); /*输出内存溢出*/
return NULL; /*返回空指针*/
}
inputs("enter no:",info->no,11); /*输入学号并校验*/
if(info->no[0]=='@') break; /*如果学号首字符为@则结束输入*/
inputs("enter name:",info->name,15); /*输入姓名,并进行校验*/
printf("please input %d score
",N); /*提示开始输入成绩*/
s=0; /*计算每个学生的总分,初值为0*/
for(i=0;i<N;i++) /*N门课程循环N次*/
{
do{
printf("score%d:",i+1); /*提示输入第几门课程*/
scanf("%d",&info->score[i]); /*输入成绩*/
if(info->score[i]>100||info->score[i]<0) /*确保成绩在0~100之间*/
printf("bad data,repeat input
"); /*出错提示信息*/
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i]; /*累加各门课程成绩*/
}
info->sum=s; /*将总分保存*/
info->average=(float)s/N; /*求出平均值*/
info->order=0; /*未排序前此值为0*/
info->next=h; /*将头结点做为新输入结点的后继结点*/
h=info; /*新输入结点为新的头结点*/
}
return(h); /*返回头指针*/
}
/*输入字符串,并进行长度验证*/
inputs(char *prompt, char *s, int count)
{
char p[255];
do{
printf(prompt); /*显示提示信息*/
scanf("%s",p); /*输入字符串*/
if(strlen(p)>count)printf("
too long!
"); /*进行长度校验,超过count值重输入*/
}while(strlen(p)>count);
strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/
}
/*输出链表中结点信息*/
void print(STUDENT *h)
{
int i=0; /* 统计记录条数*/
STUDENT *p; /*移动指针*/
clrscr(); /*清屏*/
p=h; /*初值为头指针*/
printf("


****************************STUDENT********************************
");
printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|
");
printf("|---|----------|---------------|----|----|----|--------|-------|-----|
");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |
", i, p->no,p->name,p->score[0],p->score[1],
p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("**********************************end*********************************
");
}
/*删除记录*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/
char s[11]; /*存放学号*/
clrscr(); /*清屏*/
printf("please deleted no
"); /*显示提示信息*/
scanf("%s",s); /*输入要删除记录的学号*/
q=p=h; /*给q和p赋初值头指针*/
while(strcmp(p->no,s)&&p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/
{
q=p; /*将p指针值赋给q作为p的前驱指针*/
p=p->next; /*将p指针指向下一条记录*/
}
if(p==NULL) /*如果p为空,说明链表中没有该结点*/
printf("
list no %s student
",s);
else /*p不为空,显示找到的记录信息*/
{
printf("*****************************have found***************************
");
printf("|no | name | sc1| sc2| sc3| sum | ave |order|
");
printf("|----------|---------------|----|----|----|--------|-------|-----|
");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |
", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,
p->average,p->order);
printf("********************************end*******************************
");
getch(); /*压任一键后,开始删除*/
if(p==h) /*如果p==h,说明被删结点是头结点*/
h=p->next; /*修改头指针指向下一条记录*/
else
q->next=p->next; /*不是头指针,将p的后继结点作为q的后继结点*/
free(p); /*释放p所指结点空间*/
printf("
have deleted No %s student
",s);
printf("Don't forget save
");/*提示删除后不要忘记保存文件*/
}
return(h); /*返回头指针*/
}

http://www.henrysyw.cn/default.asp?cateID=14

给你一个看看
#include
#include
#include /*清屏*/
#include /*显示目录*/
#include
#define MAX 80
void input(); /*输入数据函数*/
void sort();/*排序数据函数*/
void sort1();
void sort2();
void sort3();
void display();/*显示数据函数*/
void display1();
void insert(); /*插入数据函数*/
void del(); /*删除数据函数*/
void average(); /*平均值函数*/
void find();/*查找数据函数*/
void find1();
void find2();
void save(); /*保存数据函数*/
void read(); /*读出数据函数*/
void del_file(); /*删除文件函数*/
void modify(); /*修改文件函数*/
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()/*主函数*/
{
int as;
char ch;
do{

start: printf("


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





******************按任意键继续********************");
ch=getch();
}
while(!ch);
system("cls");
/*一下为功能选择模块*/
do
{
printf("
1.录入学员信息
2.显示学员总成绩信息
3.对总成绩排序
4.显示学员单科成绩排序
5.添加学员信息
6.删除学员信息
7.修改学员信息
8.查询学员信息
9.从文件读入学员信息
10.删除文件中学员信息
11.保存学员信息
12.退出
");
printf("选择功能选项(输入所选功能前的数字):");
fflush(stdin);
/*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/
scanf("%d",&as);
switch(as)
{
case 1:system("cls");
input();
break;
case 2:system("cls");
display();
break;
case 3:system("cls");
sort();
break;
case 4:system("cls");
display1();
break;
case 5:system("cls");
insert();
break;
case 6:system("cls");
del();
break;
case 7:system("cls");
modify();
break;
case 8:system("cls");
find();
break;
case 9:system("cls");
read();
break;
case 10:system("cls");
del_file();
break;
case 11:system("cls");
save();
break;
case 12:system("exit");
exit(0);
default:system("cls");
goto start;
}
}while(1);/*while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break 或者return 跳出循环*/
/*至此功能选择结束*/
}

void input()/*原始数据录入模块*/
{
int i=0;
char ch;
do
{
printf("1.录入学员信息
输入第%d个学员的信息
",i+1);
printf("
输入学生编号:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("
输入学员姓名:");
fflush(stdin);
gets(stu[i].name);
printf("
输入学员性别:");
fflush(stdin);
gets(stu[i].sex);
printf("
输入学员成绩1:");
scanf("%f",&stu[i].score1);
printf("
输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("
输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("

");
i++;
now_no=i;
printf("是否继续输入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/*排序数据函数*/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
printf("排序以完成进入功能2可进行显示
");
system("pause");
system("cls");
}
void sort1()/*排序数据函数*/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].score1<stu[j].score1)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort2()/*排序数据函数*/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].score2<stu[j].score2)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort3()/*排序数据函数*/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].score3<stu[j].score3)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/*显示数据函数*/
{
int i;
char as;
average();
do
{
printf("班级学员信息列表
");
printf("编号姓名性别成绩1成绩2成绩3平均值
");
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("%d%s%s%.2f%.2f%.2f%.2f
",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf("按任意键返回主菜单.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void display1()/*显示数据函数*/
{
int i;
char as;
do
{
printf("班级学员score1成绩排序
");
printf("编号姓名性别成绩1
");
sort1();
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("%d%s%s%.2f
",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1);
printf("班级学员score2成绩排序
");
printf("编号姓名性别成绩2
");
sort2();
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("%d%s%s%.2f
",stu[i].no,stu[i].name,stu[i].sex,stu[i].score2);
printf("班级学员score3成绩排序
");
printf("编号姓名性别成绩3
");
sort3();
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("%d%s%s%.2f
",stu[i].no,stu[i].name,stu[i].sex,stu[i].score3);
printf("按任意键返回主菜单.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}

void insert()/*插入数据函数*/
{
char ch;
do
{
printf("
输入新插入学员队信息
");
printf("
输入学生编号:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("
输入学员姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("
输入学员性别:");
fflush(stdin);
gets(stu[now_no].sex);
printf("
输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("
输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("
输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("

");
now_no=now_no+1;
sort();
printf("是否继续输入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/*删除数据函数*/
{
int inum,i;
printf("输入要删除学员的编号:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/*保存数据函数*/
{
FILE *fp;
int i;
char filepath[20];
printf("输入要保存的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("
保存失败!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,"%d%s%s%.2f%.2f%.2f%.2f
",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
fclose(fp);
printf("学生信息已保存在%s中!
",filepath);
system("pause");
system("cls");
}
void find()/*查询函数*/
{
int i;
char str[20],as;
do
{
printf("输入要查询的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
printf("编号姓名性别成绩1成绩2成绩3平均值
");
printf("%d%s%s%.2f%.2f%.2f%.2f
",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("按任意键返回主菜单.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}


void average()/*求平均数*/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}
}
void modify()/*修改数据函数*/
{
int i;
char str[20];
printf("输入要修改的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
{
if(!strcmp(stu[i].name,str))
{
system("cls");
printf("
输入新插入学员队信息
");
printf("
输入学生编号:");
fflush(stdin);
scanf("%d",&stu[i].no);
printf("
输入学员性别:");
fflush(stdin);
gets(stu[i].sex);
printf("
输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("
输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("
输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("

");
sort();
break;
}
}
system("cls");
}

void read()
{
FILE *fp;
int i;
char filepath[20];
printf("输入要读入的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!
",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"%d%s%s%f%f%f%f
",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已经读入!
",filepath);
system("pause"); /*按任意键继续*/
system("cls");
}

void del_file()
{
FILE *fp;
char filepath[20];
printf("输入要删除的文件路径:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已经删除!
",filepath);
system("pause");
system("cls");
}

这是我以前写的,也许不和你的要求,但你可以参考参考,对你有用
struct Teacher
{
char t_name[20];
int t_age;
char t_job[20];
char t_jobPlace[20];
struct Teacher *next;

};

struct Student
{
char s_name[20];
int s_age;
char s_zhuanye[30];
int s_class;
struct Student *next;

};//保存在Teacher.h文件中

#include<stdio.h>
#include <string.h>
#include "Teacher.h"
extern char operate;
extern char operate_object ;
extern int s_flag;
extern int t_flag;
Teacher teacher;
Teacher *T;
Teacher *nt;
Student student;
Student *S;
Student *ns;

Input()
{
flushall();
extern Operate();

//printf("%c",operate);

printf("请您选择您所需要进行操作的对象\n");
printf(" 学生(S) 老师(T)\n");
scanf("%c", &operate_object);
//printf("%c\n", operate_object);
switch(operate_object)
{
case 's' :
s_flag++;
flushall();
printf("\n请您输入学生姓名:");
scanf("%s", &student.s_name);
printf("\n请您输入学生年龄:");
scanf("%d", &student.s_age);
printf("\n请您输入学生的专业:");
scanf("%s", &student.s_zhuanye);
printf("\n请您输入学生班级:");
scanf("%d", &student.s_class);
ns = (Student *)malloc(sizeof(Student));
strcpy(ns -> s_name , student.s_name);
ns -> s_age = student.s_age;
strcpy(ns -> s_zhuanye , student.s_zhuanye);
ns -> s_class = student.s_class;
ns -> next = S -> next;
S -> next = ns;
Operate();
break;

case 'S' :
s_flag++;
flushall();
printf("\n请您输入学生姓名:");
scanf("%s", &student.s_name);
printf("\n请您输入学生年龄:");
scanf("%d", &student.s_age);
printf("\n请您输入学生的专业:");
scanf("%s", &student.s_zhuanye);
printf("\n请您输入学生班级:");
scanf("%d", &student.s_class);
ns = (Student *)malloc(sizeof(Student));
strcpy(ns -> s_name , student.s_name);
ns -> s_age = student.s_age;
strcpy(ns -> s_zhuanye , student.s_zhuanye);
ns -> s_class = student.s_class;
ns -> next = S -> next;
S -> next = ns;
Operate();
break;

case 't' :
t_flag++;
flushall();
printf("\n请您输入老师姓名:");
scanf("%s", &teacher.t_name);
printf("\n请您输入老师年龄:");
scanf("%d", &teacher.t_age);
printf("\n请您输入老师所教课程:");
scanf("%s", &teacher.t_job);
printf("\n请您输入老师办公室:");
scanf("%s", &teacher.t_jobPlace);
nt = (Teacher *)malloc(sizeof(Teacher));
strcpy(nt -> t_name , teacher.t_name);
nt -> t_age = teacher.t_age;
strcpy(nt -> t_job , teacher.t_job);
strcpy(nt -> t_jobPlace, teacher.t_jobPlace);
nt -> next = T -> next;
T -> next = nt;
Operate();
break;

case 'T' :
t_flag++;
flushall();
printf("\n请您输入老师姓名:");
scanf("%s", &teacher.t_name);
printf("\n请您输入老师年龄:");
scanf("%d", &teacher.t_age);
printf("\n请您输入老师所教课程:");
scanf("%s", &teacher.t_job);
printf("\n请您输入老师的办公室:");
scanf("%s", &teacher.t_jobPlace);
nt = (Teacher *)malloc(sizeof(Teacher));
strcpy(nt -> t_name , teacher.t_name);
nt -> t_age = teacher.t_age;
strcpy(nt -> t_job , teacher.t_job);
strcpy(nt -> t_jobPlace, teacher.t_jobPlace);
nt -> next = T -> next;
T -> next = nt;
Operate();
break;

default :
printf("您输入的操作数不合法,请重新输入\n");
Input();
break;

}

}//保存在Input.h文件中,作用是输入操作

#include<stdio.h>
#include "Input.h"
extern Operate();
extern char operate;
extern char operate_object ;
extern int s_flag;
extern int t_flag;
extern Teacher *T;
extern Student *S;
struct Student *S_node;
struct Student *S1;
struct Teacher *T1;
struct Teacher *T_node;

Output()
{
flushall();
extern Input();
printf("请您输入要进行操作的对象\n");
printf("\n学生(S) 老师(T)\n");
scanf("%c", &operate_object);
if(operate_object == 's' || operate_object == 'S')
{
flushall();
if(s_flag != 0)
{
while(S_node != NULL)
{
printf("%s,%d,%s,%d\n",S1 -> next -> s_name, S1 -> next -> s_age, S1 -> next -> s_zhuanye, S1 -> next -> s_class);
S1 = S1 -> next;
S_node = S1 -> next;
}
printf("\n输出完毕\n");
Operate();
}
else
{
printf("\n没有可进行输出的对象,请进行其它操作\n");
Operate();

}
}

if(operate_object == 't' || operate_object == 'T')
{
flushall();
if(t_flag != 0)
{
while(T_node != NULL)
{
printf("%s,%d,%s,%s\n",T1 -> next -> t_name, T1 -> next -> t_age, T1 -> next -> t_job, T1 -> next -> t_jobPlace);
T1 = T1 -> next;
T_node = T1 -> next;
}

}
else
{
printf("\n没有可进行输出的对象,请进行其它操作\n");
Operate();

}
}

}
//保存在Output.h文件中,用于输出操作

#include<stdio.h>
#include <string.h>
#include "Search.h"
char operate = 's';
char operate_object = 's';
int s_flag = 0;
int t_flag = 0;
extern Output();
extern Search();
//extern Delete();
extern Teacher *T;
extern Student *S;
extern Teacher *nt;
extern Student *ns;

Operate()
{
flushall();
char q_sure;
printf("\n请您选择您所需要进行的操作\n");
printf(" i或者I代表输入操作\n");
printf(" o或者O代表输出操作\n");
printf(" s或者S代表查询操作\n");
printf(" d或者D代表删除操作\n");
printf(" q或者Q代表退出操作\n\n");
scanf("%c",&operate);
//printf("%d,%d",&operate,&operate_object);
switch(operate)
{
case 'i' :
flushall();
Input();
break;

case 'I' :
flushall();
Input();
break;

case 'o' :
flushall();
Output();
break;

case 'O' :
flushall();
Output();
break;
case 's' :
flushall();
Search();
break;
case 'S' :
flushall();
Search();
break;
case 'd' :
flushall();
// Delete();
break;
case 'D':
flushall();
// Delete();
break;

case 'q' :
flushall();
printf("\n您确认要退出吗???\n");
printf("\n确认(Y) 取消(N)\n");
scanf("%c", &q_sure);
if(q_sure == 'Y' || q_sure == 'y')
{
break;

}
if(q_sure == 'N' || q_sure == 'n')
{
Operate();

}

case 'Q' :
flushall();
printf("\n您确认要退出吗???\n");
printf("\n确认(Y) 取消(N)\n");
scanf("%c", &q_sure);
if(q_sure == 'Y' || q_sure == 'y')
{
break;

}
if(q_sure == 'N' || q_sure == 'n')
{
Operate();

}
break;

default :

printf("您输入的操作数不合法,请重新输入\n");
Operate();
break;

}

}
//保存在Operate.h文件中,用于选择你所要执行的操作

#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>

using namespace std;

#define max 100;

class student
{
public:
student *next;
public:
string name;//姓名
long num;//学号
int x,y,z;//数学,语文,英语
int AA;//总分
void play(){cout<<name<<"学生的学号是"<<num<<",数学:"<<x<<",语文:"<<y<<",英语:"<<z<<",总分:"<<AA<<endl;};
student(string sname,long snum,int sx,int sy,int sz)
{
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
};

class cla
{
public:
cla()//构造函数
{
stu=0;
sload();
}
~cla()//析构函数
{
student *p;
p=stu;
while(p)
{
p=p->next;
delete stu;
stu=p;
}
stu=0;
}
void sadd(); //添加
void sremove(); //删除
void samend(); //修改
void ssearch(); //查询
void staxis(); //排序
void ssave(); //保存
void sload(); //读取

//排序函数
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
private:
student *stu; //头接点
};

void cla::sadd()//添加
{
student *q;
string name1;
long num1;
int x1,y1,z1;

system("cls");
cout<<"\n **增加的学生** \n"<<endl;
cout<<"请输入学生的(中间用空格间隔) "<<endl;
cout<<"姓名 学号 数学成绩 语文成绩 英语成绩:"<<endl;
cin>>name1>>num1>>x1>>y1>>z1;

q=new student(name1,num1,x1,y1,z1);
q->next=0;
q->AA=x1+y1+z1;

if(stu)
{
student *t;
t=stu;
if(t->num==num1)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
while(t->next)
{
if(t->num==num1)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
t=t->next;
}
t->next=q;
}
else
{
stu=q;
}
cout<<"输入完毕"<<endl;
}

void cla::sremove()//删除
{
system("cls");
int num1;
cout<<"\n** 删除学生信息 **\n";
cout<<"请输入想要删除学生的学号:";
cin>>num1;

//查找要删除的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

//删除结点
if(p1!=NULL)//若找到结点,则删除
{
p1->play();
cout<<"确定删除吗?[Y/N]"<<endl;
char c;cin>>c;
if(toupper(c)!='Y') return;

if(p1==stu) //若要删除的结点是第一个结点
{
stu=p1->next;
delete p1;
}
else //若要删除的结点是后续结点
{
p2->next=p1->next;
delete p1;
}
cout<<"找到学号为"<<num1<<"的学生,并删除\n";
}
else //未找到结点
cout<<"未找到想要删除的学生!\n";
}

void cla::samend()//修改
{
system("cls");
long num1;
cout<<"\n** 修改学生信息 **\n";
cout<<"输入要修改学生的学号";
cin>>num1;

//查找要修改的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!=NULL)
{
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名 "<<p1->name<<"数学"<<p1->x<<"语文"<<p1->y<<"英语"<<p1->z<<endl;
cout<<"请输入修改后的信息:姓名 数学成绩 语文成绩 英语成绩"<<endl;
cin>>p1->name>>p1->x>>p1->y>>p1->z;
p1->AA=p1->x+p1->y+p1->z;
cout<<"修改成功"<<endl;
}
else //未找到接点
cout<<"未找到!\n";
}

void cla::ssearch()//查询
{
system("cls");
cout<<"\n** 查询学生信息 **\n"<<endl;
cout<<"请输入查询方式:"<<endl;
cout<<"1.按学号查询"<<endl;
cout<<"2.按姓名查询"<<endl;
cout<<"3.返回"<<endl;
char c; cin>>c;
switch (c)
{
case '1':
{
long num1;
cout<<"要查询的学号"<<endl;
cin>>num1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<"学号是"<<num1<<"的学生的信息"<<endl;
cout<<"姓名:"<<p1->name<<" 数学:"<<p1->x<<" 语文:"<<p1->y<<" 英语:"<<p1->z<<endl;
cout<<"查询完毕...";
}
else //未找到接点
cout<<"未找到!\n";
break;
}
case '2':
{
string name1;
cout<<"要查询的学生姓名"<<endl;
cin>>name1;
//查找要查询的结点
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->name==name1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<name1<<"的学生的信息"<<endl;
cout<<"学号:"<<p1->num<<" 数学:"<<p1->x<<" 语文:"<<p1->y<<" 英语:"<<p1->z<<endl;
cout<<"查询完毕...";
}
else //未找到接点
cout<<"未找到!\n";
break;
}
case '3': return;
}

}

void cla::pxh() //按学号排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{
p1=stu;
if (p1->num>p1->next->num) // 如果头结点大于第二个的
{
p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{
p2=p1;
p1=p1->next;
if(p1->num>p1->next->num)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}

p1=stu;
do
{
p1->play();
p1=p1->next;
}while(p1);
}

void cla::psx()//按数学成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->x>p1->next->x) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->x>p1->next->x)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pyw()//按语文成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->y>p1->next->y) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->y>p1->next->y)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pyy()//按英语成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->z>p1->next->z) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->z>p1->next->z)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pAA()//按总分排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->AA>p1->next->AA) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->AA>p1->next->AA)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::staxis()//排序
{

system("cls");
char c;
cout<<"请选择以何种方式排序:"<<endl;
cout<<"1……以学号排序"<<endl;
cout<<"2……以数学成绩排序"<<endl;
cout<<"3……以语文成绩排序"<<endl;
cout<<"4……以英语成绩排序"<<endl;
cout<<"5……以总分排序"<<endl;
cout<<"6……返回"<<endl;
cout<<"请选择(1-6)"<<endl;
cin>>c;

switch (c)
{
case '1':pxh(); break;
case '2':psx(); break;
case '3':pyw(); break;
case '4':pyy(); break;
case '5':pAA(); break;
case '6':return;
}

}

void cla::ssave() //保存到文件
{
system("cls");
char c;
cout<<"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;

ofstream tfile("date.txt",ios_base::binary);
student *p=stu;
while(p)// 写入文件
{
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;
tfile<<endl;
p=p->next;
}
tfile.close();
cout<<"保存完毕..."<<endl;
}

void cla::sload() //读取
{
student *p;
p=stu;
while(p)
{
stu=p->next;
delete p;
p=stu;
}

ifstream tfile("date.txt",ios_base::binary);

string name1;
long num1;
int x1,y1,z1;

tfile>>name1>>num1>>x1>>y1>>z1;
while(tfile.good())
{
//创建学生接点
student *s;
s=stu;
s=new student(name1,num1,x1,y1,z1);
s->next=0;
s->AA=x1+y1+z1;
if(stu) //若已经存在结点
{
student *p2;
p2=stu;
while(p2->next) //查找尾结点
{
p2=p2->next;
}
p2->next=s; //连接
}
else //若不存在结点(表空)
{
stu=s; //连接
}
tfile>>name1>>num1>>x1>>y1>>z1;
}
tfile.close();
cout<<"\n学生信息已经装入...\n";

}

int main()
{
char c;
cla a;
do
{
cout<<"\n 学 生 成 绩 管 理 系 统 \n";
cout<<"**************************************\n";
cout<<" 作者:软件工程06110119:zgjxwl \n";
cout<<" 1……增加学生 \n";
cout<<" 2……删除学生 \n";
cout<<" 3……修改学生 \n";
cout<<" 4……查询学生信息 \n";
cout<<" 5……排序 \n";
cout<<" 6……保存信息 \n";
cout<<" 7……读取信息 \n";
cout<<" 8……退出 \n";
cout<<"**************************************\n";
cout<<"请选择(1-8):";
cin>>c;
switch(c)
{
case '1': a.sadd();break;
case '2': a.sremove();break;
case '3': a.samend();break;
case '4': a.ssearch();break;
case '5': a.staxis();break;
case '6': a.ssave();break;
case '7': a.sload();break;
}

}while(c!='8');
}

#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
#define N 3 /*定义常数*/
typedef struct z1 /*定义数据结构*/
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
/*以下是函数原型*/
STUDENT *init(); /*初始化函数*/
STUDENT *create(); /*创建链表*/
STUDENT *delete(STUDENT *h); /*删除记录*/
void print(STUDENT *h); /* 显示所有记录*/
void search(STUDENT *h); /*查找*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*读入记录*/
void computer(STUDENT *h); /*计算总分和均分*/
STUDENT *insert(STUDENT *h); /*插入记录*/
void append(); /*追加记录*/
void copy(); /*复制文件*/
STUDENT *sort(STUDENT *h); /*排序*/
STUDENT *index(STUDENT *h); /*索引*/
void total(STUDENT *h); /*分类合计*/
int menu_select(); /*菜单函数*/
/******主函数开始*******/
main()
{
int i;
STUDENT *head; /*链表定义头指针*/
head=init(); /*初始化链表*/
clrscr(); /*清屏*/
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{ /*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();break; /*执行初始化*/
case 1:head=create();break; /*创建链表*/
case 2:head=delete(head);break; /*删除记录*/
case 3:print(head);break; /*显示全部记录*/
case 4:search(head);break; /*查找记录*/
case 5:save(head);break; /*保存文件*/
case 6:head=load(); break; /*读文件*/
case 7:computer(head);break; /*计算总分和均分*/
case 8:head=insert(head); break; /*插入记录*/
case 9:copy();break; /*复制文件*/
case 10:head=sort(head);break; /*排序*/
case 11:append();break; /*追加记录*/
case 12:head=index(head);break; /*索引*/
case 13:total(head);break; /*分类合计*/
case 14:exit(0); /*如菜单返回值为14程序结束*/
}
}
}
/*菜单函数,返回值为整数*/
menu_select()
{
char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/
" 0. init list", /*初始化*/
" 1. Enter list", /*输入记录*/
" 2. Delete a record from list", /*从表中删除记录*/
" 3. print list ", /*显示单链表中所有记录*/
" 4. Search record on name", /*按照姓名查找记录*/
" 5. Save the file", /*将单链表中记录保存到文件中*/
" 6. Load the file", /*从文件中读入记录*/
" 7. compute the score", /*计算所有学生的总分和均分*/
" 8. insert record to list ", /*插入记录到表中*/
" 9. copy the file to new file", /*复制文件*/
" 10. sort to make new file", /*排序*/
" 11. append record to file", /*追加记录到文件中*/
" 12. index on nomber", /*索引*/
" 13. total on nomber", /*分类合计*/
" 14. Quit"}; /*退出*/
char s[3]; /*以字符形式保存选择号*/
int c,i; /*定义整形变量*/
gotoxy(1,25); /*移动光标*/
printf("press any key enter menu......\n"); /*压任一键进入主菜单*/
getch(); /*输入任一键*/
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
gotoxy(10,2); /*移动光标*/
putch(0xc9); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xcd); /*输出上边框水平线*/
putch(0xbb); /*输出右上角边框 ┓*/
for(i=3;i<20;i++)
{
gotoxy(10,i);putch(0xba); /*输出左垂直线*/
gotoxy(54,i);putch(0xba);
} /*输出右垂直线*/
gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xcd); /*输出下边框水平线*/
putch(0xbc); /*输出右下角边框┛*/
window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr(); /*清屏*/
for(i=0;i<16;i++) /*输出主菜单数组*/
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
gotoxy(10,21); /*移动光标*/
do{
printf("\n Enter you choice(0~14):"); /*在菜单窗口外显示提示信息*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整形数*/
}while(c<0||c>14); /*选择项不在0~14之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
STUDENT *init()
{
return NULL;
}

/*创建链表*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info) /*如果指针info为空*/
{
printf("\nout of memory"); /*输出内存溢出*/
return NULL; /*返回空指针*/
}
inputs("enter no:",info->no,11); /*输入学号并校验*/
if(info->no[0]=='@') break; /*如果学号首字符为@则结束输入*/
inputs("enter name:",info->name,15); /*输入姓名,并进行校验*/
printf("please input %d score \n",N); /*提示开始输入成绩*/
s=0; /*计算每个学生的总分,初值为0*/
for(i=0;i<N;i++) /*N门课程循环N次*/
{
do{
printf("score%d:",i+1); /*提示输入第几门课程*/
scanf("%d",&info->score[i]); /*输入成绩*/
if(info->score[i]>100||info->score[i]<0) /*确保成绩在0~100之间*/
printf("bad data,repeat input\n"); /*出错提示信息*/
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i]; /*累加各门课程成绩*/
}
info->sum=s; /*将总分保存*/
info->average=(float)s/N; /*求出平均值*/
info->order=0; /*未排序前此值为0*/
info->next=h; /*将头结点做为新输入结点的后继结点*/
h=info; /*新输入结点为新的头结点*/
}
return(h); /*返回头指针*/
}
/*输入字符串,并进行长度验证*/
inputs(char *prompt, char *s, int count)
{
char p[255];
do{
printf(prompt); /*显示提示信息*/
scanf("%s",p); /*输入字符串*/
if(strlen(p)>count)printf("\n too long! \n"); /*进行长度校验,超过count值重输入*/
}while(strlen(p)>count);
strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/
}
/*输出链表中结点信息*/
void print(STUDENT *h)
{
int i=0; /* 统计记录条数*/
STUDENT *p; /*移动指针*/
clrscr(); /*清屏*/
p=h; /*初值为头指针*/
printf("\n\n\n****************************STUDENT********************************\n");
printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],
p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("**********************************end*********************************\n");
}
/*删除记录*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/
char s[11]; /*存放学号*/
clrscr(); /*清屏*/
printf("please deleted no\n"); /*显示提示信息*/
scanf("%s",s); /*输入要删除记录的学号*/
q=p=h; /*给q和p赋初值头指针*/
while(strcmp(p->no,s)&&p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/
{
q=p; /*将p指针值赋给q作为p的前驱指针*/
p=p->next; /*将p指针指向下一条记录*/
}
if(p==NULL) /*如果p为空,说明链表中没有该结点*/
printf("\nlist no %s student\n",s);
else /*p不为空,显示找到的记录信息*/
{
printf("*****************************have found***************************\n");
printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,
p->average,p->order);
printf("********************************end*******************************\n");
getch(); /*压任一键后,开始删除*/
if(p==h) /*如果p==h,说明被删结点是头结点*/
h=p->next; /*修改头指针指向下一条记录*/
else
q->next=p->next; /*不是头指针,将p的后继结点作为q的后继结点*/
free(p); /*释放p所指结点空间*/
printf("\n have deleted No %s student\n",s);
printf("Don't forget save\n");/*提示删除后不要忘记保存文件*/
}
return(h); /*返回头指针*/
}


编写C语言程序处理若干个学生的信息,每个学生的信息包括:学号、姓名...
include<stdio.h> define N 5 struct student { long num;char name[10];int score[3];float avr;};int main(void){ \/\/这里定义了N个学生信息 struct student stu[N];\/\/下面的数据用来存储过程变量值 int i,s=0,j,h;\/\/ double aver;\/\/定义3个最大值和和值,用来分别统计3门课程的最...

用c语言编一个程序:有10个学生,每个学生的数据包括:学号、姓名、三门...
include<stdio.h> include"stdlib.h" \/\/用于system("pause...");语句 include"math.h" \/\/用于函数7 include"string.h"include"iostream.h" \/\/fflush(stdin);int q=0,p=0;struct stu { char name[100];char cour[10];float score[100];};float f031(struct stu a[]){ float...

用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)
puts("输入第一个学生的学号:");scanf("%ld",&p1->num);puts("输入此学生成绩:\\n英语:");scanf("%f",&p1->score.english);puts("数学:");scanf("%f",&p1->score.math);puts("计算机:");scanf("%f",&p1->score.computer);total_and_aver(p1);\/*计算总分和平均分*\/ p1->grade=...

C语言编写学生信息录入 信息包括学号 姓名 性别 年龄 成绩 能实现学生...
include "iostream"include "String.h"using namespace std;struct List { char name[20];int NO;};template <class List> struct Node { List data;Node<List> *next;};template <class List> class Student { Node<List> *head;public:Student(int m);void Setdata(int n);void Print...

C语言编程题:有10个学生,每个学生数据包括学号,姓名,3门课的成绩,从键...
include(stdio.h)main(){struct student {long number;char name[20];float score[4];}person[10];int i;printf("请输入10名学生的学号、姓名、及三门成绩:");for(i=0;i<10;i++)scanf("%d,%s,%d,%d,%d",&person[i]->number,person[i]->name,&person->score[0],&person->score[...

编写程序,实现读取学生的学号和英语成绩信息,并输出?
以下是用 Python 语言编写的程序,实现读取学生的学号和英语成绩信息,并输出的功能:定义学生信息类 class Student:def __init__(self, id, name, score):self.id = id self.name = name self.score = score 定义读取学生信息的函数 def read_student_info():student_list = []while True:id...

C语言 编写程序处理10个学生的信息,每个学生的信息包括:学号、姓名...
include <stdio.h> define NUM 10 define SHOW 3 struct student { int id; \/\/学号 char name[20]; \/\/名字 float score[3]; \/\/3门成绩 float average; \/\/平均分 }info[NUM];void getdata() \/\/接受学生数据 { int i;for(i=0; i<NUM; i++){ printf("please input the %d student...

C语言程序设计 学生信息管理系统
【功能要求】(1)学生信息包括:学号,姓名,性别,出生(年,月,日),三门课成绩和总分(数学,英语,C语言,总分)。(2)数据格式:测试数据,以文件方式提供,studf.txt,数据文件自己建... 【功能要求】(1)学生信息包括:学号,姓名,性别,出生(年,月,日),三门课成绩和总分( 数学, 英语, C语言, 总分)。(2)数据格...

求C语言高手编写学生信息管理系统
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息... 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:(1) 系统以菜单方式...

用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别...
\/ 用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,还有三门课比如语,数,外的成绩 \/ \/\/FileName: stuinfo.c include <stdio.h> include <stdlib.h> include <string.h> define SERIALLEN 20 define COURSENUM 3 typedef struct { char course[SERIALLEN];float score;}...

八公山区17381843910: 编程如何用C语言编写一个学生成绩管理系统程序 -
强曹珠珀: 我们才做了这个作业... #include <malloc.h> #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct scorenode) #define DEBUG #include <string.h> struct scorenode { int number;/*学号*/ char name[8];/*姓名*/ float cj1;/*成绩1*/ ...

八公山区17381843910: 求助C语言中学生管理系统课题的重点和难点 -
强曹珠珀: 学生管理系统的话: 首先系统可以用结构体数组实现,也可以用链表.重点就是对数组的操作,比如求和,平均值,排序.如果是链表实现,那就是链表的增删改查排序.还有比较重要的就是文件操作,很固定的知识.

八公山区17381843910: 用C语言编写一个学生信息管理系统
强曹珠珀: #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" jiemian();struct student { char name[50]; char sex[5]; int age; char num[50]; float score1; float score2; float score3; float sum; float ave;}stu[50],del; void gn1() {int...

八公山区17381843910: C语言编写学员信息管理系统
强曹珠珀: #include <stdio.h> #include <stdlib.h> #include <conio.h> struct student { int no; char name[20]; float score[2]; float avg; }; struct student input(); //单个学员信息录入 void display(struct student [],int); //显示所有学员信息 void sort(struct student [],int...

八公山区17381843910: c语言编写学生信息管理系统 -
强曹珠珀: #include"stdio.h" #define SIZE 100000 #include"string.h" #include"stdlib.h" #include"conio.h" struct student {int n; int num; char name[10]; int C; int Maths; int En; float ave; }stu[SIZE]; /*录入数据*/ void finput() { FILE *fp; int i,p; fp=fopen(...

八公山区17381843910: c语言学生信息管理系统 -
强曹珠珀: #include #include struct student{int no;char name[20];float score[2];float avg;};struct student input(); //单个学员信息录入void display(struct student [],int); //显示所有学员信息void sort(struct student [],int); //排序int find(struct student[],int,int); ...

八公山区17381843910: 如何用C语言编写学生信息管理系统 -
强曹珠珀: 参考如下学生信息管理系统的C源代码吧.#include <stdio.h>#include <string.h>/*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; };/*声明学生数组及学生数量*/ struct Student ...

八公山区17381843910: C程序设计学生信息管理系统 -
强曹珠珀: #include#include typedef struct student{ int id;//学号 char name[20]; int score; struct student *next;}stu,*spt;typedef struct{ spt head;...

八公山区17381843910: 用C语言编写一个学生管理系统
强曹珠珀: 我有源程序,你能给多少分? 题目: 1、用C语言实现基于Dos操作系统的“学生成绩管理系统”. 2、系统启动进入后,弹出“学生成绩管理系统”的用户界面,用户通过界面选择成绩管理系统的各种功能,包括“退出”功能.(5分) 3、用户...

八公山区17381843910: c语言学生学籍管理系统 -
强曹珠珀: #include <iostream> #include <fstream> #include <string> #include <conio.h>//用getch(); using namespace std; /*程序中一般用i表示学生序号,j表示科目序号 *其他循环变量用k,m,n表示 *最多统计10科50人的成绩信息 *temname用于临时储存姓...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网