當前位置:首頁 » 編程語言 » c語言課程選修系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言課程選修系統

發布時間: 2023-05-19 11:40:10

⑴ 用數據結構(c語言版)編寫的學生選課系統

根據自己的需要,自己看著修改一下 ^^
#include<stdio.h>
#include<stdlib.h>
int N1,N2,kk1,kk2,kk3;
struct couse * head1;
struct student * head2;
struct couse//課程信息結構體
{
int num1;
char name1[20];
int score;
int nelepeo;//課程已選人數
int Melepeo;//課程人數上限
struct couse * next;
};
struct student//學生信息結構體
{
int num2;
char name2[20];
int nelenum[50];//已選課程編號
int nelen;//已選課程數量
struct student * next;
};
void Ms()
{
for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)
for(kk3=0;kk3<1200;kk3++);
}
void keyboardc()//錄入課程子函數(從鍵盤錄入)
{
struct couse *p1,*p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf("課程編號\t課程名稱\t學分\t課程人數上限\n");
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
head1=NULL;
while(p1->num1!=0)
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
}
p2->next=NULL;
}
void filec()//錄入鍵盤子函數(從文件錄入)
{
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf("輸入要讀入的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
}
p2->next=NULL;
}
void inputc()//錄入課程主函數
{
int i;
printf("\t\t\t錄入課程信息\n");
printf("\n1.從鍵盤錄入\n");
printf("2.從文件錄入\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):break;
}
}
void insertc(struct couse *incouse)//課程管理子函數(增加課程)
{
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0->next=NULL;
}
else
{
while((p0->num1 > p1->num1) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num1 <= p1->num1)
{
if(head1==p1) head1=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N1=N1+1;
}
void delc(int num1)//課程管理子函數(刪除課程)
{
struct couse *p1,*p2;
if(head1==NULL)
{
printf("\n沒有課程,無法刪除!\n");
goto end;
}
p1=head1;
while(num1!=p1->num1 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num1==p1->num1)
{
if(p1==head1) head1=p1->next;
else p2->next=p1->next;
printf("已刪除該編號課程!\n");
N1=N1-1;
}
else printf("無該編號的課程!\n");
end:;
}
void managementc()//課程管理主函數
{
struct couse * incouse;
int i,num1;
printf("\t\t\t課程管理\n");
printf("1.新增課程\n");
printf("2.刪除課程\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf("課程編號\t課程名稱\t學分\t課程人數上限\n");
scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("請輸入要刪除課程的編號:\n");
scanf("%d",&num1);
delc(num1);
break;
}
case(3):break;
}
}
void keyboards()//錄入學生信息子函數(從鍵盤錄入)
{
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("學生學號\t學生姓名\n");
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
head2=NULL;
while(p1->num2!=0)
{
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
}
p2->next=NULL;
}
void files()//錄入學生信息子函數(從文件錄入)
{
int i=0;
FILE * fp;
char filepath[20];
struct student *p1,*p2;
N2=0;
printf("輸入要讀入的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct student*)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
head2=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
}
p2->next=NULL;
}
void inputs()//錄入學生信息主函數
{
int i;
printf("\t\t\t錄入學生信息\n");
printf("\n1.從鍵盤錄入\n");
printf("2.從文件錄入\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboards();break;
case(2):files();break;
case(3):break;
}
}
void inserts(struct student * incouse)//學生信息管理子函數(填加學生信息)
{
struct student *p0,*p1,*p2;
p1=head2;
p0=incouse;
if(head2==NULL)
{
head2=p0;
p0->next=NULL;
}
else
{
while((p0->num2 > p1->num2) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num2 <= p1->num2)
{
if(head2==p1) head2=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N2=N2+1;
}
void dels(int num2)//學生信息管理子函數(刪除學生信息)
{
struct student *p1,*p2;
if(head2==NULL)
{
printf("\n沒有該學生信息,無法刪除!\n");
goto end;
}
p1=head2;
while(num2!=p1->num2 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num2==p1->num2)
{
if(p1==head2) head2=p1->next;
else p2->next=p1->next;
printf("已刪除該學生信息!\n");
N2=N2-1;
}
else printf("無該學號的學生!\n");
end:;
}
void managements()//學生信息管理主函數
{
struct student * incouse;
int i,num2;
printf("\t\t\t學生信息管理\n");
printf("1.新增學生信息\n");
printf("2.刪除學生信息\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
incouse->nelen=0;
incouse->nelenum[0]=0;
printf("學生學號\t學生姓名\n");
scanf("%d%s",&incouse->num2,incouse->name2);
inserts(incouse);
break;
}
case(2):
{
printf("請輸入要刪除學生的學號:\n");
scanf("%d",&num2);
dels(num2);
break;
}
case(3):break;
}
}
void elect(struct student * s)//選課
{
struct couse * p;
int num1,i;
printf("請輸入要選課的編號:\n");
scanf("%d",&num1);
for(i=0;s->nelenum[i]!=0;i++);
s->nelenum[i]=num1;
(s->nelen)++;
p=head1;
while(p->num1!=num1) p=p->next;
(p->nelepeo)++;
}
void cheak()//學生選課子函數(查詢可選課程)
{
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf("請輸入你的學號:");
scanf("%d",&num2);
s=head2;
while(s->num2!=num2 && s->next!=NULL) s=s->next;
if(s->num2!=num2)
{
printf("不存在你的信息,請進入主菜單錄入你的信息!\n");
goto end;
}
c=head1;
printf("你的可選課程編號:\n");
while(c!=NULL)
{
for(t=0,i=0;s->nelenum[i]!=0;i++)
{
if(c->num1==s->nelenum[i]) t=1;
}
if(t==0 && (c->nelepeo!=c->Melepeo))
{
printf("%d\n",c->num1);
j++;
}
c=c->next;
}
if(j==0)
{
printf("你已選完所有課程,無法再多選!\n");
goto end;
}
printf("選課(y/n)?:\n");
getchar();
e=getchar();
i=0;
while(e=='y')
{
elect(s);
printf("繼續選課(y/n)?:\n");
getchar();
e=getchar();
}
end:;
}
void back(struct student * p)//退課
{
struct couse * p1;
int num1,i,j;
printf("請輸入你要退掉的課程編號:\n");
scanf("%d",&num1);
p1=head1;
while(p1->num1!=num1) p1=p1->next;
for(i=0;p->nelenum[i]!=num1;i++);
for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1];
p->nelenum[--j]=0;
(p1->nelepeo)--;
printf("退課成功!\n");
}
void hcheak()//學生選課子函數(查詢已選課程)
{
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf("請輸入學號:\n");
scanf("%d",&num2);
p=head2;
while(p->num2!=num2 && p!=NULL) p=p->next;
if(p==NULL)
{
printf("不存在你的信息,請回主菜單錄入信息:\n");
goto end;
}
printf("已選課程編號:\n");
if(p->nelenum[0]==0)
{
printf("你還沒選課!\n");
goto end;
}
for(i=0;p->nelenum[i]!=0;i++)
{
printf("%d\n",p->nelenum[i]);
p0=head1;
while(p0->num1!=p->nelenum[i]) p0=p0->next;
f=f+p0->score;
}
printf("總學分:%d\n",f);
printf("是否進行退課(y/n)?");
getchar();
c=getchar();
while(c=='y')
{
back(p);
printf("繼續退課(y/n)?");
getchar();
c=getchar();
(p->nelen)--;
}
end:;
}
void elective()//學生選課主函數
{
int i;
printf("\t\t\t學生選課\n");
printf("1.查詢可選課程\n");
printf("2.查詢已選課程\n");
printf("3.返回主菜單\n");
printf("請輸入(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
void listc()//輸出課程信息
{
struct couse * p;
p=head1;
printf("課程編號 課程名稱 學分 課程已選人數 課程人數上限\n");
while(p!=NULL)
{
printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
}
void lists()//輸出學生信息
{
struct student * p;
p=head2;
printf("學生學號 學生姓名 已選課程數量\n");
while(p!=NULL)
{
printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);
p=p->next;
}
}
void intoc()//存儲課程信息
{
FILE * fp;
struct couse * p;
char filepath[30];
printf("輸入課程信息要保存的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
fclose(fp);
printf("課程信息已保存在%s中!\n",filepath);
}
void intos()//存儲學生信息
{
FILE * fp;
struct student * p;
char filepath[30];
printf("輸入學生信息要保存的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
p=head2;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
printf("學生信息已保存在%s中!\n",filepath);
}
void into()//存儲信息
{
int i;
printf("1.存儲課程信息\n");
printf("2.存儲學生信息\n");
printf("3.返回主菜單\n");
printf("請輸入(1~3)\n");
scanf("%d",&i);
switch(i)
{
case(1):intoc();break;
case(2):intos();break;
case(3):break;
}
}
void store()//信息主函數
{
int i;
printf("\t\t系統信息查看及存儲\n");
printf("1.查看課程信息\n");
printf("2.查看學生信息\n");
printf("3.存儲信息\n");
printf("4.返回主菜單\n");
printf("請輸入(1~4):\n");
scanf("%d",&i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):into();break;
case(4):break;
}
}
int main()//主函數
{
int i;
start:
printf("\n\t\t\t歡迎使用學生選課系統!\n");
printf("菜單:\n");
printf("1.錄入課程信息\n");
printf("2.課程管理\n");
printf("3.錄入學生信息\n");
printf("4.學生信息管理\n");
printf("5.學生選課\n");
printf("6.系統信息查看及存儲\n");
printf("7.退出系統\n");
printf("\n請輸入菜單選項(1~7):\n");
scanf("%d",&i);
if(i<1 || i>7)
{
printf("輸入錯誤,請重輸:\n");
goto start;
}
switch(i)
{
case(1):
{
system("cls");
inputc();
goto start;
break;
}
case(2):
{
system("cls");
managementc();
goto start;
break;
}
case(3):
{
system("cls");
inputs();
goto start;
break;
}
case(4):
{
system("cls");
managements();
goto start;
break;
}
case(5):
{
system("cls");
elective();
goto start;
break;
}
case(6):
{
system("cls");
store();
goto start;
break;
}
case(7):
{
system("cls");
printf("感謝使用本系統!\n\n再見!\n");
}
}
return(0);
}

⑵ C語言課程設計《學生選課系統》的設計與實現

/* Note:Your choice is C IDE */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 100

struct student
{
char num[10];
char name[10];
char tel[11];
};

/* 以下是函數原型說明,被調函數的定義在主調函數後面時,要加此部分 */
void myprint();
void mycreate();
void mydisplay();
void mysearch();
/* sch_num與sch_name函數被mysearch調用 */
void sch_num(FILE *fp);
void sch_name(FILE *fp);
void mymodify();
void myadd();
void mydelete();
/* del_num與del_name函數被mydelete調用 */
void del_num(FILE *fp);
void del_name(FILE *fp);
void mysort();
/* sort_num與sort_name函數被mysort調用 */
void sort_num();
void sort_name();

void main()
{
char choose,yes_no;

do
{
myprint(); /* 顯示主菜單 */
printf(" ");
choose=getch();
switch(choose)
{
case '1': mycreate(); break; /* 創建 */
case '2': mydisplay(); break; /* 顯示 */
case '3': mysearch(); break; /* 查詢 */
case '4': mymodify(); break; /* 修改 */
case '5': myadd(); break; /* 添加 */
case '6': mydelete(); break; /* 刪除 */
case '7': mysort(); break; /* 排序 */
case '0': break;
default:printf("\n %c為非法選項!\n",choose);
}
if(choose=='0')
break;
printf("\n 要繼續選擇嗎(Y/N)?\n");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no!='Y'||yes_no!='y');
}

void myprint() /* 顯示菜單界面 */
{
printf("\n\n\n\n\n\n\n\n");
printf(" |----------------------------|\n");
printf(" | 請輸入選項編號(0-7): |\n");
printf(" |----------------------------|\n");
printf(" | 1--創建信息管理系統 |\n");
printf(" | 2--顯示信息管理系統 |\n");
printf(" | 3--查詢信息管理系統 |\n");
printf(" | 4--修改信息管理系統 |\n");
printf(" | 5--添加信息管理系統 |\n");
printf(" | 6--刪除信息管理系統 |\n");
printf(" | 7--排序信息管理系統 |\n");
printf(" | 0--退出 |\n");
printf(" |----------------------------|\n");
}

/* 定義創建信息管理系統的函數 */
void mycreate()
{
int i=1;
struct student temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

printf("\n 請輸入第1個記錄:\n");
printf(" 學號(用#結束輸入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#結束輸入):");
gets(temp.name);
printf(" 電話號碼(用#結束輸入):");
gets(temp.tel);
while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.tel[0]!='#')
{
fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.tel);
i++;

printf("\n 請輸入第%d個記錄:\n",i);
printf(" 學號(用#結束輸入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#結束輸入):");
gets(temp.name);
printf(" 電話號碼(用#結束輸入):");
gets(temp.tel);
}
fclose(fp);
}

/* 定義顯示信息管理系統的函數 */
void mydisplay()
{
int n=0;
struct student temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

// clrscr();
printf(" 學號 姓名 電話號碼\n");
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
n++;
}
if(n==0)
printf("\n 文件中無記錄!\n");
else
printf("\n 文件中共有%d個記錄!\n",n);
fclose(fp);
}

