本文目录一览:
- 1、学生信息管理系统C语言编程
- 2、一个学生学籍信息管理系统VB+SQL的
学生信息管理系统C语言编程
#include"stdio.h"#include"stdlib.h"
#include"string.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 *del(STUDENT *h);
void print(STUDENT *h);
void search1(STUDENT *h);
void search3(STUDENT *h);
STUDENT *insert(STUDENT *h);
void sort(STUDENT *h);
void save(STUDENT *h);
void tongji(STUDENT *h);
int menu_select();
STUDENT *load();
void inputs(char *prompt,char *s,int count);
STUDENT *load();
main()
{
int i;
STUDENT *head;
head=init();
for(;;)
{
switch(menu_select())
{
case 0:head=init();break;
case 1:head=create();break;
case 2:head=insert(head);break;
case 3:save(head);break;
case 4:print(head);break;
case 5:search1(head);break;
case 6:head=del(head);break;
case 7:sort(head);break;
case 8:tongji(head);break;
case 9:search3(head);break;
case 10:exit(0);
}
}
}
int menu_select()
{
char *menu[]={"************菜单************",
"0. 初始化链表",
"1. 输入学生成绩",
"2. 插入学生成绩",
"3. 保存学生记录",
"4. 显示学生记录",
"5. 按学号查找学生信息",
"6. 删除指定学号的学生信息",
"7. 按某一门课对学生成绩排序",
"8. 统计某门课程的学生成绩",
"9. 按姓名查找学生信息",
"10. 退出系统"};
char s[3];
int c,i;
for(i=0;i<=11;i++)
printf(" %s\n",menu[i]);
do
{
printf("\n请选择0~10中的某一个选项\n");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>10);
return c;
}
STUDENT *init()
{
return NULL;
}
STUDENT *create()
{
int i;int s;
STUDENT *h=NULL,*info;
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT));
if(!info)
{
printf("\n内存不足");
return NULL;
}
inputs("输入学号:",info->no,11);
if(info->no[0]=='@')break;
inputs("输入姓名:",info->name,15);
printf("开始输入%d门课的成绩\n",N);
s=0;
for(i=0;i{ do{ printf("第%d门分数:",i+1); scanf("%d",&info->score[i]); if(info->score[i]>100||info->score[i]<0) printf("输入成绩错误,请重新输入:\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; info->next=h; h=info; } return h; } void inputs(char *prompt,char *s,int count) { char p[255]; do { printf(prompt); scanf("%s",p); if(strlen(p)>count) printf("\n太长了!\n"); }while(strlen(p)>count); strcpy(s,p); } void print(STUDENT *h) { int i=0; STUDENT *p; p=h; printf("\n\n\n***********************学生***********************\n"); printf("|序号|学号 | 姓名 | 语文 | 英语 |数学 | 总分 |平均分 |名次 |\n"); printf("|---|-------|--------|----|----|----|------|------|---|\n"); while(p!=NULL) { i++; printf("|%3d |%-10s|%-8s|%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 *del(STUDENT *h) { STUDENT *p,*q; char s[11]; printf("请输入要删除的学生的学号\n"); scanf("%s",s); q=p=h; while(strcmp(p->no,s)&&p!=NULL) { q=p; p=p->next; } if(p==NULL) printf("\n链表中没有学号为%s的学生\n",s); else { printf("\n\n\n***********************找到了***********************\n"); printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n"); printf("|----------|----------|----|----|----|------|------|---|\n"); printf("|%-10s|%-8s|%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"); printf("请按任意键删除\n"); getchar(); if(p==h) h=p->next; else q->next=p->next; free(p); printf("\n已经删除学号为%s的学生\n",s); printf("不要忘了保存数据\n"); } return h; } void search1(STUDENT *h) { STUDENT *p; char s[11]; printf("请输入你要查找的同学的学号\n"); scanf("%s",s); p=h; while(strcmp(p->no,s)&&p!=NULL) p=p->next; if(p==NULL) printf("'n没有学号为%s的学生\n",s); else { printf("\n\n\n***********************找到了***********************\n"); printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n"); printf("|----------|-----------|----|----|----|------|------|---|\n"); printf("|%-10s|%-8s|%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"); } } void search3(STUDENT *h) { STUDENT *p; char s[11]; printf("请输入你要查找的同学的姓名\n"); scanf("%s",s); p=h; while(strcmp(p->name,s)&&p!=NULL) p=p->next; if(p==NULL) printf("\n没有姓名为%s的学生\n",s); else { printf("\n\n\n***********************找到了***********************\n"); printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n"); printf("|----------|-----------|----|----|----|------|------|---|\n"); printf("|%-10s|%-8s|%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"); } } STUDENT *insert(STUDENT *h) { STUDENT *p,*q,*info; char s[11]; int s1,i; printf("请输入插入点的学生学号\n"); scanf("%s",s); printf("\n请输入新的学生信息\n"); info=(STUDENT *)malloc(sizeof(STUDENT)); if(!info) { printf("\n内存不足!"); return NULL; } inputs("输入学号:",info->no,11); inputs("输入姓名:",info->name,15); printf("请输入%d门课的分数\n",N); s1=0; for(i=0;i { do{ printf("分数%d",i+1); scanf("%d",&info->score[i]); if(info->score[i]>100||info->score[i]<0) printf("输入数据有误,请重新输入\n"); }while(info->score[i]>100||info->score[i]<0); s1=s1+info->score[i]; } info->sum=s1; info->average=(float)s1/N; info->order=0; info->next=NULL; p=h; q=h; while(strcmp(p->no,s)&&p!=NULL) {q=p;p=p->next;} if(p==NULL) if(p==h) h=info; else q->next=info; else if(p==h) { info->next=p; h=info; } else { info->next=p; q->next=info; } printf("\n已经插入了%s这个学生\n",info->name); printf("----不要忘了存盘啊--\n"); return(h); } void save(STUDENT *h) { FILE *fp; STUDENT *p; char outfile[10]; printf("请输入保存文件的文件名,例如 c:\\f1\\te.txt:\n"); scanf("%s",outfile); if((fp=fopen(outfile,"wb"))==NULL) { printf("不能打开文件\n"); exit(1); } printf("\n正在保存......\n"); p=h; while(p!=NULL) { fwrite(p,sizeof(STUDENT),1,fp); p=p->next; } fclose(fp); printf("------保存成功!!!------\n"); } void sort(STUDENT *h) { int i=0,j; STUDENT *p,*q,*t,*h1; printf("请输入要按哪门课程的编号来排序:(0.语文 1.数学 2.英语)\n"); scanf("%d",&j); h1=h->next; h->next=NULL; while(h1!=NULL) { t=h1; h1=h1->next; p=h; q=h; while(t->score[j]score[j]&&p!=NULL) { q=p; p=p->next; } if(p==q) { t->next=p; h=t; } else { t->next=p; q->next=t; } } p=h; while(p!=NULL) { i++; p->order=i; p=p->next; } print(h); printf("排序成功!!!\n"); } void tongji(STUDENT *h) { STUDENT *p; int a,b,i; printf("请输入课程编号\n"); scanf("%d",&i); printf("请输入分数段:\n"); scanf("%d,%d",&a,&b); p=h; while(p!=NULL) { printf("\n\n\n***********************找到了***********************\n"); if(p->score[i]>=a&&p->score[i]<=b) { printf("|学号 | 姓名 | 语文 | 英语 | 数学 | 总分 | 平均分 | 名次 |\n"); printf("|--------|---------|----|----|----|------|------|---|\n"); printf("|%-10s|%-8s|%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); } p=p->next; } printf("***********************end***********************\n"); }




![[分享]杭州儿童居住证处理流程创造11个家庭情境超越一切](/uploab/small-mp2ycl0leof.png)
