学生成绩管理系统c语言代码.docx
- 文档编号:13327588
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:10
- 大小:20.20KB
学生成绩管理系统c语言代码.docx
《学生成绩管理系统c语言代码.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统c语言代码.docx(10页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统c语言代码
#include<stdio.h>ﻫ#include<dos.h>ﻫ#defineN sizeof(structSTH)ﻫ#defineGESHI "%-10ld%-10s%-5s%-4d/%-2d/%-4d%-12s%-12s%s\n"
#definePRINTF "学号 姓名 性别 生 日 系别 班级 家庭住址\n"
struct STH*readfile();/*声明*/ﻫintinsert(structSTH**);
intn=0;
struct dtﻫ{ﻫ intyear; /*全局变量*/ﻫ intmonth;
intday;
};ﻫstructSTHﻫ{
longnum; /*学号不能以0开头*/
charname[9];
charsex[5];ﻫ structdtbirth;
charxi[20];ﻫ charban[20];ﻫ charadd[30];ﻫ structSTH* next;ﻫ}*head;
/*输入模块*/
input_message()ﻫ{
charch;ﻫ intflag=1;
doﻫ {ﻫ if(insert(&head)!
=0)ﻫ n++; /*计数*/ﻫ else
printf("\n有相同的的学号!
");ﻫ printf("\n是否继续?
(y/n)");
getchar();ﻫ scanf("%c",&ch);ﻫ if(ch=='y'||ch=='Y')ﻫ {ﻫ printf("\n继续!
");
getch();ﻫ flag=1;/*标志程序不结束*/ﻫ }
else
flag=0;
}while(flag==1);ﻫ save_message();
printf("按任意键继续...");ﻫ getch();
}
/*insert()模块*/ /*被输入和插入模块所调用*/
int insert(structSTH**h)ﻫ{ﻫ structSTH*p,*p0;ﻫ p=(structSTH*)malloc(N);ﻫ printf("\n请输入学号:
");
scanf("%ld",&p->num);
printf("\n请输入姓名:
");
scanf("%s",p->name);
printf("\n请输入性别:
");ﻫ getchar(); /*取走上一个留下来得‘\n’*/ﻫ scanf("%s",p->sex);
printf("\n请输入生日(年月日,用回车隔开):
\n");ﻫ scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day);ﻫ printf("\n请输入系别:
");
scanf("%s",p->xi);
printf("\n请输入班级:
");ﻫ scanf("%s",p->ban);
printf("\n请输入家庭住址:
");ﻫ scanf("%s",p->add);ﻫ p->next=NULL;ﻫ if(*h==NULL)
{
*h=p;ﻫ return1;
}ﻫ p0=*h;
if(p0->num>p->num)ﻫ {ﻫ p->next=p0;ﻫ *h=p;ﻫ return1;
}
ﻫ while(p0->next!
=NULL&&p0->next->num<p->num)ﻫ p0=p0->next;
if(p0->next==NULL)
{ﻫ p0->next=p;ﻫ return1;ﻫ }
elseif(p0->next->num==p->num)
{ﻫ free(p); /*有相同数据输入失败*/ﻫ return0;
}ﻫ elseﻫ {
p->next=p0->next;
p0->next=p;
return1;
}
}
/*读文件模块*/ /*读文件模块中创建了一个新的链表,其返回值为新链表的头指针*/
structSTH*readfile()ﻫ{
FILE*fp;
structSTH*p,*p0;ﻫ charch;
inti;
if((fp=fopen("STH.txt","r"))==NULL)
{ﻫ printf("\n不能读取文件!
\n");
returnNULL;ﻫ } /*注意要该*/ﻫ head=p=p0=(struct STH *)malloc(N);
fscanf(fp,"%d",&n);
fscanf(fp,"%c",&ch); /*为了使学号和信息个数分开加入一个‘/’*/
fscanf(fp,"%ld%s%s%d%d%d%s%s%s",ﻫ &p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);
p->next=NULL;
i=1; /*如果只有一个数时跳出*/
if(n!
=1)ﻫ {ﻫ doﻫ {
p=(structSTH*)malloc(N);
fscanf(fp,"%ld%s%s%d%d%d%s%s%s",ﻫ &p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);
p0->next=p;ﻫ p0=p;
i++;
}while(i fclose(fp);ﻫ returnhead; } /*插入模块*/ insert_message()ﻫ{ﻫ structSTH*p;ﻫ int flag=1;ﻫ charch; head=readfile();ﻫ doﻫ { if(insert(&head)! =0)ﻫ { n++;ﻫ save_message();ﻫ printf("");ﻫ } /*计数*/ﻫ elseﻫ { printf("\n添加失败! \n有相同的的学号! ");ﻫ save_message();ﻫ getch(); }ﻫ printf("\n是否继续? (y/n)");ﻫ getchar();ﻫ ch=getchar(); if(ch=='y'||ch=='Y')ﻫ { printf("\n继续! "); flag=1;/*标志程序不结束*/ } elseﻫ flag=0; }while(flag==1); printf("\n按任意键继续...");ﻫ getch();ﻫ} ﻫ/*修改模块*/ renew_message()ﻫ{ﻫ structSTH*p; int i,flag=1; longnum;ﻫ p=head=readfile(); if(head==NULL) { printf("读文件有误! "); getch(); } elseﻫ {ﻫ printf("\n请按输入要修改的学生的学号: ");ﻫ scanf("%ld",&num); for(i=0;i p->num=num; printf("\n已找到要%ld号学生的信息! \n",num);ﻫ printf("原姓名为%s 要修改为: \n",p->name);ﻫ scanf("%s",p->name); printf("原性别为%s 要修改为: \n",p->sex); scanf("%s",p->sex);ﻫ printf("原生日为%d/%d/%d 要修改为: \n",p->birth.year,p->birth.month,p->birth.day); scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day);ﻫ printf("原系别为%s 要修改为: \n",p->xi); scanf("%s",p->xi); printf("原班级为%s 要修改为: \n",p->ban); scanf("%s",p->ban); printf("原家庭住址为%s 要修改为: \n",p->add);ﻫ scanf("%s",p->add);ﻫ printf("你所更改后的信息为: \n");ﻫ printf(PRINTF); printf(GESHI, p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add); printf("\n按任意键退出! \n");ﻫ getch();ﻫ flag=1;ﻫ break;ﻫ } elseﻫ p=p->next;ﻫ } if(flag! =1) printf("无此人信息! \n");ﻫ elseﻫ save_message();ﻫ getch(); } } /*删除模块*/ delete_message()ﻫ{ int flag;ﻫ longnum;ﻫ charch;ﻫ structSTH*p,*p0;ﻫ p0=p=head=readfile(); if(head==NULL) {ﻫ printf("文件读取出错! "); getch();ﻫ }ﻫ else {ﻫ printf("请输入要删除学生的学号: \n");ﻫ scanf("%ld",&num);ﻫ if(p0->num==num)ﻫ {ﻫ head=p0->next;ﻫ free(p0); flag=1;ﻫ n--; /*学生数减一*/ }ﻫ p=p0->next; while(p! =NULL)ﻫ { if(p->num==num) {ﻫ p0->next=p->next; free(p); flag=1;ﻫ n--; }ﻫ else { p0=p; p=p->next; }ﻫ } if(p->next==NULL) flag=0; if(flag==1)ﻫ { printf("\n永久删除%ld号学生的信息? (y/n)",num);ﻫ getchar(); ch=getchar(); if(ch=='y'||ch=='Y')ﻫ save_message(); elseﻫ {ﻫ printf("\n撤消删除! "); getch();ﻫ } }ﻫ elseﻫ printf("\n删除失败! ");ﻫ getch(); } } /*查询模块*/ﻫinquire_message() { inti,flag=0; longnum;ﻫ structSTH*p; p=head=readfile(); if(head==NULL) { printf("文件读取出错! "); getch();ﻫ }ﻫ elseﻫ { printf("请输入要查询学生的学号: \n");ﻫ scanf("%ld",&num);ﻫ for(i=0;i {ﻫ if(p->num==num) {ﻫ printf("\n信息已找到: \n"); getch();ﻫ clrscr(); printf("**********************************FOUND*********************************\n");ﻫ printf("------------------------------------------------------------------------\n\n");ﻫ printf(PRINTF); printf(GESHI,ﻫ p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);ﻫ printf("\n------------------------------------------------------------------------\n");ﻫ printf("***********************************END**********************************\n"); flag=1;break;ﻫ }ﻫ elseﻫ p=p->next; }ﻫ if(flag==0) printf("\n无此人信息! ");ﻫ elseﻫ printf("\n显示完毕! \按任意键返回主菜单......"); getch(); }ﻫ} /*显示模块*/ﻫoutput_message() {ﻫ inti=0;ﻫ structSTH*p;ﻫ p=head=readfile(); if(head==NULL) {ﻫ printf("文件读取出错! ");ﻫ getch();ﻫ }ﻫ elseﻫ {ﻫ clrscr();ﻫ printf("\n************************************STUDENT************************************\n"); printf("-------------------------------------------------------------------------------\n");ﻫ printf(PRINTF); while(i {ﻫ printf(GESHI,ﻫ p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add); p=p->next; i++;ﻫ } printf("-------------------------------------------------------------------------------\n");ﻫ printf("**************************************END**************************************\n"); printf("\n显示完毕! \n共%d条信息.\n按任意键返回主菜单......",n); getch(); } } /*存档模块*/ﻫsave_message() { FILE*fp;ﻫ int i;ﻫ struct STH*p;ﻫ p=head; if((fp=fopen("STH.txt","w"))==NULL) {ﻫ printf("读文件错误! ! "); exit(0); } fprintf(fp,"%d",n);ﻫ fprintf(fp,"%c",'/'); /*注意要该*/ for(i=0;i { fprintf(fp,"%ld%s%s%d %d %d%s%s%s", p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);ﻫ p=p->next;ﻫ } fclose(fp); printf("\n信息已经保存在STH.txt文件中! ");ﻫ getch(); } /*主函数*/ ﻫvoidmain(void)ﻫ{ intchoice; charch; FILE*fp;ﻫ structdate d; getdate(&d);ﻫ if((fp=fopen("STH.txt","r"))==NULL) { fp=fopen("STH.txt","w"); fprintf(fp,"%d",0); fclose(fp); } elseﻫ { fscanf(fp,"%d",&n); fclose(fp);ﻫ } clrscr();ﻫ printf("制作人: 通工0501 李艺凡"); printf("\n\n\n"); printf(" ************************************************** \n"); printf(" 欢迎进入学生户籍系统 \n\n"); printf(" 1创建记录\n");ﻫ printf("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言 代码