/* 定義查詢信息管理系統的函數 */
void mysearch()
{
char c;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

printf("\n 按學號查詢(h),還是按姓名查詢(m)?");
c=getch();
if(c=='h'||c=='H')
sch_num(fp); /* 按學號查詢 */
if(c=='m'||c=='M')
sch_name(fp); /* 按姓名查詢 */
else
printf("\n 非法字元!\n");
fclose(fp);
}

/* 定義按學號查詢信息管理系統的函數 */
void sch_num(FILE *fp)
{
int flag=0,n=0;
char tempnum[10];
struct student temp;

printf("\n 請輸入要查詢記錄的學號:");
gets(tempnum);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempnum,temp.num)==0)
{
if(flag==0)
printf(" 學號 姓名 電話號碼\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中無記錄!\n");
else
if(flag==0)
printf("\n 文件中無此人!\n");
}

/* 定義按姓名查詢信息管理系統的函數 */
void sch_name(FILE *fp)
{
int flag=0,n=0;
char tempname[10];
struct student temp;

printf("\n 請輸入要查詢記錄的姓名:");
gets(tempname);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf(" 學號 姓名 電話號碼\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中無記錄!\n");
else
if(flag==0)
printf("\n 文件中無此人!\n");
}

/* 定義修改信息管理系統的函數 */
void mymodify()
{
char c;
int n=0;
struct student *find,temp,record[100],*p; /* 最多100個記錄 */
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

if(n==0)
{
printf("\n 文件中無記錄!\n");
return;
}
printf("\n 請輸入要修改記錄的學號:");
gets(temp.num);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
find=p; /* find記住修改記錄的位置 */
break;
}
if(p==record+n)
{
printf("\n 無此人!\n");
return;
}
do
{
printf("\n 請輸入正確的學號:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 請輸入正確的姓名:");
gets(temp.name);
printf(" 請輸入正確的電話號碼:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if((strcmp(temp.num,p->num)==0)&&(p!=find))
{
printf("\n 學號重復,要重新輸入嗎(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*find=temp; /* find指向需要修改記錄的位置 */
break;
}
}while(c=='Y'||c=='y');

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}
for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}

/* 定義添加信息管理系統的函數 */
void myadd()
{
char c;
int n=0;
struct student temp,record[N],*p;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

do
{
printf("\n 請輸入新記錄的學號:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 請輸入新記錄的姓名:");
gets(temp.name);
printf(" 請輸入新記錄的電話號碼:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
printf("\n 學號重復,要重新輸入嗎(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*p=temp;
break;
}
}while(c=='Y'||c=='y');

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}
for(p=record;p<record+n+1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}

/* 定義刪除信息管理系統的函數 */
void mydelete()
{
char c;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

printf("\n 按學號刪除(h),還是按姓名刪除(m)?");
c=getch();
if(c=='h'||c=='H')
del_num(fp); /* 按學號刪除 */
if(c=='m'||c=='M')
del_name(fp); /* 按姓名刪 */
else
printf("\n 非法字元!\n");
fclose(fp);
}

/* 定義按學號刪除信息管理系統的函數 */
void del_num(FILE *fp)
{
int n=0;
char tempnum[10];
struct student record[N],*p,*k;

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 請輸入要刪除記錄的學號:");
gets(tempnum);

for(k=record;k<record+n;k++)
if(strcmp(tempnum,k->num)==0)
break; /* 找到要刪記錄結束循環 */
if(k<record+n) /* 提前結束循環,說明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相當於刪除記錄 */
*p=*(p+1);
else
printf("\n 無此人!\n");

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}

/* 定義按姓名刪除信息管理系統的函數 */
void del_name(FILE *fp)
{
int n=0;
char tempname[10];
struct student record[N],*p,*k;

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 請輸入要刪除記錄的姓名:");
gets(tempname);

for(k=record;k<record+n;k++)
if(strcmp(tempname,k->name)==0)
break; /* 找到要刪記錄結束循環 */
if(k<record+n) /* 提前結束循環,說明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相當於刪除記錄 */
*p=*(p+1);
else
printf("\n 無此人!\n");

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}

/* 定義排序信息管理系統的函數 */
void mysort()
{
char c;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}
fclose(fp);

printf("\n 按學號排序(h),還是按姓名排序(m)?");
c=getch();
if(c=='h'||c=='H')
sort_num(); /* 按學號排序 */
if(c=='m'||c=='M')
sort_name(); /* 按姓名排序 */
else
printf("\n 非法字元!\n");
}

/* 定義按學號排序信息管理系統的函數 */
void sort_num()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 按升序(s),還是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按學號的升序排列 */
for(i=0;i<n-1;i++) /* 選擇法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按學號的降序排列 */
for(i=0;i<n-1;i++) /* 選擇法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字元!\n");
return;
}

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

for(p=record;p<record+n;p++)
{
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
printf("%23s%15s%15s\n",p->num,p->name,p->tel);
}
fclose(fp);
}

/* 定義按姓名排序信息管理系統的函數 */
void sort_name()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;

fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 按升序(s),還是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按姓名的升序排列 */
for(i=0;i<n-1;i++) /* 選擇法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按姓名的降序排列 */
for(i=0;i<n-1;i++) /* 選擇法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字元!\n");
return;
}

fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打開文件失敗!\n");
return;
}

for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}

⑶ C語言學生選修課系統

//7《學生選修課程系統》設計任務
//(1)輸入功能:輸入30名學生學號、班級、姓名、選修課名稱。
//(2)設置要求:每個學生至少選修3科,總選修科目至少設置15科。
//(3)查詢功能:按學號、姓名、選修課顯示各選修課上課時間和地點。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
typedef struct subjects
{
int num;
char na[10];
char teacher[20];
char wtime[10];
char ttime[10];
int score;
struct subjects *next;
}SUB;
SUB *create_form()
{
SUB *head,*tail,*p;
int num,score;
char na[10],teacher[20],wtime[10],ttime[10];
head=tail=NULL;
printf(" 輸入選課程信息,以6個0結束:\n");
printf(" 課程代碼 課名 任教老師 上課星期 上課時間 學分\n");
scanf("%d%10s%14s%10s%8s%6d",&num,&na,&teacher,&wtime,&ttime,&score);
while(num!=0)
{
p=(SUB*)malloc(sizeof(SUB));
p->num;
strcpy(p->na,na);
strcpy(p->teacher,teacher);
strcpy(p->wtime,wtime);
strcpy(p->ttime,ttime);
p->score=score;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
scanf("%d%s%s%s%s%d",&num,&na,&teacher,&wtime,&ttime,&score);
}
tail->next=NULL;
return head;
}
void savefile(SUB*head)
{
SUB *p;
FILE *fp;
fp=fopen("subjects.txt","w");
fprintf(fp,"歡迎進入東華理工大學2008-2009學年選修課系統(4-13)\n");
fprintf(fp,"課程代碼 課名 任教老師 上課星期 上課時間 學分\n");
for(p=head;p;p->next)
fprintf(fp,"%6d%10s%14s%10s%8s%6d",p->num,p->na,p->teacher,p->wtime,p->ttime,p->score);
fclose(fp);
}
void prin(SUB *head)
{
SUB *p;
if (head==NULL)
{
printf("沒有選修課程記錄!\n");
return;
}
printf("歡迎進入東華理工大學2008-2009學年選修課系統(4-13)\n");
printf("課程代碼 課名 任教老師 上課星期 上課時間 學分\n");
for(p=head;p;p->next)
printf("%6d%10s%16s%12s%12s%d",p->num,p->na,p->teacher,p->wtime,p->ttime,p->score);
}
SUB *inset(SUB *head)
{
SUB *ptr,*ptr2,*subj;
char ch, ch1;
printf("是否進行插入課程,如果需要插入請按回車建,不進行按空格結束!\n");
ch=getchar();
while(ch!=' '){
subj=(SUB*)malloc(sizeof(SUB));
ptr=subj;
printf(" 輸入要插入的課程信息:\n");
scanf("%d%s%s%s%s%d",subj->num,subj->na,subj->teacher,subj->wtime,subj->ttime,subj->score);
if(head==NULL){
head=ptr;
head->next=NULL;
}
else{
for(ptr2=head;ptr2;ptr2=ptr2->next)
if(ptr2->next==NULL){
ptr2->next=subj;
subj->next=NULL;
break;
}
ch='a';
}
printf("繼續請按回車建,結束請按空格:\n");
ch1=getchar();
ch=getchar();
}
return head;
}
SUB *del(SUB *head)
{
SUB*p1,*p2;
char ch,ch1;
int num;
printf("是否進行課程刪除,要刪除請按回車鍵,不進行請按空格:\n");
ch=getchar();
while(ch!=' ')
{
printf("輸入要刪除的課程代碼:\n");
scanf("%d",&num);
if(head->num==num){
p2=head;
head=head->next;
free(p2);
}
if(head==NULL)
return NULL;
p1=head;
p2=head->next;
while(p2!=NULL){
if(p2->num==num){
p1->next=p2->next;
free(p2);
}
else
p1=p2;
p2=p1->next;
}
printf("繼續刪除請按回車鍵,結束請按空格:\n");
ch1=getchar();
ch=getchar();
}
return head;
}
typedef struct student
{
int number;
int classes;
char chinesename[16];
char title [5][12];
struct student *other;
}STU;
void scanf_form(SUB *head)
{
int i,count,number,classes;
char ch,title[3][12],chinesename[16];
scanf("%d%d%16s",&number,&classes,&chinesename);
for(i=0;i<5;i++)
{
scanf("%s",&title[i]);
count++;
if(count==3)
{
ch=getchar();
if(ch!=' ')
{title[3][12]='0';
title[4][12]='0';
i=5;
ch='a';
}
}
if(count==4)
{
ch=getchar();
if(ch!=' ')
{title[4][12]='0';
i=5;
ch='a';
}
}
for(i=0;i<5;i++)
{
if(strcmp(title[i][12],head->na)!=0 && title[i][12]!='0')
{ printf("你輸入的課程名不正確,請從新輸入:\n");
scanf_form();
}
}
}
}
STU *study_form(SUB*head)
{
STU *hand,*tall,*q;
int i;
char ch,ch1;
hand=tall=NULL;
printf("輸入你個人信息,及選修的課名,以4個0結束:\n");
printf("註:每個學生至少選修3門課,大於3門時按回車鍵繼續,空格結束:\n");
scanf_form();
while(number!=0)
{
q=(STU*)malloc(sizeof(STU));
q->number=number;
q->classes=classes;
strcpy(p->chinesename,chinesename);
for(i=0;i<5;i++)
strcpy(p->title[i],title[i][12]);
if(hand=NULL)
hand=q;
else
tall->other=q;
tall=q;
scanf_form();
for(i=0;i<5;i++)
{
if(strcmp(title[i][12],head->na)!=0&&titli[i][12]!='0')
{ printf("你輸入的課程名不正確,請從新輸入:\n");
scanf_form();
}
}
tall->other=NULL;
return hand;
}
}
void savefiles(STU*hand)
{
STU *q;
FILE *fq;
fq=fopen("studennt.txt","w");
fprintf(fq, "學生選課信息表:\n");
for(q=hand;q;q=q->other)
fprintf(fq,"%16d%10d%16s%16s%16s%16s%16s%16s",q->number,q->classes,q->chinesename,q->title[0],q->title[1],q->title[2],q->title[3],q->title[4]);
fclose(fq);
}
void prins(STU*hand)
{
STU *q;
if(head==NULL)
{
printf("沒有學生選課信息記錄!\n");
return;
}
printf("學生選課信息一覽表:\n");
printf("學號 班級 姓名 課名 :\n");
for(q=hand;q;q->number)
printf("%16d%10d%16s%16s%16s%16s%16s%16s",q->number,q->classes,q->chinesename,q->title[0],q->title[1],q->title[2],q->title[3],q->title[4]);
}
STU *intserts(SUB*head,STU *hand)
{
STU *prt,*prt2,*stuj;
int i;
char ch,ch1;
printf("是否要進行插入學生選課信息,如果需要請按回車建,結束請按0:\n");
ch=getchar();
while(ch!=' ')
{
stuj=(STU*)malloc(sizeof(STU));
prt=stuj;
printf("輸入要插入的學生選課信息:\n");
scanf_form();
if(hand==NULL)
{hand=prt;
hand->other=NULL;
}
else
{for(prt2=hand;prt2;prt2=prt2->other)
if(prt2->other==NULL)
{prt2->other=stuj;
stuj->other=NULL;
break;
}
ch='a';
}
printf("繼續插入請按回車建,結束請按空格:\n");
ch1=getchar();
ch=getchar();
}
return hand;
}
STU *dells(STU *hand)
{
STU *q1,*q2;
char ch,ch1;
int number;
printf("是否進行學生選課信息刪除,要刪除請按回車建,不進行請按空格:\n");
ch=getchar();
while(ch!=' ')
{
printf("輸入要刪除的學號:\n");
scanf("%d",&number);
if(hand->number==number)
{
q2=hand;
hand=hand->other;
free(q2);
}
if(hand=NULL)
return NULL;
q1=hand;
q2=hand->other;
while(q2)
{if(q2->number==number)
{q1->other=q2->other;
free(q2);
}
else
q1=q2;
q2=q1->other;
}
printf("繼續刪除請按回車建,結束請按空格:\n");
ch1=getchar();
ch1=getchar();
}
return hand;
}
void search(STU*hand)
{
int a,number;
int t=1;
char type[10],ch,ch1;
STU *prt;
printf("是否進入查詢,按回車鍵進入,空格結束:\n");
ch=getchar();
while(ch!=' ')
{
printf("請輸入要查詢的學號:\n");
for(prt=hand;prt;prt=prt->other)
{
if(number=prt->number)
{printf("%16d%10d%16s%16s%16s%16s%16s%16s",prt->number,prt->classes,prt->chinesename,prt->title[0],prt->title[1],prt->title[2],prt->title[3],prt->title[4]);
t=0;
}
if(t!=0)
printf("未找到!\n");
t=1;
}
printf("繼續查找請按回車鍵,結束請按空格鍵:\n");
ch1=getchar();
ch=getchar();
}
}
void main()
{
SUB *head=create_form() ;
savefile(head);
prin(head);
head= inset(head);
head= del(head);
STU *hand=study_form(head);
savefiles(hand);
prins(hand);
hand=intserts(head,hand);
hand=dells(hand);
search(hand);
}

⑷ 學生選課系統C語言程序

根據自己的需要,自己看著修改一下 ^^
#include<stdio.h>
#include<stdlib.h>
int N1,N2,kk1,kk2,kk3;
struct couse * head1;
struct student * head2;
struct couse//課程信息結構體
{
int num1;
char name1[20];
int score;
int nelepeo;//課程已選人數
int Melepeo;//課程人數上限
struct couse * next;
};
struct student//學生信息結構體
{
int num2;
char name2[20];
int nelenum[50];//已選課程編號
int nelen;//已選課程數量
struct student * next;
};
void Ms()
{
for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)
for(kk3=0;kk3<1200;kk3++);
}
void keyboardc()//錄入課程子函數(從鍵盤錄入)
{
struct couse *p1,*p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf("課程編號\t課程名稱\t學分\t課程人數上限\n");
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
head1=NULL;
while(p1->num1!=0)
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
}
p2->next=NULL;
}
void filec()//錄入鍵盤子函數(從文件錄入)
{
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf("輸入要讀入的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
}
p2->next=NULL;
}
void inputc()//錄入課程主函數
{
int i;
printf("\t\t\t錄入課程信息\n");
printf("\n1.從鍵盤錄入\n");
printf("2.從文件錄入\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):break;
}
}
void insertc(struct couse *incouse)//課程管理子函數(增加課程)
{
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0->next=NULL;
}
else
{
while((p0->num1 > p1->num1) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num1 <= p1->num1)
{
if(head1==p1) head1=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N1=N1+1;
}
void delc(int num1)//課程管理子函數(刪除課程)
{
struct couse *p1,*p2;
if(head1==NULL)
{
printf("\n沒有課程,無法刪除!\n");
goto end;
}
p1=head1;
while(num1!=p1->num1 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num1==p1->num1)
{
if(p1==head1) head1=p1->next;
else p2->next=p1->next;
printf("已刪除該編號課程!\n");
N1=N1-1;
}
else printf("無該編號的課程!\n");
end:;
}
void managementc()//課程管理主函數
{
struct couse * incouse;
int i,num1;
printf("\t\t\t課程管理\n");
printf("1.新增課程\n");
printf("2.刪除課程\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf("課程編號\t課程名稱\t學分\t課程人數上限\n");
scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("請輸入要刪除課程的編號:\n");
scanf("%d",&num1);
delc(num1);
break;
}
case(3):break;
}
}
void keyboards()//錄入學生信息子函數(從鍵盤錄入)
{
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("學生學號\t學生姓名\n");
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
head2=NULL;
while(p1->num2!=0)
{
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
}
p2->next=NULL;
}
void files()//錄入學生信息子函數(從文件錄入)
{
int i=0;
FILE * fp;
char filepath[20];
struct student *p1,*p2;
N2=0;
printf("輸入要讀入的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct student*)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
head2=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
}
p2->next=NULL;
}
void inputs()//錄入學生信息主函數
{
int i;
printf("\t\t\t錄入學生信息\n");
printf("\n1.從鍵盤錄入\n");
printf("2.從文件錄入\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboards();break;
case(2):files();break;
case(3):break;
}
}
void inserts(struct student * incouse)//學生信息管理子函數(填加學生信息)
{
struct student *p0,*p1,*p2;
p1=head2;
p0=incouse;
if(head2==NULL)
{
head2=p0;
p0->next=NULL;
}
else
{
while((p0->num2 > p1->num2) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num2 <= p1->num2)
{
if(head2==p1) head2=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N2=N2+1;
}
void dels(int num2)//學生信息管理子函數(刪除學生信息)
{
struct student *p1,*p2;
if(head2==NULL)
{
printf("\n沒有該學生信息,無法刪除!\n");
goto end;
}
p1=head2;
while(num2!=p1->num2 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num2==p1->num2)
{
if(p1==head2) head2=p1->next;
else p2->next=p1->next;
printf("已刪除該學生信息!\n");
N2=N2-1;
}
else printf("無該學號的學生!\n");
end:;
}
void managements()//學生信息管理主函數
{
struct student * incouse;
int i,num2;
printf("\t\t\t學生信息管理\n");
printf("1.新增學生信息\n");
printf("2.刪除學生信息\n");
printf("3.返回主菜單\n");
printf("請選擇(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
incouse->nelen=0;
incouse->nelenum[0]=0;
printf("學生學號\t學生姓名\n");
scanf("%d%s",&incouse->num2,incouse->name2);
inserts(incouse);
break;
}
case(2):
{
printf("請輸入要刪除學生的學號:\n");
scanf("%d",&num2);
dels(num2);
break;
}
case(3):break;
}
}
void elect(struct student * s)//選課
{
struct couse * p;
int num1,i;
printf("請輸入要選課的編號:\n");
scanf("%d",&num1);
for(i=0;s->nelenum[i]!=0;i++);
s->nelenum[i]=num1;
(s->nelen)++;
p=head1;
while(p->num1!=num1) p=p->next;
(p->nelepeo)++;
}
void cheak()//學生選課子函數(查詢可選課程)
{
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf("請輸入你的學號:");
scanf("%d",&num2);
s=head2;
while(s->num2!=num2 && s->next!=NULL) s=s->next;
if(s->num2!=num2)
{
printf("不存在你的信息,請進入主菜單錄入你的信息!\n");
goto end;
}
c=head1;
printf("你的可選課程編號:\n");
while(c!=NULL)
{
for(t=0,i=0;s->nelenum[i]!=0;i++)
{
if(c->num1==s->nelenum[i]) t=1;
}
if(t==0 && (c->nelepeo!=c->Melepeo))
{
printf("%d\n",c->num1);
j++;
}
c=c->next;
}
if(j==0)
{
printf("你已選完所有課程,無法再多選!\n");
goto end;
}
printf("選課(y/n)?:\n");
getchar();
e=getchar();
i=0;
while(e=='y')
{
elect(s);
printf("繼續選課(y/n)?:\n");
getchar();
e=getchar();
}
end:;
}
void back(struct student * p)//退課
{
struct couse * p1;
int num1,i,j;
printf("請輸入你要退掉的課程編號:\n");
scanf("%d",&num1);
p1=head1;
while(p1->num1!=num1) p1=p1->next;
for(i=0;p->nelenum[i]!=num1;i++);
for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1];
p->nelenum[--j]=0;
(p1->nelepeo)--;
printf("退課成功!\n");
}
void hcheak()//學生選課子函數(查詢已選課程)
{
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf("請輸入學號:\n");
scanf("%d",&num2);
p=head2;
while(p->num2!=num2 && p!=NULL) p=p->next;
if(p==NULL)
{
printf("不存在你的信息,請回主菜單錄入信息:\n");
goto end;
}
printf("已選課程編號:\n");
if(p->nelenum[0]==0)
{
printf("你還沒選課!\n");
goto end;
}
for(i=0;p->nelenum[i]!=0;i++)
{
printf("%d\n",p->nelenum[i]);
p0=head1;
while(p0->num1!=p->nelenum[i]) p0=p0->next;
f=f+p0->score;
}
printf("總學分:%d\n",f);
printf("是否進行退課(y/n)?");
getchar();
c=getchar();
while(c=='y')
{
back(p);
printf("繼續退課(y/n)?");
getchar();
c=getchar();
(p->nelen)--;
}
end:;
}
void elective()//學生選課主函數
{
int i;
printf("\t\t\t學生選課\n");
printf("1.查詢可選課程\n");
printf("2.查詢已選課程\n");
printf("3.返回主菜單\n");
printf("請輸入(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
void listc()//輸出課程信息
{
struct couse * p;
p=head1;
printf("課程編號 課程名稱 學分 課程已選人數 課程人數上限\n");
while(p!=NULL)
{
printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
}
void lists()//輸出學生信息
{
struct student * p;
p=head2;
printf("學生學號 學生姓名 已選課程數量\n");
while(p!=NULL)
{
printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);
p=p->next;
}
}
void intoc()//存儲課程信息
{
FILE * fp;
struct couse * p;
char filepath[30];
printf("輸入課程信息要保存的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
fclose(fp);
printf("課程信息已保存在%s中!\n",filepath);
}
void intos()//存儲學生信息
{
FILE * fp;
struct student * p;
char filepath[30];
printf("輸入學生信息要保存的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
p=head2;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
printf("學生信息已保存在%s中!\n",filepath);
}
void into()//存儲信息
{
int i;
printf("1.存儲課程信息\n");
printf("2.存儲學生信息\n");
printf("3.返回主菜單\n");
printf("請輸入(1~3)\n");
scanf("%d",&i);
switch(i)
{
case(1):intoc();break;
case(2):intos();break;
case(3):break;
}
}
void store()//信息主函數
{
int i;
printf("\t\t系統信息查看及存儲\n");
printf("1.查看課程信息\n");
printf("2.查看學生信息\n");
printf("3.存儲信息\n");
printf("4.返回主菜單\n");
printf("請輸入(1~4):\n");
scanf("%d",&i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):into();break;
case(4):break;
}
}
int main()//主函數
{
int i;
start:
printf("\n\t\t\t歡迎使用學生選課系統!\n");
printf("菜單:\n");
printf("1.錄入課程信息\n");
printf("2.課程管理\n");
printf("3.錄入學生信息\n");
printf("4.學生信息管理\n");
printf("5.學生選課\n");
printf("6.系統信息查看及存儲\n");
printf("7.退出系統\n");
printf("\n請輸入菜單選項(1~7):\n");
scanf("%d",&i);
if(i<1 || i>7)
{
printf("輸入錯誤,請重輸:\n");
goto start;
}
switch(i)
{
case(1):
{
system("cls");
inputc();
goto start;
break;
}
case(2):
{
system("cls");
managementc();
goto start;
break;
}
case(3):
{
system("cls");
inputs();
goto start;
break;
}
case(4):
{
system("cls");
managements();
goto start;
break;
}
case(5):
{
system("cls");
elective();
goto start;
break;
}
case(6):
{
system("cls");
store();
goto start;
break;
}
case(7):
{
system("cls");
printf("感謝使用本系統!\n\n再見!\n");
}
}
return(0);
}

⑸ 很急很急,C語言的學生選課系統的題目

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define szSTR 256
#define szNAME 10
#define szGROUP 5 /*每個小組最多允許5名組員,包括組長*/
#define fileAssignments "c:\\0.txt"
#define fileProjects "c:\\1.txt"
#define cntTYPE 4
/*課程*/
char Types[cntTYPE][11] = {"數據結構類", "趣味類", "管理類", "自選類"};
struct TAssignment {
int number; /*課程編號*/
int level; /*難度系數*/
int type; /*類別*/
char title[szSTR];
char requirements[szSTR]; /*技術要求*/
char features[szSTR]; /*技術特點*/
};

