c语言学生选修课程管理系统

c语言学生选修课程管理系统,第1张

#include <stdioh>

#include <stdlibh>

#include <stringh>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://studentdat","rb"))==NULL)

{

printf("\n=========>提示:文件不存在,是否要创建一个(y/n)\n");

scanf("%c",&yesorno);

if(yesorno=='y'||yesorno=='Y')

{

//这里仅为了建立文件

fp=fopen("C://studentdat","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://studentdat","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://studentdat","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=00;

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://studentdat","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://studentdat","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",tempname);

printf("学号:");

scanf("%s",tempID);

printf("成绩:");

scanf("%d",&tempscore);

st[Number++]=temp; //将刚添加的写入到数组

bc(&temp); //将刚添加的写入到文件 }

printf("添加成功\n");

}

void bc(struct student st)

{

FILE fp=NULL;

fp=fopen("C://studentdat","ab+");

fwrite(st,sizeof(struct student),1,fp);

fclose(fp);

}

int dq(struct student st[])

{

FILE fp=NULL;

int i=0;

fp=fopen("C://studentdat","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");

}运行成功,请你下去后慢慢研究下这个程序,很简单的,祝你成功!~

求采纳为满意回答。

其实,作为一个编程员,我觉得最主要的一点就是要有一定的逻辑思维,所以说高中学习数学,尤其是几何代数之类的,一定要好,大学期间可以选择,比如说信息科技等等之类的专业,往往以后,当编程员能够有一个比较好的基础

这是我做的,你看是否满意?可能有点大,但也没办法呀,你的题目也比较大,呵呵!所以,如果满意,多给我追加点分!

#include "stdioh"

#include "stdlibh"

#include "stringh"

typedef struct course

{

char number[15],name[25];

int kind,time,lessontime,practicetime,credit,term;

}type;

FILE fp1;

void overview(); //浏览函数,负责浏览整个课程信息

void seek(); //查询函数,负责查询课程信息

void choose_course();//选课函数,负责让用户选课

void out(type temp);

void input();

int main()

{

int n,i;

if((fp1=fopen("course_informationtxt","wb"))==NULL)

{printf("创建文件失败!\n");exit(0);}

printf("请输入要存储的课程数目:\n");

scanf("%d",&n);

printf("开始创建文件,请输入课程信息:\n\n");

for(i=0;i<n;i++)

{

printf("请输入第%d门课程的信息:\n",i+1);

input();

printf("\n");

}

printf("如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2; 如想进行选课,请输入3;如想结束选修课系统,请输入0!\n");

while((scanf("%d",&n))!=EOF)

{

if(n==1)

overview();

if(n==2)

seek();

if(n==3)

choose_course();

if(n==0)

exit(0);

printf("\n\n如想继续 *** 作,只要按规则输入你要进行的 *** 作即可!\n规则:如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2;如想进行选课,请输入3!\n");

}

printf("欢迎您使用此程序进行选课,谢谢!\n");

fclose(fp1);

return 0;

}

void input()

{

course c_a;

printf("请输入课程编码: ");

scanf("%s",c_anumber);

printf("请输入课程名: ");

scanf("%s",c_aname);

printf("请输入课程性质:限选课,请输入1;选修课,请输入2;必修课,请输入3! ");

scanf("%d",&c_aname);

printf("请输入课程总学时: ");

scanf("%d",&c_atime);

printf("请输入课程授课时间: ");

scanf("%d",&c_alessontime);

printf("请输入课程实验或实践时间: ");

scanf("%d",&c_apracticetime);

printf("请输入课程学分: ");

scanf("%d",&c_acredit);

printf("请输入课程所在的学期,比如第二学期,就输入2即可。");

scanf("%d",&c_aterm);

fwrite(&c_a,sizeof(struct course),1,fp1);//将一个结构体元素写入文件中

}

void out(type temp)

{

printf("课程代码: %s\n课程名: %s\n",tempnumber,tempname);

printf("课程名: %s\n",tempname);

if(tempkind==1)

printf("课程性质: Limited optional course\n");

else if(tempkind==2)

printf("课程性质: Optional course\n");

else if(tempkind==3)

printf("课程性质: Required Courses\n");

else

printf("该编码系统不认识,即无对应的课程性质存在!\n");

printf("课程总学时: %d\n课程授课学时: %d\n实验或上机学时: %d\n学分: %d\n课程开课学期: %d\n\n",temptime,templessontime,temppracticetime,tempcredit,tempterm);

}

void overview()

{

rewind(fp1);

course temp;

printf("整个课程信息如下:\n");

while((fread(&temp,sizeof(type),1,fp1))!=0)

out(temp);

}

void seek()

{

int judge,credit=0,kind=0;

char a='N';

course temp;

printf("如想按学分查询,请输入1;如想按课程性质,请输入2:\n");

scanf("%d",&judge);

rewind(fp1); //将文件指针位置置为开头

if(judge==1)

{

printf("请输入要查询的学分:\n");

scanf("%d",&credit);

while((fread(&temp,sizeof(type),1,fp1))!=0)

if(credit==tempcredit)

out(temp);

}

else if(judge==2)

{

printf("请输入你要查找课程的性质(限选课,请输入1;选修课,请输入2;必修课,请输入3):");

scanf("%d",&kind);

while((fread(&temp,sizeof(type),1,fp1))!=0)

if(tempkind==kind)

out(temp);

}

else

printf("不好意思,无此类查询!\n");

}

void choose_course()

{

rewind(fp1);

course temp;

int judge=1,n=0,time=0,credit=0;

char choose[20][20];

r1: printf("请开始填写课程编号进行选课:\n");

while(judge==1)

{

printf("请输入你所选课程的标号: ");

scanf("%s",choose[n]);

n++;

printf("如想继续选课,请输入1;如想提交,请输入0!\n");

scanf("%d",&judge);

}

while((fread(&temp,sizeof(type),1,fp1))!=0)

{

for(int i=0;i<n;i++)

if(strcmp(tempnumber,choose[i])==0)

{time=time+temptime;credit=tempcredit;break;}

}

if(time<270||credit<40)

goto r1;

printf("你所选的课为:\n");

while((fread(&temp,sizeof(type),1,fp1))!=0)

{

for(int i=0;i<n;i++)

if(strcmp(tempnumber,choose[i])==0)

{out(temp);break;}

}

}

学生选课系统的设计与实现摘要本文以一个具体的应用系统—学生选课信息系统的设计与实现来说明如何利用UML和EJB组件来设计和构建分布式软件系统平台。UML和组件技术结合使用能提高开发效率,增加系统的易维护性。关键词UML;EJB;实例1引言现在信息管理系统软件的开发,采用组件技术可以提高效率,信息管理系统的分析设计也采用UML来进行。两者的结合可以极大的提高开发效率,保证系统开发的易维护性。本文用UML这种设计方法和EJB这种组件技术来设计和实现一个系统。2系统分析本系统设计为学生通过网页登陆学校网站,进行选课。下面用用例图来说明该系统要实现的功能。21用例图22系统总体结构图本系统采用三层体系结构,分为表示层,事务处理层,数据存储层。三层结构层次清晰,易维护。图3类图学生选课系统涉及到三个实体类学生,课程,以及学生和课程之间的一个一对多关系类。对每一个类,映射到一张表。学生类和课程类用Container-ManagedEntityBean实现,学生和课程间的一对多关系类,用Bean-ManagedPersistence的EntityBean实现。再设计一个SessionBean对学生选课过程进行控制。页面显示部分用JSP实现。3数据库设计学生表对应学生实体,详细内容如下表1学生表关联表对应学生和课程间的一对多关系,详细内容如下研究开发4实现41SessionBean的设计411定义HomeInterface412定义RemoteInterfacepublicinterfaceEnrollSessionextendsEJBObject{//-----//这是一个基于SessionBean的Remote接口,这个SessionBean是基于//Stateful的SessionBean,用来对特定学生选课的登记过程进行 *** 作//-----------------------------publicStringgetStudentName()throwsRemoteException;publicvoidenroll(ArrayListcourseItems)throwsRemoteExcep-tion;publicvoidunenroll()throwsRemoteException;publicvoiddeleteStudent()throwsFinderException,RemoteEx-ception;publicvoiddeleteCourse(Stringcourse_id)throwsRemoteExcep-tion;}413Client获取HomeInterface和RemoteInterface的参考方式,我们使用JNDI机制来获取Home接口和Remote接口的对象参考。414定义回调方法415实现远程数据库的连接使用JNDI机制,通过数据库的JNDI名称javacomp/env/jdbc/StudentCourseDB来连接后台数据库。416SessionBean方法实现//定义变量publicStudentHomesHome;publicEnrollHomeeHome;publicStringstudent_id;publicStringname;//回调方法实现publicvoidejbCreate(Stringstudent_id)throwsCreateException{try{Studentstudent=sHomefindByPrimaryKey(student_id);name=studentgetName();}catch(ObjectNotFoundExceptione){thrownewCreateException(Student+student_id+notfoundinStudentTBL!);}catch(Exceptione){thrownewEJBException(egetMessage());}thisstudent_id=student_id;}//商业方法实现publicvoidenroll(ArrayListcourseItems){Enrollenroll=null;try{enroll=eHomefindByPrimaryKey(student_id);}catch(Exceptione){}try{if(enroll!=null){enrollreplaceCourseItems(courseItems);}else{eHomecreate(student_id,courseItems);}}catch(Exceptione){thrownewEJBException(egetMessage());}}publicvoidunenroll(){try{Enrollenroll=eHomefindByPrimaryKey(student_id);enrollremove();}catch(Exceptione){thrownewEJBException(egetMessage());}}//涉及到对两张表的删除。publicvoiddeleteStudent()throwsFinderException{try{Enrollenroll=eHomefindByPrimaryKey(student_id);Studentstudent=sHomefindByPrimaryKey(student_id);enrollremove();studentremove();}catch(Exceptione){thrownewEJBException(egetMessage());}}publicvoiddeleteCourse(Stringcourse_id){PreparedStatementps=null;try{getConnection();StringdeleteStatement=deletefromEnrollTBL+wherestudent_id=andcourse_id=;ps=conprepareStatement(deleteStatement);pssetString(1,student_id);pssetString(2,course_id);psexecuteUpdate();}catch(Exceptione){thrownewEJBException(egetMessage());}finally{try{psclose();conclose();}catch(Exceptione){thrownewEJBException(egetMessage());}}}42EntityBean的设计我们以关联表(EnrollTBL)对应的实体Bean为例进行说明,它涉及到两个表的一对多关系。421定义Home接口422定义RemoteInterfacepublicinterfaceEnrollextendsEJBObject{//---------------//这是一个基于EntityBean的Remote接口,这个EntityBean是基于//Bean-ManagedPersistence的EntityBean,用来对EnrollTBL表进行 *** 作//--------------------------publicArrayListgetCourseItems()throwsRemoteException;publicStringgetStudent_id()throwsRemoteException;publicvoidreplaceCourseItems(ArrayListcourseItems)throwsRemoteException;}423变量定义publicStringstudent_id;publicArrayListcourseItems;424增加数据记录实现publicStringejbCreate(Stringstudent_id,ArrayListcourseItems)throwsCreateException{if(courseItems==null||courseItemssize()==0){thrownewCreateException(ejbCreateexception!);}thisstudent_id=student_id;try{enroll(courseItems);}catch(Exceptione){thrownewEJBException(ejbCreateexception+egetMessage());}thiscourseItems=courseItems;returnstudent_id;}//根据学生ID,插入课程项。privatevoidenroll(ArrayListcourseItems)throwsSQLException{StringinsertStatement=insertintoEnrollTBLvalues(,);PreparedStatementps=conprepareStatement(insertStatement);try{//------------//依次将所有的课程项目插入EnrollTBL表//------------------pssetString(1,thisstudent_id);for(inti=0;i<courseItemssize();i++){Stringcourse_id=(String)courseItemsget(i);pssetString(2,course_id);psexecuteUpdate();}}finally{psclose();}}//根据学生ID,删除课程项privatevoidunenroll()throwsSQLException{StringdeleteStatement=deletefromEnrollTBL+wherestudent_id=;PreparedStatementps=conprepareStatement(deleteStatement);try{pssetString(1,student_id);psexecuteUpdate();}finally{psclose();}}5部署和运行51部署程序511部署StudentEntityBean,设置事务属性,生成部署文件。512同样,再部署其他三个EJB组件EnrollSessionBean,CourseEntityBean,EnrollEntityBean。513部署web组件514部署整个应用程序52运行启动J2EE服务器,启动数据库服务器,打开浏览器。学生登录,即可选课。6结论组件技术使得复杂的多层结构应用系统开发变得容易。采用组件技术能提高开发人员的效率,降低软件的开发和维护成本,提高软件的质量,控制所构建系统的复杂性。UML设计方法的使用能提高软件设计的效率和保证设计的规范性。参考文献[1]CraigLarmanUML和模式应用-面向对象分析与设计导论[M]北京机械工业出版社,200310-100[2]刘特J2EEEJB应用编程实例[M]北京清华大学出版社,200390-150[3]GeriSchneider用例分析技术[M]北京机械工业出版社,20031-98

-----------------------------------------------

谢谢请采纳:

不能发连接啊,请在百度

搜索‘珍惜知识网’点进去就是了[ORDA]

以上就是关于c语言学生选修课程管理系统全部的内容,包括:c语言学生选修课程管理系统、高中学什么科目,大学选什么专业能当编程员、C语言程序设计 (学生选修课程设计)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10176981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存