计算机综合大作业C语言选课系统.docx

上传人:b****6 文档编号:7988718 上传时间:2023-01-27 格式:DOCX 页数:40 大小:215.78KB
下载 相关 举报
计算机综合大作业C语言选课系统.docx_第1页
第1页 / 共40页
计算机综合大作业C语言选课系统.docx_第2页
第2页 / 共40页
计算机综合大作业C语言选课系统.docx_第3页
第3页 / 共40页
计算机综合大作业C语言选课系统.docx_第4页
第4页 / 共40页
计算机综合大作业C语言选课系统.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

计算机综合大作业C语言选课系统.docx

《计算机综合大作业C语言选课系统.docx》由会员分享,可在线阅读,更多相关《计算机综合大作业C语言选课系统.docx(40页珍藏版)》请在冰豆网上搜索。

计算机综合大作业C语言选课系统.docx

计算机综合大作业C语言选课系统

 

东北石油大学

 

综合应用(c)作业

课程计算机综合应用

题目课程管理系统

院系石油工程学院

专业班级

学生姓名

 

 

2014年10月25日

 

1.系统的功能

(一)管理员:

1.添加功能:

管理员对用户的用户名、密码、用户类型,进行添加工作。

2.修改功能:

管理员对用户的用户名、密码、用户类型,进行修改工作。

3.删除功能:

管理员对用户的用户名、密码、用户类型,进行删除工作。

(二)老师:

1.)添加功能:

老师对课程的添加工作。

2)查询功能:

a.查询全部课程。

b.按照课程的性质(必修或者选修)进行查找并显示。

c.按照课程的编号进行查找并显示。

d.按照课程的学分进行查找并显示。

(三)学生:

1)查询功能:

a查询全部课程。

b.按照课程的性质(必修或者选修)进行查找并显示。

c.按照课程的编号进行查找并显示。

d.按照课程的学分进行查找并显示。

2)选课功能:

必修课学生必选,学生对选修课进行选课。

且选修课学分加必修课学分不少于30分。

已选的选修课放入文件中。

3)退选功能:

学生只能对选修课进行退选,必修课不能退选。

(四)退出系统。

2.界面设计和函数的使用

(1)main函数。

(2)check函数:

检验所输入的类别,用户名和密码是否正确。

(3)she【管理员函数】

管理员调用函数.add,del,edits:

管理员对用户进行添加,删除,编辑的操作。

(4)teacher【教师函数】

教师调用函数addkc;kccxtea【kcxxtea,kccxtea1,kccxtea2,kccxtea3,】依次为教师添加课程,教师查询课程(包括查询全部课程,按照课程名称查询,按照课程性质查询,按照学分查询)

(5),student【学生函数】

学生调用函数

1查询课程函数kccx【kcxx,kccx1,kccx2,kccx3,】

学生查询课程(包括查询全部课程,按照课程名称查询,按照课程性质查询,按照学分查询)

2选课函数choose【调用choosexuanxiu】

必修课学生必选,学生对选修课进行选课。

且选修课学分加必修课学分不少于40分。

已选的选修课放入文件中。

3退课函数tuixuan

学生只能对选修课进行退选,必修课不能退选。

登录界面

管理员界面

教师界面

录入课程界面

查询课程界面

退出系统界面

学生界面

主界面

查询界面

选课界面

 

查询退课界面

退课界面

3.成员分工

choose,choosexuanxiu,tuixuan,cxxx,addkc函数。

kccx,kccxtea,kccx2,kccx2tea,kccx3,kcxs函数。

kccx1,kccx1tea,kcxs,kcxstea,kccx3tea,kcxstea函数。

add,edits,check,del函数及美化工作。

main,student,teacher函数及整合工作。

4.程序中的数据结构

1.存放课程信息的结构体

structcouse

{

intnum1;

charname1[20];

intscore;

chartype[20];

};

2.存放用户信息的结构体

structyh

{charname[20];

charpass[10];

intf;

};

5.源代码

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

intM=0;

structcouse//课程信息结构体

{

intnum1;

charname1[20];

intscore;

chartype[20];

};

voidadd()//添加用户

{

charusname[20];

charuspw[10];

intclas;

FILE*fp;

if((fp=fopen("uhn.txt","a"))==NULL)

{

printf("不能打开文件\n");

exit(0);

}

printf("请输入用户名,密码和类别");

gets(usname);

gets(uspw);

scanf("%d",&clas);

getchar();

fprintf(fp,"%s%s%d\n",usname,uspw,clas);

fclose(fp);

}

 

voiddel(charname[])//删除用户