time_t Date_Input(char * msg)
{
struct tm t; memset(&t, 0, sizeof(t));
printf("請輸入%s日期,格式為年/月/日:", msg);
scanf("%d/%d/%d", &(t.tm_year), &(t.tm_mon), &(t.tm_mday));
t.tm_year -= 1900;
t.tm_mon --;
return mktime(&t);
}

void Date_Print(time_t t)
{
struct tm * ft = localtime(&t);
printf("%04d/%02d/%02d", ft->tm_year + 1900, ft->tm_mon + 1, ft->tm_mday);
}

void Number_Input(char * msg, int * x)
{
for(;;) {
printf("請輸入%s,以回車結束:", msg);
scanf("%d", x);
if(*x < 0) *x = -*x;
if(*x) break;
printf("錯誤的輸入,請重新輸入。晌笑\n");
}
}
void String_Input(char * msg, char * str)
{
printf("請輸入%s,以回車結束:", msg);
fflush(stdin);
fgets(str, szSTR, stdin);
}

int Type_Input(void)
{
int t = 0, i = 0;
for(;;) {
printf("請輸入課程類別:");
for(i = 0; i < cntTYPE; i++) printf("%d - %s\t"銷謹耐, i, Types[i]);
printf("\b\n");
t = getch() - '0';
if(t >= 0 && t <= cntTYPE) break;
printf("錯誤的輸入\虧春n");
}
return t;
}

