⑴ 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++。
我相信只要自己努力一定會成功的!!!