{structyh

{charname[20];

charpass[10];

intf;

}stdl[100];

FILE*fp;

inti=0,n;

if((fp=fopen("uhn.txt","r"))==NULL)

{printf("不能打开文件\n");

exit(0);

}

while(!

feof(fp))

{fscanf(fp,"%s%s%d",stdl[i].name,stdl[i].pass,&stdl[i].f);

if(strcmp(name,stdl[i].name)!

=0)i++;

}

fclose(fp);

if((fp=fopen("uhn.txt","w"))==NULL)

{printf("不能打开文件\n");

exit(0);

}

for(n=0;n

fprintf(fp,"%s%s%d\n",stdl[n].name,stdl[n].pass,stdl[n].f);

fclose(fp);

}

voidedits(charname[])//修改用户

{structyh

{charname[20];

charpass[10];

intf;

}std1[100];

FILE*fp;

inti=0,n,lb;

charyhm[20],pw[10];

printf("输入修改后的用户名,密码和类别");

gets(yhm);

gets(pw);

scanf("%d",&lb);

if((fp=fopen("uhn.txt","r"))==NULL)

{printf("不能打开文件\n");

exit(0);

}

while(!

feof(fp))

{fscanf(fp,"%s%s%d",std1[i].name,std1[i].pass,&std1[i].f);

if(strcmp(name,std1[i].name)==0)

{strcpy(std1[i].name,yhm);strcpy(std1[i].pass,pw);std1[i].f=lb;}

i++;

}

fclose(fp);

if((fp=fopen("uhn.txt","w"))==NULL)

{printf("不能打开文件\n");

exit(0);

}

for(n=0;n

fprintf(fp,"%s%s%d\n",std1[n].name,std1[n].pass,std1[n].f);

fclose(fp);

}

 

voidshe()//管理员函数

{

intsele,mark;

charusername[20];

charpassword[10];

printf("\n\t************\n管理员系统\n************\n\n");

printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");

printf("┃┃用户管理┃┃\n");

printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");

printf("┃●[1]添加用户┃\n");

printf("┃┃\n");

printf("┃●[2]删除用户┃\n");

printf("┃┃\n");

printf("┃●[3]修改用户┃\n");

printf("┃┃\n");

printf("┃●[0]退出系统┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("请选择:

");

do

{

printf("0-3\n");

scanf("%d",&sele);getchar();

switch(sele)

{case1:

printf("输入添加用户的信息\n");add();break;

case2:

printf("输入要删除的用户的信息\n");gets(username);del(username);break;

case3:

printf("输入要修改的用户信息\n");gets(username);edits(username);break;

case0:

exit(0);

default:

printf("0~4\n");

}

}while

(1);

}

intcheck(charna[],charpa[],intcl)

{

charfname[20];

charfpass[10];

FILE*fp;

intfound=0,fclas;

if((fp=fopen("uhn.txt","r"))==NULL)

{

printf("不能打开文件\n");

exit(0);

}

while(!

feof(fp))

{fscanf(fp,"%s%s%d",fname,fpass,&fclas);

if(strcmp(fname,na)==0&&strcmp(fpass,pa)==0&&fclas==cl)

{found=1;break;}

}

fclose(fp);

returnfound;

}

 

//添加课程函数

voidaddkc()

{

FILE*fp;voidteacher();

inti=0,n;

structcouses[100];

printf("请输入要录入的课程数\n");

scanf("%d",&n);

if((fp=fopen("kecheng.dat","ab+"))==NULL)

{

printf("不能打开文件\n");

exit(0);

}

for(i=0;i

{

printf("\n\t请输入课程编号:

");

scanf("%4d",&s[i].num1);

printf("\n\t请输入课程名称:

");

scanf("%s",s[i].name1);

printf("\n\t请输入课程学分:

");

scanf("%4d",&s[i].score);

printf("\n\t请输入课程课程性质:

");

scanf("%s",s[i].type);

fwrite(&s[i],sizeof(structcouse),1,fp);

}

fclose(fp);

printf("\t\t\t继续录入课程请按1返回上一页面请按2\t\n");

scanf("%d",&i);

switch(i)

{

case1:

addkc();break;

case2:

teacher();break;

}

}

voidteacher()//教师主页面

{inti;

voidaddkc();voidkccxtea();

printf("\n\t************\n老师课程系统\n************\n\n");

printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");

printf("┃┃教师管理┃┃\n");

printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");

printf("┃●[1]录入课程┃\n");

printf("┃┃\n");

printf("┃●[2]查询课程┃\n");

printf("┃┃\n");

printf("┃●[3]退出系统┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("请选择:

");

scanf("%d",&i);

switch(i)

{

case1:

addkc();;break;

case2:

kccxtea();break;

case3:

exit(0);

}

}

voidstudent()//学生主页面

{intm,i;

voidkccx();voidchoosexuanxiu();voidkcxs();voidtuixuan();voidchoose();voidcxxx();

printf("\n\t************\n学生课程系统\n************\n\n");

printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");

printf("┃┃学生主页面┃┃\n");

printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");

printf("┃●[1]课程信息┃\n");

printf("┃┃\n");

printf("┃●[2]查询课程┃\n");

printf("┃┃\n");

printf("┃●[3]学生选课┃\n");

printf("┃┃\n");

printf("┃●[4]查询已选课┃\n");

printf("┃┃\n");

printf("┃●[5]学生退课┃\n");

printf("┃┃\n");

printf("┃●[6]退出系统┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("请选择:

");

scanf("%d",&i);

switch(i)

{

case1:

kcxs();break;

case2:

kccx();break;

case3:

choose();break;

case4:

cxxx();break;

case5:

tuixuan();break;

case6:

exit(0);

}

}

voidkcxstea()//显示所有课程

{

FILE*fp;

structcousecou;

intm;

if((fp=fopen("kecheng.dat","rb"))==NULL)

{printf("cannotopenthisfile.\n");

exit(0);}

while(fread(&cou,sizeof(cou),1,fp)==1)

{/*每读取一个结构体数据,分别输出4个成员*/

printf("课程编号:

%d",cou.num1);

printf("课程名称:

%s",cou.name1);

printf("课程学分:

%ld",cou.score);

printf("课程类型:

%s\n",cou.type);}

fclose(fp);

printf("按任何数字返回上一界面\n");

scanf("%d",&m);

getchar();

teacher();

}

voidkcxs()//显示所有课程

{

FILE*fp;

structcousecou;

intm;

if((fp=fopen("kecheng.dat","rb"))==NULL)

{printf("cannotopenthisfile.\n");

exit(0);}

while(fread(&cou,sizeof(cou),1,fp)==1)

{/*每读取一个结构体数据,分别输出4个成员*/

printf("课程编号:

%d",cou.num1);

printf("课程名称:

%s",cou.name1);

printf("课程学分:

%ld",cou.score);

printf("课程类型:

%s\n",cou.type);}

fclose(fp);

printf("按任意数字返回上一界面\n");

scanf("%d",&m);

getchar();

student();

}

voidkccxtea()//老师课程查询主页面

{

inti,m;

voidkccx1tea();voidkccx2tea();voidteacher();voidkccx3tea();voidkcxstea();

printf("\n\t************\n老师课程系统\n************\n\n");

printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");

printf("┃┃查询主页面┃┃\n");

printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");

printf("┃●[0]查询所有课程┃\n");

printf("┃┃\n");

printf("┃●[1]按课程名称查询┃\n");

printf("┃┃\n");

printf("┃●[2]按课程性质查询┃\n");

printf("┃┃\n");

printf("┃●[3]按课程学分查询┃\n");

printf("┃┃\n");

printf("┃●[4]返回到上一页面┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("请选择:

");

scanf("%d",&i);

switch(i)

{

case0:

kcxstea();break;

case1:

kccx1tea();break;

case2:

kccx2tea();break;

case3:

kccx3tea();break;

case4:

teacher();break;

}

}

voidkccx()//学生课程查询主页面

{

inti,m;

voidkccx1();voidkccx2();voidstudent();voidkccx3();voidkcxs();

printf("\n\t************\n学生课程系统\n************\n\n");

printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");

printf("┃┃查询主页面┃┃\n");

printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");

printf("┃●[1]按课程名称查询┃\n");

printf("┃┃\n");

printf("┃●[2]按课程性质查询┃\n");

printf("┃┃\n");

printf("┃●[3]按课程学分查询┃\n");

printf("┃┃\n");

printf("┃●[4]返回到上一页面┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("请选择:

");

scanf("%d",&i);

switch(i)

{

case0:

kcxs();break;

case1:

kccx1();break;

case2:

kccx2();break;

case3:

kccx3();break;

case4:

student();break;

}

}

voidkccx1tea()//老师按课程名称查询

{

FILE*fp;

voidkccxtea();

structcouses[100];

charfeature[10];inti=0,t=0,inp;

printf("\n\t************\n老师课程系统\n************\n\n");

printf("请输入所查询的课程名称:

");

getchar();

gets(feature);

if((fp=fopen("kecheng.dat","rb"))==NULL)

{

printf("未输入任何信息,请返回进行课程信息录入!

");

exit(0);

}

do

{

fread(&s[i],sizeof(structcouse),1,fp);

if(strcmp(s[i].name1,feature)==0)

{t=1;

printf("课程编号:

%d",s[i].num1);

printf("课程名称:

%s",s[i].name1);

printf("学分:

%d",s[i].score);

printf("课程性质:

%s\n",s[i].type);

}i++;

}while(!

feof(fp));

if(t==0)printf("Nosuchcourse\n");

fclose(fp);

printf("\n\t************\n老师课程系统\n************\n\n");

printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");

printf("┃┃课程页面┃┃\n");

printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");

printf("┃●[1]返回课程查询页面┃\n");

printf("┃┃\n");

printf("┃●[2]退出程序┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("请选择:

");

scanf("%d",&inp);

switch(inp)

{

case1:

{

kccxtea();break;}//返回的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1