fpos_t ASSG_Query(int number)
{
FILE * f = 0; fpos_t p = 0;
struct TAssignment a;
if(number < 1) return 0;
f = fopen(fileAssignments, "rb");
if(!f) {
fprintf(stderr, "課程文件無法打開\n");
return 0;
}
while(!feof(f)) {
fgetpos(f, &p);
fread(&a, sizeof(a), 1, f);
if(a.number == number) {
fclose(f);
return p + 1;
}
}
fclose(f);
return 0;
}

void ASSG_Append(void)
{
FILE * f = 0; fpos_t p = 0;
struct TAssignment a;
memset(&a, 0, sizeof(a));
Number_Input("課程編號", &(a.number ));
p = ASSG_Query(a.number );
if(p) {
fprintf(stderr, "該課程已存在。\n");
return ;
}
Number_Input("難度系數", &(a.level));
String_Input("課程名稱", a.title );
a.type = Type_Input();
String_Input("技術要求", a.requirements);
String_Input("技術特點", a.features);
f = fopen(fileAssignments, "ab");
if(!f) {
fprintf(stderr, "課程文件無法打開\n");
return ;
}
fwrite(&a, sizeof(a), 1, f);
fclose(f);
}

void ASSG_Delete(void)
{
fpos_t p = 0; FILE * f = 0;
struct TAssignment a;
Number_Input("課程編號", &(a.number ));
p = ASSG_Query(a.number );
if(p == 0) {
fprintf(stderr, "該課程不存在。\n");
return ;
}
p--;
f = fopen(fileAssignments, "rb+");
if(!f) {
fprintf(stderr, "課程文件無法打開!\n");
return ;
}
fsetpos(f, &p);
memset(&a, 0, sizeof(a));
fwrite(&a, sizeof(a), 1, f);
fclose(f);
printf("刪除成功!\n");
}

void PrintLine(void)
{
int i = 0; for(i=0; i<79; i++) putchar('-');
putchar('\n');
}
void ASSG_Report(void)
{
FILE * f = 0; struct TAssignment a; int r = 0;
f = fopen(fileAssignments, "rb");
if(!f) {
fprintf(stderr, "目前資料庫中沒有課程。\n");
return ;
}
printf("\n課程資料庫\n");
while(!feof(f)) {
r = fread(&a, sizeof(a), 1, f);
if(r < 1) break;
if(a.number == 0) continue;
PrintLine();
printf("【編號】%d\t【類別】%s\t【難度系數】%d\t【課程】%s【技術要求】%s【技術特點】%s",
a.number , Types[a.type ], a.level ,
a.title , a.requirements , a.features );
}
fclose(f);
printf("\n\n");
}

void ASSG_Brief(int number)
{
struct TAssignment a; FILE * f = 0;
fpos_t p = ASSG_Query(number);
if(!p) {
printf("【尚未選題】\n");
return ;
}
p--;
f = fopen(fileAssignments, "rb");
fsetpos(f, &p);
fread(&a, sizeof(a), 1, f);
fclose(f);
printf("【課程編號】%d【類別】%s【難度系數】%d\t【課程】%s",
a.number , Types[a.type ], a.level ,a.title );
}

int ASSG_Choose(void)
{
int number = 0; fpos_t p = 0;
Number_Input("課程編號", &number);
p = ASSG_Query(number);
return p?number:0;
}
void ASSG_Menu(void)
{
int cmd = 0;
for(;;) {
printf("*****課程管理*****\n0-查看\t1-新增\t2-刪除課程\t任意鍵返回\n");
cmd = getch() - '0';
switch(cmd) {
case 0: ASSG_Report(); break;
case 1: ASSG_Append(); break;
case 2: ASSG_Delete(); break;
default: return ;
}
}
}

/*課程信息*/
struct TProject {
int group_number; /*組號*/
char members[szGROUP][szNAME]; /*小組成員,編號0為組長*/
int assignment; /*選題*/
time_t date_open; /*開題日期*/
time_t date_close; /*結題日期*/
char teacher[szNAME];/*指導教師*/
int process; /*進度0~100%*/
char jobs[szSTR]; /*分工*/
int score; /*評分*/
};

void PROJ_Report(void)
{
struct TProject p; int r = 0;
FILE * f = fopen(fileProjects, "rb");
if(!f) {
fprintf(stderr, "目前沒有開放課程信息。\n");
return;
}
printf("*****課程及小組信息*****\n");
while(!feof(f)) {
r = fread(&p, sizeof(p), 1, f);
if(r < 1) break;
if(p.group_number ==0) continue;
PrintLine();
printf("【組號】%d\t【指導教師】%s【組長】%s\n",
p.group_number , p.teacher , p.members[0]);
printf("【組員】%s %s %s %s\n", p.members[1], p.members[2], p.members[3], p.members[4]);
printf("【分工】%s", p.jobs );
ASSG_Brief(p.assignment );
if(p.assignment ) {
printf("【開題日期】"); Date_Print(p.date_open);
printf("【結題日期】"); Date_Print(p.date_close);
printf("【進度】%d%%【評分】%d\n", p.process, p.score );
}
}
fclose(f);
PrintLine();
}

fpos_t PROJ_Query(int number)
{
struct TProject p; fpos_t q = 0; int r = 0;
FILE * f = fopen(fileProjects, "rb");
if(!f) return 0;
while(!feof(f)) {
fgetpos(f, &q);
r = fread(&p, sizeof(p), 1, f);
if(r < 1) break;
if(p.group_number == number) {
fclose(f);
return q+1;
}
}
fclose(f);
return 0;
}

void PROJ_Append(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0; int i = 0;
memset(&p, 0, sizeof(p));
Number_Input("課程小組編號", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q) {
fprintf(stderr, "該小組已經存在。\n");
return ;
}
printf("請錄入組員信息,第一個組員是組長:");
for(i = 0; i< 5; i++) scanf("%s", p.members [i]);
printf("請輸入指導教師姓名:"); scanf("%s", p.teacher );
String_Input("分工信息", p.jobs );
f = fopen(fileProjects, "ab");
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("課程小組已創建,可以從菜單進行選題。\n");
}

