⑴ C语言课程设计学籍信息管理
帮你完全按照这个写无偿的大家肯定都是没有时间的,我帮你找了一份基本满足你需求的源码你可以拿去改一改完成了你需求的百分之80如果你自己有哪些不懂再追问吧
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
intshoudsave=0;/**/
structstudent
{
charnum[10];/*学号*/
charname[20];
charsex[4];
charyuan;
intban;
charneartime[10];/*最近更新时间*/
};
typedefstructnode
{
structstudentdata;
structnode*next;
}Node,*Link;
voidmenu()
{
printf("********************************************************************************");
printf(" 1登记学生资料 2删除学生资料 ");
printf(" 3查询学生资料 4修改学生资料 ");
printf(" 5保存学生资料 0退出系统 ");
printf("******************************************************************************** ");
}
voidprintstart()
{
printf("----------------------------------------------------------------------- ");
}
voidWrong()
{
printf(" =====>提示:输入错误! ");
}
voidNofind()
{
printf(" =====>提示:没有找到该学生! ");
}
voidprintc()/*本函数用于输出中文*/
{
printf("学号 姓名性别学院班级 ");
}
voidprinte(Node*p)/*本函数用于输出英文*/
{
printf("%-12s%s %s %c %d ",p->data.num,p->data.name,p->data.sex,p->data.yuan,p->data.ban);
}
Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/
{
Node*r;
if(strcmp(nameornum,"num")==0)/*按学号查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
returnr;
r=r->next;
}
}
elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
returnr;
r=r->next;
}
}
return0;
}
voidAdd(Linkl)/*增加学生*/
{
Node*p,*r,*s;
charnum[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next;/*将指针置于最末尾*/
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4修改'! ",num);
printstart();
printc();
printe(s);
printstart();
printf(" ");
return;
}
s=s->next;
}
p=(Node*)malloc(sizeof(Node));
strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入学院:");
scanf("%c",&p->data.yuan);
getchar();
printf("请你输入班级:");
scanf("%d",&p->data.ban);
getchar();
/*信息输入已经完成*/
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;}
}
voidQur(Linkl)/*查询学生*/
{
intsel;
charfindmess[20];
Node*p;
if(!l->next)
{
printf(" =====>提示:没有资料可以查询! ");
return;
}
printf(" =====>1按学号查找 =====>2按姓名查找 ");
scanf("%d",&sel);
if(sel==1)/*学号*/
{
printf("请你输入要查找的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf(" 查找结果 ");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
elseif(sel==2)/*姓名*/
{
printf("请你输入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf(" 查找结果 ");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();
}
voidDel(Linkl)/*删除*/
{
intsel;
Node*p,*r;
charfindmess[20];
if(!l->next)
{
printf(" =====>提示:没有资料可以删除! ");
return;
}
printf(" =====>1按学号删除 =====>2按姓名删除 ");
scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf(" =====>提示:该学生已经成功删除! ");
shoudsave=1;
}
else
Nofind();
}
elseif(sel==2)
{
printf("请你输入要删除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf(" =====>提示:该学生已经成功删除! ");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}
voidModify(Linkl)
{
Node*p;
charfindmess[20];
if(!l->next)
{
printf(" =====>提示:没有资料可以修改! ");
return;
}
printf("请你输入要修改的学生学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号(原来是%s):",p->data.num);
scanf("%s",p->data.num);
printf("请你输入新姓名(原来是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别(原来是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("请你输入新的学院:",p->data.yuan);
scanf("%c",&p->data.yuan);
getchar();
printf("请你输入新的班级(原来是%d):",p->data.ban);
scanf("%d",&p->data.ban);
getchar();
printf(" =====>提示:资料修改成功! ");
shoudsave=1;
}
else
Nofind();
}
voidSave(Linkl)
{
FILE*fp;
Node*p;
intflag=1,count=0;
fp=fopen("c:\student","wb");
if(fp==NULL)
{
printf(" =====>提示:重新打开文件时发生错误! ");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf(" =====>提示:文件保存成功.(有%d条记录已经保存.) ",count);
shoudsave=0;
}
fclose(fp);
}
voidmain()
{
Linkl;/*连表*/
FILE*fp;/*文件指针*/
intsel;
charch;
charjian;
intcount=0;
Node*p,*r;
printf(" 学生成绩管理系统 -------建筑电气及智能化0801 ");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;
fp=fopen("C:\student","rb");
if(fp==NULL)
{
printf(" =====>提示:文件还不存在,是否创建?(y/n) ");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\student","wb");
else
exit(0);
}
printf(" =====>提示:文件已经打开,正在导入记录...... ");
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp))/*将文件的内容放入接点中*/
{
p->next=NULL;
r->next=p;
r=p;/*将该接点挂入连中*/
count++;
}
}
fclose(fp);/*关闭文件*/
printf(" =====>提示:记录导入完毕,共导入%d条记录. ",count);
while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);
if(sel==0)
{
if(shoudsave==1)
{getchar();
printf(" =====>提示:资料已经改动,是否将改动保存到文件中(y/n)? ");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf(" =====>提示:你已经退出系统,再见! ");
break;
}
switch(sel)
{
case1:Add(l);break;/*增加学生*/
case2:Del(l);break;/*删除学生*/
case3:Qur(l);break;/*查询学生*/
case4:Modify(l);break;/*修改学生*/
case5:Save(l);break;/*保存学生*/
case9:printf(" ==========帮助信息========== ");break;
default:Wrong();getchar();break;
}
}
}
⑵ 求学生学籍管理信息系统设计心得
课程设计总结
经过一个个星期的课程设计,收获颇多。也明白了自己在回c++语言上自己存在的一些问答题,也解决了一些一直困恼我的问题。以前自己觉得程序很简单,不放在心上。经过课程设计才使我明白做程序需要的东西是很多的,你既要懂程序而且还要有耐心和恒心。课程设计是对我的一次全面的测试,它既锻炼了我的动手的能力也磨练了我的心理素质。
刚开始拿到课程设计题目——学生信息管理系统的时候,自己好高兴应为我们以前做过,觉得很容易就可以做好了但是我仔细的看了一下设计要求。我发现还有些难度的。在这次课程设计过程中遇到了问题,我就找资料,看例题。在这种情况下,我才知道什么叫做“书到用时,方恨少”的道理。以后,我要多看看有关自己专业的书了。在设计过程中,我发现了我的一些缺点,比如马虎、没耐心等等。我想程序设计最忌讳的就是马虎。
但我相信,从现在开始我会认真的改正这些缺点,以便更好的学习专业知识。
在这一个星期的课程设计中,也让我看到了一些c++程序设计方面薄弱的地方,在接下来的时间里我要好好的巩固这些方面的知识,争取学好这一门课程,熟练掌握c++。
我相信只要自己努力一定会成功的!!!