void PROJ_Delete(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0;
memset(&p, 0, sizeof(p));
Number_Input("課程小組編號", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "沒有關於該小組的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("該小組信息已刪除!\n");
}

int PROJ_Invalid(int assignment)
{
struct TProject p; int sum = 0; int r = 0;
FILE * f = fopen(fileProjects, "rb");
if(!f) return 1;
while(!feof(f)) {
r = fread(&p, sizeof(p), 1, f);
if(r < 1) break;
if(p.group_number == 0) continue;
if(p.assignment == assignment) sum++;
}
fclose(f);
return sum<5?0:1;
}
void PROJ_Select(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0; time_t t = 0;
memset(&p, 0, sizeof(p));
Number_Input("課程小組編號", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "沒有關於該小組的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb");
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fread(&p, sizeof(p), 1, f);
fclose(f);
p.assignment = ASSG_Choose();
if(p.assignment==0) {
fprintf(stderr, "錯誤的課程編號。請在題庫中查證後重新選題\n");
return ;
}
if(PROJ_Invalid(p.assignment)) {
fprintf(stderr, "已經有5個小組選擇了該課程,請重新選題\n");
return ;
}
p.date_open = Date_Input("開題");
p.date_close= Date_Input("結題");
if(p.date_open > p.date_close) {
t = p.date_close ;
p.date_close = p.date_open;
p.date_open = t;
}
p.process = 0;
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
fwrite(&p, sizeof(p), 1, f);
fclose(f);
}

void PROJ_Progress(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0;
memset(&p, 0, sizeof(p));
Number_Input("課程小組編號", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "沒有關於該小組的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb");
if(!f) {
fprintf(stderr, "資料庫無記錄!\n");
return ;
}
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fread(&p, sizeof(p), 1, f);
fclose(f);
if(p.assignment < 1) {
fprintf(stderr, "尚未選題,請選題後再補登進度\n");
return ;
}
Number_Input("進度(0~100)", &(p.process ));
if(p.process <0 || p.process > 100) {
fprintf(stderr, "錯誤的進度\n");
return ;
}
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("進度已經登記完成!\n");
}

void PROJ_Evaluate(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0;
memset(&p, 0, sizeof(p));
Number_Input("課程小組編號", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "沒有關於該小組的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb");
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fread(&p, sizeof(p), 1, f);
fclose(f);
if(p.assignment < 1) {
fprintf(stderr, "尚未選題,請選題後再進行評分\n");
return ;
}
Number_Input("評分(0~100)", &(p.score ));
if(p.score <0 || p.score > 100) {
fprintf(stderr, "錯誤的評分\n");
return ;
}
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("成績已經評定完成!\n");
}

void PROJ_Menu(void)
{
int cmd = 0;
for(;;) {
printf("*****課程管理*****\n0-查看\t1-新增\t2-刪除\t3-選題\t4-登記進度\t5-打分\t任意鍵返回\n");
cmd = getch() - '0';
switch(cmd) {
case 0: PROJ_Report(); break;
case 1: PROJ_Append(); break;
case 2: PROJ_Delete(); break;
case 3: PROJ_Select(); break;
case 4: PROJ_Progress(); break;
case 5: PROJ_Evaluate(); break;
default: return ;
}
}
}

int main(void)
{
int cmd = 0;
for(;;) {
printf("*****歡迎使用學生選課管理軟體*****\n0-課程信息\n1-學生選課\n其他任意鍵退出\n");
cmd = getch() - '0';
switch(cmd) {
case 0: ASSG_Menu(); break;
case 1: PROJ_Menu(); break;
default: return 0;
}
}
return 0;
}

⑹ C語言 學生選修課程系統設計

#include<stdio.h>
#include<string.h>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int i;
struct student
{ char name[20];
char sex[10];
int age,num;
struct sco
{ int phy;
int maths;
int english;
int computer;
int vc;
}score;
}stu[1000];
void scan()
{ int u,xe;
i=0;
for(u=0;u<1000;u++)
{ strcpy(stu[u].name,"/並基0");
strcpy(stu[u].sex,"/0");
stu[u].num=0;
stu[u].age=0;
stu[u].score.phy=0;
stu[u].score.maths=0;
stu[u].score.english=0;
stu[u].score.computer=0;
stu[u].score.vc=0;
}
printf("依次輸入你要輸入的信亮蔽碰息,先是名字,然後學號,性別,年齡,成績(5科),此系統最多科存1000名學生信息,剩餘1000\n");
do
{ printf("輸入學生名字\n");
scanf("%s",&stu[i].name);
printf("輸入學生學號\n");
scanf("%d",&stu[i].num);
printf("輸入學生性別\n");
while(scanf("%s",&stu[i].sex)&&strcmp(stu[i].sex,"boy")!=0&&strcmp(stu[i].sex,"girl")!=0)
printf("輸入錯誤,請再輸入");
printf("輸入學生年齡\n");
scanf("%d",&stu[i].age);
printf("輸入學生成績(5科)\n"敬談);
printf("物理:");
scanf("%d",&stu[i].score.phy);
printf("數學:");
scanf("%d",&stu[i].score.maths);
printf("電腦:");
scanf("%d",&stu[i].score.computer);
printf("英語:");
scanf("%d",&stu[i].score.english);
printf("VC:");
scanf("%d",&stu[i].score.vc);
printf("剩餘%d\n",999-i);
printf("0繼續輸入下一個學生信息\n1回到菜單\n");
i++;

if(i>=1000){printf("系統存儲空間已滿,無法繼續增加,抱歉!");break;}

while(scanf("%d",&xe)&&xe!=0&&xe!=1)
printf("輸入錯誤,請再輸入");
if(xe==0)printf("請繼續輸入\n");
}while(xe!=1);
}
void watch1()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ int i2,j2,all[100],averge[100],g,a,za;
char change3[10];
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(i2=1;i2<i;i2++)
{ for(j2=1;j2<i;j2++)
{ if(all[j2-1]<all[j2])
{ a=stu[j2-1].age;stu[j2-1].age=stu[j2].age;stu[j2].age=a;
a=stu[j2-1].score.computer;stu[j2-1].score.computer=stu[j2].score.computer;stu[j2].score.computer=a;
a=stu[j2-1].score.english;stu[j2-1].score.english=stu[j2].score.english;stu[j2].score.english=a;
a=stu[j2-1].score.maths;stu[j2-1].score.maths=stu[j2].score.maths;stu[j2].score.maths=a;
a=stu[j2-1].score.phy;stu[j2-1].score.phy=stu[j2].score.phy;stu[j2].score.phy=a;
a=stu[j2-1].score.vc;stu[j2-1].score.vc=stu[j2].score.vc;stu[j2].score.vc=a;

a=all[j2-1];all[j2-1]=all[j2];all[j2]=a;
a=stu[j2-1].num;stu[j2-1].num=stu[j2].num;stu[j2].num=a;
a=averge[j2-1];averge[j2-1]=averge[j2];averge[j2]=a;
strcpy(change3,stu[j2-1].name);
strcpy(stu[j2-1].name,stu[j2].name);
strcpy(stu[j2].name,change3);
strcpy(change3,stu[j2-1].sex);
strcpy(stu[j2-1].sex,stu[j2].sex);
strcpy(stu[j2].sex,change3);
}
}
}
printf("學號 姓名 性別 年齡 物理 數學 英語 電腦 VC 總分 平均分 名次\n");
for(g=0;g<i;g++)
printf("%-6d%-10s%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d\n",stu[g].num,stu[g].name,stu[g].sex,stu[g].age,stu[g].score.phy,stu[g].score.maths,stu[g].score.english,stu[g].score.computer,stu[g].score.vc,all[g],averge[g],g+1);
printf("輸入0返回菜單");
while(scanf("%d",&za)&&za!=0)
printf("輸入錯誤,請再輸入");
if(za==0)break;
}
}
void watch2()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ int max[5],min[5],j,g,i2,all[100],averge[100],za,j2,a,yy[5][2];char change3[20];
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(i2=0;i2<i;i2++)
{ for(j2=1;j2<i;j2++)
{ if(all[j2-1]<all[j2])
{ a=stu[j2-1].age;stu[j2-1].age=stu[j2].age;stu[j2].age=a;
a=stu[j2-1].score.computer;stu[j2-1].score.computer=stu[j2].score.computer;stu[j2].score.computer=a;
a=stu[j2-1].score.english;stu[j2-1].score.english=stu[j2].score.english;stu[j2].score.english=a;
a=stu[j2-1].score.maths;stu[j2-1].score.maths=stu[j2].score.maths;stu[j2].score.maths=a;
a=stu[j2-1].score.phy;stu[j2-1].score.phy=stu[j2].score.phy;stu[j2].score.phy=a;
a=stu[j2-1].score.vc;stu[j2-1].score.vc=stu[j2].score.vc;stu[j2].score.vc=a;

a=all[j2-1];all[j2-1]=all[j2];all[j2]=a;
a=stu[j2-1].num;stu[j2-1].num=stu[j2].num;stu[j2].num=a;
a=averge[j2-1];averge[j2-1]=averge[j2];averge[j2]=a;
strcpy(change3,stu[j2-1].name);
strcpy(stu[j2-1].name,stu[j2].name);
strcpy(stu[j2].name,change3);
strcpy(change3,stu[j2-1].sex);
strcpy(stu[j2-1].sex,stu[j2].sex);
strcpy(stu[j2].sex,change3);
}
}
}
printf("學號 姓名 性別 年齡 物理 數學 英語 電腦 VC 總分 平均分 名次\n");
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(g=0;g<i;g++)
printf("%-6d%-10s%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d\n",stu[g].num,stu[g].name,stu[g].sex,stu[g].age,stu[g].score.phy,stu[g].score.maths,stu[g].score.english,stu[g].score.computer,stu[g].score.vc,all[g],averge[g],g+1);

max[0]=0;min[0]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.phy>=max[0])
{ max[0]=stu[j].score.phy;yy[0][0]=j;}
if(stu[j].score.phy<=min[0])
{ min[0]=stu[j].score.phy;yy[0][1]=j;}
}
max[3]=0;min[3]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.computer>=max[3])
{ max[3]=stu[j].score.computer;yy[3][0]=j;}
if(stu[j].score.computer<=min[3])
{ min[3]=stu[j].score.computer;yy[3][1]=j;}
}
max[2]=0;min[2]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.english>=max[2])
{ max[2]=stu[j].score.english;yy[2][0]=j;}
if(stu[j].score.english<=min[2])
{ min[2]=stu[j].score.english;yy[2][1]=j;}
}
max[1]=0;min[1]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.maths>=max[1])
{ max[1]=stu[j].score.maths;yy[1][0]=j;}
if(stu[j].score.maths<=min[1])
{ min[1]=stu[j].score.maths;yy[1][1]=j;}
}
max[4]=0;min[4]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.vc>=max[4])
{ max[4]=stu[j].score.vc;yy[4][0]=j;}
if(stu[j].score.vc<=min[4])
{ min[4]=stu[j].score.vc;yy[4][1]=j;}
}
printf("物理最高分:%d %s最低分:%d %s\n數學最高分:%d %s最低分%d %s\n英語最高分:%d %s最低分:%d %s\n電腦最高分:%d %s最低分:%d %s\nV C最高分:%d %s最低分:%d %s\n",max[0],stu[yy[0][0]].name,min[0],stu[yy[0][1]].name,max[1],stu[yy[1][0]].name,min[1],stu[yy[1][1]].name,max[2],stu[yy[2][0]].name,min[2],stu[yy[2][1]].name,max[3],stu[yy[3][0]].name,min[3],stu[yy[3][1]].name,max[4],stu[yy[4][0]].name,min[4],stu[yy[4][1]].name);
printf("輸入0返回菜單");
while(scanf("%d",&za)&&za!=0)
printf("輸入錯誤,請再輸入");
if(za==0)break;
}

}
void fine()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ printf("用學號查找請輸入0,用姓名查找請輸入1\n");
int i1,j1,num1,te=0,tc=0;char name1[20];
scanf("%d",&i1);
if(i1!=0&&i1!=1)
printf("輸入錯誤\n");
else if(i1==0)
{ printf("請輸入學生學號");
scanf("%d",&num1);
for(j1=0;j1<i;j1++)
if(num1==stu[j1].num)
{ printf("學號:%d姓名:%s性別:%s年齡:%d物理:%d數學:%d英語:%d電腦:%dVC:%d總分%d\n",stu[j1].num,stu[j1].name,stu[j1].sex,stu[j1].age,stu[j1].score.phy,stu[j1].score.maths,stu[j1].score.english,stu[j1].score.computer,stu[j1].score.vc,stu[j1].score.vc+stu[j1].score.computer+stu[j1].score.english+stu[j1].score.maths+stu[j1].score.phy);
te=1;
}
if(te!=1) printf("無此學生信息\n");

}
else if(i1==1)
{ printf("請輸入學生姓名");
scanf("%s",&name1);
for(j1=0;j1<i;j1++)
if(strcmp(name1,stu[j1].name)==0)
{ printf("學號:%d姓名:%s性別:%s年齡:%d物理:%d數學:%d英語:%d電腦:%dVC:%d總分%d\n",stu[j1].num,stu[j1].name,stu[j1].sex,stu[j1].age,stu[j1].score.phy,stu[j1].score.maths,stu[j1].score.english,stu[j1].score.computer,stu[j1].score.vc,stu[j1].score.vc+stu[j1].score.computer+stu[j1].score.english+stu[j1].score.maths+stu[j1].score.phy);
tc=1;
}
if(tc!=1) printf("無此學生信息\n");
}

printf("繼續查找請輸入1,回菜單請輸入0");
int qq;
while(scanf("%d",&qq)&&qq!=0&&qq!=1)
printf("輸入錯誤,請再輸入");
if(qq==1)continue;
if(qq==0)break;
}
}
void became()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ printf("請輸入要修改的學生學號\n");
int num2,j3;
scanf("%d",&num2);
for(j3=0;j3<=i;j3++)
if(num2==stu[j3].num)
{ strcpy(stu[j3].name,"/0");
printf("重新輸入該學生所有數據,依次為學號、姓名、性別、年齡、物理、數學、英語、電腦、VC。\n");
printf("輸入學生名字\n");
scanf("%s",&stu[j3].name);
printf("輸入學生學號\n");
scanf("%d",&stu[j3].num);
printf("輸入學生性別\n");
while(scanf("%s",&stu[j3].sex)&&strcmp(stu[j3].sex,"boy")!=0&&strcmp(stu[j3].sex,"girl")!=0)
printf("輸入錯誤,請再輸入");
printf("輸入學生年齡\n");
scanf("%d",&stu[j3].age);
printf("輸入學生成績(5科)\n");
printf("物理:");
scanf("%d",&stu[j3].score.phy);
printf("數學:");
scanf("%d",&stu[j3].score.maths);
printf("電腦:");
scanf("%d",&stu[j3].score.computer);
printf("英語:");
scanf("%d",&stu[j3].score.english);
printf("VC:");
scanf("%d",&stu[j3].score.vc);
printf("修改成功");
}
else("未找到該學號學生請確定輸入無誤\n");
int za;
printf("輸入0返回菜單,輸入1繼續查找");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("輸入錯誤,請再輸入");
if(za==0)break;
if(za==1)continue;
}
}
void out()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ printf("請輸入要刪除的學生的學號\n");
int num3,j4,i3,za;
scanf("%d",&num3);
for(j4=0;j4<=i;j4++)
if(num3==stu[j4].num)
{ for(i3=j4;i3<i;i3++)
{ stu[i3].num=stu[i3+1].num;
stu[i3].age=stu[i3+1].age;
strcpy(stu[i3].name,stu[i3+1].name);
strcpy(stu[i3].sex,stu[i3+1].sex);
stu[i3].score.computer=stu[i3+1].score.computer;
stu[i3].score.english=stu[i3+1].score.english;
stu[i3].score.maths=stu[i3+1].score.maths;
stu[i3].score.phy=stu[i3+1].score.phy;
stu[i3].score.vc=stu[i3+1].score.vc;
}
i--;
printf("修改成功\n");
}
else printf("未找到該學號學生請確定輸入無誤\n");
printf("輸入0返回菜單,輸入1繼續修改");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("輸入錯誤,請再輸入");
if(za==0)break;
if(za==1)continue;
}
}
void into()
{ for(;;)
{ if(i>1000){printf("系統存儲空間已滿,無法繼續增加,抱歉!\n");break;}
printf("輸入要增加學生信息,依次為學號、姓名、性別、年齡、物理、數學、英語、電腦、VC。\n");
i++;
printf("輸入學生名字\n");
scanf("%s",&stu[i-1].name);
printf("輸入學生學號\n");
scanf("%d",&stu[i-1].num);
printf("輸入學生性別\n");
while(scanf("%s",&stu[i-1].sex)&&strcmp(stu[i-1].sex,"boy")!=0&&strcmp(stu[i-1].sex,"girl")!=0)
printf("輸入錯誤,請再輸入");
printf("輸入學生年齡\n");
scanf("%d",&stu[i-1].age);
printf("輸入學生成績(5科)\n");
printf("物理:");
scanf("%d",&stu[i-1].score.phy);
printf("數學:");
scanf("%d",&stu[i-1].score.maths);
printf("電腦:");
scanf("%d",&stu[i-1].score.computer);
printf("英語:");
scanf("%d",&stu[i-1].score.english);
printf("VC:");
scanf("%d",&stu[i-1].score.vc);
printf("輸入成功,剩餘%d",1000-i);
if(i>=1000){printf("系統存儲空間已滿,無法繼續增加,抱歉!\n");break;}
int za;
printf("輸入0返回菜單,輸入1繼續增加");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("輸入錯誤,請再輸入");
if(za==0)break;
if(za==1)continue;
}
}
void main()
{ int a,wu=0;
FILE *fp;
fp=fopen("out.txt","rb+");
if(feof(fp)!=0)i=0;
while(feof(fp)==0)
{ fread(&i,sizeof(int),1,fp);
for(int m=0;m<i;m++)
fread(&stu[m],sizeof(struct student),1,fp);
}
fclose(fp);
do
{printf("********************主菜單********************\n");
printf(" 1.輸入和儲存學生信息(會刪除之前記錄)\n");
printf(" 2.查看學生信息(已排名)\n");
printf(" 3.學生成績統計\n");
printf(" 4.查找學生信息\n");
printf(" 5.修改學生信息\n");
printf(" 6.刪除學生信息\n");
printf(" 7.增加學生信息\n");
printf(" 8.退出\n");
printf("**********************************************\n");
printf("請輸入選擇項目序號:");
while(scanf("%d",&a)&&a!=0&&a!=1&&a!=2&&a!=3&&a!=4&&a!=5&&a!=6&&a!=7&&a!=8)
printf("輸入錯誤,請再輸入");

if(a==1)
{scan();}

if(a==2)
{watch1();}
if(a==3)
{watch2();}
if(a==4)
{fine();}
if(a==5)
{became();}
if(a==6)
{out();}
if(a==7)
{into();}
if(a==8)
{ FILE *fp;
fp=fopen("out.txt","rb+");

fwrite(&i,sizeof(int),1,fp);
for(int m=0;m<i;m++)
fwrite(&stu[m],sizeof(struct student),1,fp);

fclose(fp);

break;
}

}while(8);
}

⑺ 很誠懇求c語言——學生選修課程設計(最好有詳解)如果好我還增加懸賞!

興哥最帥。。多給點分唄

⑻ 求做個C語言 學生選課系統的設計與實現 ,收費的也可以

vc++學生信息管理系統(論文+程序)

摘要
隨著現代科學的發展,計算機的應用幾乎進入了生活中的每一個領域。計算機技術察缺在信息管理上也得到了越來越深入而廣泛的應用,信息管理系統的實施在技術上已逐步成熟。
學生信息管理系統是學校等教育單位不可缺少的部分,利用計算機對學生信息進行管理,具有傳統手工管理無法比擬的優點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高學生信息管理的效率,也是科學化、正規化的管理,與世界接軌的重要條件。
本系統以Visual C++6.0作為開發工具,Access存儲學生信息,應用MFC進行ODBC編程,實現學生信息的管理。本系統界面友好,操作方便,支持海量數據,維護方便,是功能比較完備的信息管理系統。

關鍵字:VC++6.0,資料庫,Access,ODBC。

目 錄
前言……………………………………………………………………………………4
1.系統概述 ……………………………………………………………………………5
1.1 系統需求………………………………………………………………………5
1.2 可行性分析……………………………………………………………………5
1.3 系統簡介………………………………………………………………………5
1.3.1項目規劃 …………………………………………………………………5
1.3.2系統模型 …………………………………………………………………6
2. 系統開發環境……………………………………………………………………7
2.1 VC++概述……………………………………………………………………7
2.2 Visual C++進行資料庫開發的優勢…………………………………………7
2.3 Visual C++提供的資料庫訪問技術 …………………………………………8
2.4 MFC ODBC 資料庫訪問技術介紹 …………………………………………8
3.資料庫設計 ……………………………………………………………………… 10
3.1登陸用戶表 ……………………………………………………………………10
3.2學生信息表 ……………………………………………………………………10
3.3成績表設計 ……………………………………………敗滾辯………………………11
4. 詳細設計…………………………………………………………………………12
4.1連接資料庫…備源…………………………………………………………………12
4.2動態設置數據源………………………………………………………………12
4.3使用Tab Control控制項…………………………………………………………12
4.4模塊詳細設計…………………………………………………………………13
4.4.1登陸…………………………………………………………………………13
4.4.2學生信息管理………………………………………………………………13
4.4.3添加記錄……………………………………………………………………15
4.4.4 用戶管理…………………………………………………………………15
4.4.5成績管理……………………………………………………………………16
5. 總結…………………………………………………………………………………21
致謝……………………………………………………………………………………22
參考文獻………………………………………………………………………………23
另外,虛機團上產品團購,超級便宜

⑼ c語言學生選修課程管理系統

#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct student
{
char name[60];
char ID[7];
int score;
};int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void px();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300]; //這個數組用來保存所有的學生信息 和文件裡面的一致
int Number=0; //記錄總的學生人數 也就是數組/文件裡面的學生人數
void main()
{
int choose=0;
FILE *fp=NULL;
char yesorno;

if((fp=fopen("C://student.dat","rb"))==NULL)
{
printf("\n=========>提示:文件不存在,是否要創建一個?(y/n)\n");
scanf("%c",&yesorno);
if(yesorno=='y'||yesorno=='Y')
{

//這里僅為了建立文件
fp=fopen("C://student.dat","wb");
fclose(fp);
}
else
exit(0);
}
else
{
Number=dq(st); //要是文件只能夠已經有數據 將數據初始化到數組中
}
system("cls");
while(true)
{
xianshi();
printf("\t\t====>請選擇:");
scanf("%d",&choose);
system("cls");
switch(choose)
{
case 0: exit(0);
//退出
break;
case 1: add();
fh();//增加學生成績
break;
case 2: select();
fh();//查看學生成績
break;
case 3: chazhao();
fh();// 查找
break;
case 4: del();
fh();//刪除
break;
case 5: tj();
fh();//統計
break;
case 6: px();
fh();//排序
break;
case 7: bjg();
fh();//輸出不及格
break;
case 8: xg();
fh();//修改
break;
case 9:zz();
fh();//作者
break;
case 10:bca();
fh();//保存

break;
default:
break;
}
fflush(stdin);
getchar();
system("cls");
}
}
void bca()
{
printf("\t=====程序在運行時已自動保存.....\n");
}
void fh()
{
printf("\t===>按Enter鍵返回主菜單\n");
}
void xg() //修改學生信息
{
int way=0;
printf("請選擇修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按學號查找修改\n");
scanf("%d",&way);
switch(way)
{
case 1: xmxg();
break;
case 2: xhxg();
break;
default: printf("輸入有誤,結束!\n");
break;
}
}
//按姓名修改
void xmxg()
{
FILE *fp=NULL;
char name[60];
int i=0;
int changeIndex=0;
int index=0;
printf("請輸入要修改的學生姓名:");
scanf("%s",name);
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name))
{
changeIndex=i; //保存要修改的人的下標
}
break;
}
printf("\t姓名\t學號\t成績\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("請重新輸入該學生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("學號:");
scanf("%s",st[changeIndex].ID);
printf("成績:");
scanf("%d",&st[changeIndex].score); //信息修改後重新更新文件裡面的數據 以保持數據一致性
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
void xhxg()//按學號修改
{
FILE *fp=NULL;
char id[60];
int i=0;
int changeIndex=0;
int index=0;
printf("請輸入要修改的學生學號:");
scanf("%s",id);
for (i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID))
{
changeIndex=i; //保存要修改的人的下標
}
break;
}
printf("\t姓名\t學號\t成績\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("請重新輸入該學生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("學號:");
scanf("%s",st[changeIndex].ID);
printf("成績:");
scanf("%d",&st[changeIndex].score);

//信息修改後重新更新文件裡面的數據 以保持數據一致性
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\t=======>修改成功\n");
}void bjg() //輸出不及格人數
{
int i=0;
printf("以下是不及格:\n");
printf("\t姓名\t學號\t成績\n");
for (i=0;i<Number;i++)
{
if (st[i].score<60)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void px()//排序
{
struct student temp;
int wantNUmber=0;
int i=0;
int j=0;
for(i=0;i<Number-1;i++)
{
for(j=i;j<Number-1;j++)
{
if(st[j].score>st[j+1].score)
{
temp=st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
}
}
printf("你想輸出前幾名的成績:");
scanf("%d",&wantNUmber);
if (wantNUmber>Number)
{
wantNUmber=Number;
} printf("\t姓名\t學號\t成績\n");
for(i=0;i<wantNUmber;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void tj()//統計
{
int i=0;
double sum=0.0;
for(i=0;i<Number;i++)
{
sum+=st[i].score;
}
printf("全班總分為:%f\n",sum);
printf("平均分為:%f\n",sum/Number);
}
void del()//刪除
{
int n=0;
printf("1 按姓名刪除\n");
printf("2 按學號刪除\n");
scanf("%d",&n);
switch(n)
{
case 1: xmsc();
break;
case 2: xhsc();
break;
}
}
void xmsc()//按姓名刪除
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("請輸入要刪除的學生姓名:");
scanf("%s",name);
for(i=0;i<Number;i++)
{
if (strcmp(name,st[i].name)==0) //如果查找到就刪除
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
} //將剩餘數據寫入文件 重新一寫的方式打開文件 把以前的數據擦除了
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("刪除成功;\n");

}
void xhsc()//按學號刪除
{
FILE *fp=NULL;
char id[60];
int i=0;
int j=0;
printf("請輸入要刪除的學生學號:");
scanf("%s",id);
for(i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0) //如果查找到就刪除
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}

//將剩餘數據寫入文件 重新一寫的方式打開文件 把以前的數據擦除了
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("刪除成功;\n");
}
void chazhao()//查找學生
{
int n=0;
printf("1 按姓名查找\n");
printf("2 按學號查找\n");
scanf("%d",&n);
switch(n)
{
case 1: xmcz();
break;
case 2: xhcz();
break;
default: printf("輸入有誤,結束!\n");
break;
}
}
void xhcz()//按學號查找
{
char id[7];
int i=0;
printf("請輸入要查找學生學號:");
scanf("%s",id);
system("cls");
printf("\t姓名\t學號\t成績\n");
for (i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void xmcz()//按姓名查找
{
char name[7];
int i=0;
printf("請輸入要查找學生姓名:");
scanf("%s",name);
system("cls");
printf("\t姓名\t學號\t成績\n");
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void zz()
{
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^^ 武漢工程大學郵電與信息工程學院 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 07網路與安全管理2班 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^ 易樊製作 ^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 禁止CTRL+C 謝謝合作 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^^^ QQ:895115828\n\n");
printf("\t**********************************************************\n\n");
}
void select()//查看學生
{
int i=0;
printf("以下是全部學生成績\n");
printf("\t姓名\t學號\t成績\n");
for(i=0;i<Number;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void add()//增加學生
{
int numberTemp=0;
int i=0;
struct student temp; //臨時保存信息
printf("請輸入要增加學生成績個數:");
scanf("%d",&numberTemp);
for(i=0;i<numberTemp;i++)
{
printf("輸入第%d個同學信息\n",i+1);
printf("姓名:");
scanf("%s",temp.name);
printf("學號:");
scanf("%s",temp.ID);
printf("成績:");
scanf("%d",&temp.score);
st[Number++]=temp; //將剛添加的寫入到數組
bc(&temp); //將剛添加的寫入到文件 }
printf("添加成功\n");
}
void bc(struct student *st)
{
FILE *fp=NULL;
fp=fopen("C://student.dat","ab+");
fwrite(st,sizeof(struct student),1,fp);
fclose(fp);
}
int dq(struct student st[])
{
FILE *fp=NULL;
int i=0;
fp=fopen("C://student.dat","rb");
while(fread(&st[i],sizeof(struct student),1,fp))
i++;
fclose(fp);
return i;
}
void xianshi()
{
printf("\t*****************************************************************\n");
printf("\t* *\n");
printf("\t* 學生成績管理系統 *\n");
printf("\t* *\n");
printf("\t* [1] 增加學生成績 [2] 查看學生成績 *\n");
printf("\t* [3] 查找學生成績 [4] 刪除學生成績 *\n");
printf("\t* [5] 統計(總成績和平均分) [6] 輸出前N名學生成績 *\n");
printf("\t* [7] 輸出不及格人數 [8] 修改學生信息 *\n");
printf("\t* [9] 關於作者 [10] 保存數據 *\n");
printf("\t* [0] 退出系統 *\n");
printf("\t*****************************************************************\n");
}運行成功,請你下去後慢慢研究下這個程序,很簡單的,祝你成功!~
求採納為滿意回答。

⑽ 學生選修課程系統設計 一個C語言程序

按著上面給喊謹出的數據
通過輸入函數將相應數據錄入到並滲配結構體中再將其保存到文件即可(錄入模塊)
顯示和查詢時可以通過循環讀取文件
將數據讀取到對應的結構體中然後進行相應操作即可
在main函數中可以設計一個菜單進行循環操作

如果代碼不想自己寫的話絕指
我可以有償代勞