c++课程设计之学生选修课程系统设计之令狐文艳创作

合集下载

C++实验代码之令狐文艳创作

C++实验代码之令狐文艳创作

实验项目一 C++程序设计初步题目令狐文艳在Visual Studio 2008平台上,用C++语言创建一个控制台应用程序,当其运行时在屏幕上显示“Hello,World!”(参考P15)实验项目二类与对象(1)有以下程序:#include <iostream>using namespace std;class Time //定义Time类{public://数据成员为公用的int hour;int minute;int sec;};int main( ){ Time t1;//定义t1为Time类对象cin>>t1.hour;//输入设定的时间cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<“:”<<t1.minute<<“:”<<t1.sec<<endl;//输出时间return 0;}改写程序,要求:①将数据成员改为私有的;②将输入和输出的功能改为由成员函数实现;③在类体内定义成员函数。

然后编译和运行程序。

请分析什么成员应指定为公用的?什么成员应指定为私有的?什么函数最好放在类中定义?什么函数最好放在类外定义?代码:/ 实验_1.cpp : 定义控制台应用程序的入口点。

#include"stdafx.h"#include<iostream>usingnamespace std;class Time //定义Time类{private://数据成员为私有的int hour;int minute;int sec;public:void Input(){cout<<"请输入时、分、秒:"<<endl;cin>>hour>>minute>>sec;}void print(){cout<<"时间为:"<<endl;cout<<hour<<":"<<minute<< ":"<<sec<<endl;}};int _tmain(int argc, _TCHAR* argv[]){Time t1;t1.Input ();t1.print ();return 0;}结果:(2)修改实验1中的学生成绩管理系统,建立类OurClass,实现班级学生信息的输入,排序和输出。

图介绍模板馆管理系统C语言程序设计之令狐文艳创作

图介绍模板馆管理系统C语言程序设计之令狐文艳创作

HUNAN UNIVERSITY令狐文艳C语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。

【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用源代码为//rkou.c 程序的入口#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include"head.h"#include"fuc.h"#include"picture.h"#include"jiangzhuo1.h" #include"output.h" main(){ int i=setup(); switch (i){ case 0: while(n<50){ conects(n);}default: eros(i);}system("pause");}2.程序中全局变量声明定义,以及所有函数声明源代码为struct book //图书结构体声明{char name[50],classic[10],writer[20]; //书名,类别,作者int jn; //借出数量int zn; //在馆数量int bh; //图书编号};struct information //管理员和读者结构体声明{char name[10],no[12],key[10]; //姓名,账号,密码};struct show //图书借阅记录的结构体声明{char name1[10],name2[50],writer[20],no[12]; //书名,读者姓名,书的作者,读者账号int bh,o; //图书编号,借阅状况(未还,已还)};//以下为用到的全局变量struct book bk;struct information aa,rr;struct information stu[100];struct book bb[100];struct information ad[100];struct show ss[100];int i,j,k,s;int n=0;int x;FILE *fp;//以下函数主要功能:方便窗口与用户之间交换信息int regst();void password(char *a,int b,int j); //登陆时的输入函数void examine(int *a,int b); //保证键入的数据是数字void changepaw(int a,int b); //修改密码用到的提示函数void inputs0(); //输出图书类别以供用户选择void inputs1(int a,int b,int c,int d,int e); //方便用户输入图书各项信息(如书名,编号)void inputs2(int a,int b,int c); //方便用户输入管理员的信息(如账号姓名)void inputs3(int a,int b,int c); //方便用户输入读者的信息(如账号姓名)void eros(int i) ; //错误显示函数,操作一旦出错,则会出现相应的错误信息void conects(int j); //连接函数,选择界面//一下函数主要用于改变文件的内容并保存int setup() ; //数据初始化函数int xzc(char no[12],char key1[10],char key2[10],charname[10]); //读者注册函数int exam(char no[10],char key[10],int n); //密码账号检验函数int mp(char no[12],char key1[10],char key2[10],charkey3[10],int n); //密码修改函数void paixu(); //对图书按照编号从小到大的顺序进行排列int sc(int bh); //管理员删除图书信息函数int zj(struct book bb); //管理员增加图书信息函数int xg(struct book bb); //管理员修改图书信息函数int js(int bh,char no[12]); //借书函数int hs(int bh,char no[12]); //还书函数int bh1(int bh); //判断该编号的图书信息是否存在函数void bh2(int bh); //按照图书编号显示图书信息函数int sm1(char name[50]); //判断是否存在该名字的图书信息函数void sm2(char name[50]); //按照图书名字显示图书信息函数int zz1(char writer[20]); //判断是否存在该作者的图书信息函数void zz2(char writer[20]); //按照图书作者显示图书信息函数void lb(char classic[10]); //按类别显示图书信息int rck1(int bh); //判断该编号的图书的借书记录是否存在void rck2(int bh); //按编号显示图书借书情况int gck21(char no[12]); //判断该账号读者的借书记录是否存在void gck22(char no[12]); //按读者显示借书情况2void gck12(); //显示全部借书情况void gck23(); //管理员查看所有书的信息void copy(int bh); // 按编图书编号将图书信息暂时保存在另外一个结构体里面void copy2(char no[12]); //按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no[12]); //按读者账号将读者信息暂时保存在另外一个结构体里面//pic() 函数:每个函数表示一个界面,conects函数将它们连接起来void pic0(); void pic1(); void pic2(); void pic3(); void pic4(); void pic5(); void pic6(); void pic7(); void pic8(); void pic9(); void pic10(); void pic11(); void pic12(); void pic13(); void pic14(); void pic15(); void pic16(); void pic17(); void pic18(); void pic19(); void pic20(); void pic21();void pic22(); void pic23(); void pic24(); void pic25(); void pic26(); void pic27(); void pic29(); void pic30(); void pic31(); void pic32(); void pic33(); void pic34(); void pic35(); void pic36(); void pic37(); void pic38(); void pic39(); void pic40(); void pic41(); void pic42(); void pic43(); void pic44(); void pic45();void pic46();void pic47();void picc();3.用户输入以及界面反馈用到的功能函数源代码为int regst(){ char num[12],paw1[10],paw2[10],name[10];int i;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您的密码\n(9字符以内,不能含有中文字符):\n");password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您的姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);return i;}void password(char *a,int b,int j){ char c;int i=0;while((c=getch())!='\r'){ if(c==8){ printf("\b \b");if(i>0)i--;}else if(i<j){ if(b) printf("*");else printf("%c",c); a[i]=c;i++;}if(i==j){ printf("\a");}}a[i]='\0';printf("\n");}void examine(int *a,int b){ while(!scanf("%d",a)){ while(getchar()!='\n'); printf("请输入数字!!\n"); }rewind(stdin);if(b) system("cls");}void changepaw(int a,int b){ int i;char c1[10],c2[10],c3[10];printf("请输入原密码\n");password(c1,1,9);printf("请输入新密码\n");password(c2,1,9);printf("请再次输入新密码\n");password(c3,1,9);system("cls");if(b){ i=mp(aa.no,c1,c2,c3,b);if(i){ eros(i);n=27;}else n=26;}else{ i=mp(rr.no,c1,c2,c3,b);if(i){ eros(i);n=44;}else n=43;}}void inputs0(){ int i=1;while(i==1){ printf("1.A类\n2.B类\n3.C类\n4.D类\n5.E类\n6.F类\n");examine(&i,1);switch(i){ case 1: strcpy(bk.classic,"A类");i=0;break;case 2: strcpy(bk.classic,"B类");i=0;break;case 3: strcpy(bk.classic,"C类");i=0;break;case 4: strcpy(bk.classic,"D类");i=0;break;case 5: strcpy(bk.classic,"E类");i=0;break;case 6: strcpy(bk.classic,"F类");i=0;break;default: i=1;}}}void inputs1(int a,int b,int c,int d,int e){ int i;switch(a){ case 1: printf("请输入图书编号:\n");examine(&bk.bh,1);default: ;}switch(b){ case 1: printf("请输入图书名称:\n");gets();default: ;}switch(c){ case 1: printf("请输入图书的作者:\n");gets(bk.writer);}switch(d){ case 1: printf("请输入该图书的库存:\n");examine(&bk.zn,1);default: ;}system("cls");switch(e){ case 1: printf("请选择图书类别:\n");inputs0();default: ;}}void inputs2(int a,int b,int c){ switch(a){ case 1: printf("请输入账号:\n");password(aa.no,0,11);default: ;}switch(b){ case 1: printf("请输入密码:\n"); password(aa.key,1,9);}switch(c){ case 1: printf("请输入姓名:\n");gets();default: ;}system("cls");}void inputs3(int a,int b,int c){ switch(a){ case 1: printf("请输入账号:\n");password(rr.no,0,11);default: ;}switch(b){ case 1: printf("请输入密码:\n"); password(rr.key,1,9);default: ;}switch(c){ case 1: printf("请输入姓名:\n");gets();}system("cls");}void eros(int i) //错误函数{ switch (i){ case -1: printf("error1 !初始化失败\n\n");break;case -2: printf("error2 !账号不存在\n\n");break; case -3: printf("error3 !账号不存在\n\n");break;case -4: printf("error4 !密码错误\n\n");break;case -5: printf("error5 !输入的密码不一致\n\n");break;case -6: printf("error6 !编号不存在\n\n");break;case -7: printf("error7 !书名不能为空\n\n");break;case -8: printf("error8 !作者名字不能为空\n\n");break;case -9: printf("error9 !无此图书编号的记录\n\n");break;case -10: printf("error10 !无此账号的记录\n\n");break;case -11: printf("error11 !原始密碼輸入錯誤\n\n");break;case -12: printf("error12 !您已经归还此书\n\n");break;case -13: printf("error13 !您所增加的图书编号已存在\n\n");break;case -14: printf("error14 !搜索不到此书的相关信息\n\n");break;case -15: printf("error15 !搜索不到该作者的信息\n\n");break;case -16: printf("error16 !打不开文件,保存失败\n\n");break;case -17: printf("error17 !该图书信息已存在\n\n");break;case -18: printf("error18 !您没有借过这本书\n\n");break;case -19: printf("error19 !您已经借阅了这本书,不能再借\n\n");break;;case -20: printf("error20 !抱歉,图书已经借完了\n\n");break;case -21: printf("error21 !账号已存在\n\n") ; break;case -22: printf("error22 !还有图书未还,不能删除该条信息\n\n");break;default : ;}}void conects(int j){ switch(j){ case 0: pic0();break;case 1: pic1();break;case 2: pic2();break;case 3: pic3();break;case 4: pic4();break;case 5: pic5();break;case 6: pic6();break;case 7: pic7();break;case 8: pic8();break;case 9: pic9();break;case 10: pic10();break;case 11: pic11();break;case 12: pic12();break;case 13: pic13();break;case 14: pic14();break;case 16: pic16();break; case 17: pic17();break; case 18: pic18();break; case 19: pic19();break; case 20: pic20();break; case 21: pic21();break; case 22: pic22();break; case 23: pic23();break; case 24: pic24();break; case 25: pic25();break; case 26: pic26();break; case 27: pic27();break; case 29: pic29();break; case 30: pic30();break; case 31: pic31();break; case 32: pic32();break; case 33: pic33();break; case 34: pic34();break; case 35: pic35();break; case 36: pic36();break; case 37: pic37();break; case 38: pic38();break;case 40: pic40();break;case 41: pic41();break;case 42: pic42();break;case 43: pic43();break;case 44: pic44();break;case 45: pic45();break;case 46: pic46();break;case 47: pic47();break;default: ;}}4.文件操作各种函数源代码为//jiangzhuo1.h文件操作各种函数int setup() //数据初始化函数{FILE *fp;fp=fopen("reader.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1else{i=0;while(!feof(fp)){fscanf(fp,"%s %s %s",stu[i].name,stu[i].no,stu[i].key); //将文档里面的数据格式化读取到结构体数组里面i++;}i=i-1;}fclose(fp);fp=fopen("ad.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{j=0;while(!feof(fp))fscanf(fp,"%s %s %s",ad[j].name,ad[j].no,ad[j].key); //将文档里面的数据格式化读取到结构体数组里面j++;}j=j-1;}fclose(fp);fp=fopen("book.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{k=0;while(!feof(fp)){fscanf(fp,"%d %s %s %s %d %d ",&bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,&bb[ k].zn,&bb[k].jn); //将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;}fclose(fp);fp=fopen("show.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{s=0;while(!feof(fp)){fscanf(fp," %s %s %d %s %s %d ",ss[s].name1,ss[s].no,&ss[s].bh,ss[s].name2,ss[s].wri ter,&ss[s].o); //将文档里面的数据格式化读取到结构体数组里面s++;}s=s-1;}fclose(fp);return 0; //当操作全部正确时返回0}int xzc(char no[12],char key1[10],char key2[10],char name[10]) //读者注册函数{ int x=0;for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断读者输入的账号与结构体里面的账号是否相同{return -21;break;}if(x==i && strcmp(no,stu[x].no))//判断读者输入的账号与结构体里面的账号是否相同{if(!strcmp(key1,key2)) //判断读者两次输入的密码是否一致{i=i+1;strcpy(stu[i].name,name);strcpy(stu[i].no,no);strcpy(stu[i].key,key1);fp=fopen("reader.txt","a"); //对文件以写的方式将注册的信息保存到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,st u[i].key);}fclose(fp);return 0;}else{return -5;}}}}int exam(char no[10],char key[10],int n) //密码账号检验函数{ int x;if(n==0) //对读者的密码和账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断该账号是否存在{if(!strcmp(key,stu[x].key)) //当账号存在时判断与之相应的密码是否相同{return 0;break;}else{return -4;break;}}if(x==i && strcmp(no,stu[x].no)){return -3;}}}if(n==1) //对管理员的密码账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,ad[x].no)) //判断该账号是否存在{if(!strcmp(key,ad[x].key)) //判断与之相应的密码是否存在{return 0;break;}else{return -4;break;}}if(x==j && strcmp(no,ad[x].no)){return -3;}}}}int zj(struct book b) //管理员增加图书信息函数{ int x;for(x=0;x<=k;x++){ if(bb[x].bh==b.bh) //判断所增加的图书编号是否已存在{return -13;break;}if(!strcmp(,bb[x].name)&&!strcmp(b.writer,bb[x]. writer)) //判断所增加的图书是否存在{ return -17;break;}if(x==k){ if(strlen(bb[0].name)==0) //判断文档的第一行是否为空k=k;elsek=k+1;bb[k].bh=b.bh; //将所增加的图书信息添加到结构体里面strcpy(bb[k].name,);strcpy(bb[k].classic,b.classic);strcpy(bb[k].writer,b.writer);bb[k].zn=b.zn;bb[k].jn=b.jn;fp=fopen("book.txt","a"); //将增加的图书信息追加到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[k].bh,bb[k].name,bb[k].classic,bb[k] .writer,bb[k].zn,bb[k].jn);}fclose(fp);return 0;}}int sc(int bh) //管理员删除图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断所删除图书的编号是否存在{if(bb[x].jn!=0)return -22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1]; //删除图书信息后将该图书信息后面的图书信息依次前移}k--;fp=fopen("book.txt","w+"); //将删除后的所有图书信息重新写入文档if(fp==NULL)return -16;elsefor(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x] .writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;break;}}}int mp(char no[12],char key1[10],char key2[10],char key3[10],int n) //密码修改函数{ int x;if(n==0) //读者密码修改{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //定位读者账号位置{if(!strcmp(stu[x].key,key1)) //判断输入的原密码是否正确{ if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(stu[x].key,key3);fp=fopen("reader.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x].name,stu[x].no,st u[x].key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}if(n==1) //管理员密码修改{for(x=0;x<=j;x++){if(!strcmp(no,ad[x].no)) //定位管理员账号位置{if(!strcmp(key1,ad[x].key)) //判断输入的原密码是否正确{if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(ad[x].key,key3);fp=fopen("ad.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=j;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",ad[x].name,ad[x].no,ad[x ].key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}}int xg(struct book b) //管理员修改图书信息函数{ int x;if(strlen()==0) //判断所输入的要修改的图书名字是否为空{return -7;}else{if(strlen(b.writer)==0) //判断所输入的要修改的图书作者是否为空{return -8;}else{for(x=0;x<=k;x++){if((bb[x].bh==b.bh)) //定位要修改的图书编号位置{strcpy(bb[x].name,); //将修改后的信息保存在结构体里strcpy(bb[x].classic,b.classic);strcpy(bb[x].writer,b.writer);bb[x].zn=b.zn;bb[x].jn=b.jn;fp=fopen("book.txt","w+"); //将修改后的所有信息保存在文件里if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x] .writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;}}}}}void copy(int bh) // 按编图书编号将图书信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.classic,bb[x].classic);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}void copy2(char no[12]) //按管理员账号将管理员信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=j;x++){if(!strcmp(ad[x].no,no)){strcpy(,ad[x].name);strcpy(aa.key,ad[x].key); }}}void copy3(char no[12]) //按读者账号将读者信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=i;x++){if(!strcmp(stu[x].no,no)){strcpy(,stu[x].name);strcpy(rr.key,stu[x].key); }}}int js(int bh,char no[12]) //借书函数{ int x,y,z;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断借书编号是否存在{if(bb[x].zn>0) //判断在馆数是否为0{if(strlen(ss[0].name1)==0) //判断文件里面的第一行信息是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y].no,no)){ --bb[x].zn; //修改借书后的信息++bb[x].jn;ss[0].o=2;strcpy(ss[0].name1,stu[y].name); //将借书后的信息保存在结构体数组里面strcpy(ss[0].no,no);strcpy(ss[0].writer,bb[x].writer);strcpy(ss[0].name2,bb[x].name);ss[0].bh=bh;}}}else{for(y=0;y<=s;y++){if((ss[y].bh==bh )&&!strcmp(ss[y].no,no)) //定位与输入的编号和账号一致的借书记录{if(ss[y].o==2) //判断是否已借过该书return -19;else{--bb[x].zn; //修改借书后的信息++bb[x].jn;ss[y].o=2;}break;}else{if(y==s){s++;for(z=0;z<=i;z++){if(!strcmp(stu[z].no,no)) //定位读者信息{bb[x].zn--; //修改借书后的信息bb[x].jn++;strcpy(ss[s].name1,stu[z].name);strcpy(ss[s].name2,bb[x].name);strcpy(ss[s].no,no);strcpy(ss[s].writer,bb[x].writer);ss[s].bh=bb[x].bh; ss[s].o=2;}}break;}}}}fp=fopen("book.txt","w+"); //将借书后的图书信息写入文件if(fp==NULL)return -16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y].bh,bb[y].name,bb[y].classic,bb[y] .writer,bb[y].zn,bb[y].jn);}}fclose(fp);fp=fopen("show.txt","w+"); //将借书记录写入文件if(fp==NULL)return -16;else{for(y=0;y<=s;y++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[y].name1,ss[y].no,ss[y].bh,ss[y].name2,ss[y].writer,ss[y].o);} }fclose(fp);return 0;}elsereturn -20;}}}int hs(int bh,char no[12]) //还书函数{ int x,p;for(x=0;x<=s;x++){if(ss[x].bh==bh && !strcmp(ss[x].no,no)) //判断其借书记录是否存在{ if(ss[x].o==2) //判断该书是否被借过{ for(p=0;p<=k;p++){if(bb[p].bh==bh) //修改还书后的图书信息{ ++bb[p].zn;--bb[p].jn;}}ss[x].o=1;fp=fopen("book.txt","w+"); //将还书后的所有图书信息重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p].bh,bb[p].name,bb[p].classic,bb[p].writer,bb[p].zn,bb[p].jn);}}fclose(fp);fp=fopen("show.txt","w+"); //将还书后的所有借书记录重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=s;p++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[p].name1,ss[p].no,ss[p].bh,ss[p].name2,s s[p].writer,ss[p].o);}}fclose(fp);return 0;}else{return -12;}}elseif(x==s)return -18;}}void paixu() //对图书按照编号从小到大的顺序进行排列{ int x,flag;struct book a;do //用冒泡法排序{flag=1;for(x=0;x<=k-1;x++){if(bb[x].bh>bb[x+1].bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}}while(flag==0);fp=fopen("book.txt","w+"); //将排序后的信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x] .writer,bb[x].zn,bb[x].jn);fclose(fp);}5.登陆界面所有函数源代码为// picture.h 登陆界面所有函数void pica(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:管理员\n",aa.no,);printf("------------------------------------------------------------------------\n\n");}void picb(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:读者\n",rr.no,);printf("------------------------------------------------------------------------\n\n");}void pic0() //登陆界面{ printf("\n\t\t\t欢迎登陆湖南大学图书管理系统\n"); printf("------------------------------------------------------------------------\n\n");printf("1.登陆\n2.读者注册\n3.退出系统\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=1;break;case 2: n=45;break;case 3: n=50;break;default:;}}void pic1() //管理员登陆界面{ int i;printf("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n");。

c语言商品订购系统设计之令狐文艳创作

c语言商品订购系统设计之令狐文艳创作

令狐文艳课程设计说明书令狐文艳学院、系:专业:学生姓名:学号:设计题目:商品订购系统设计起迄日期: 2017年4月24日-2017年5月12日指导教师:日期: 2017年5月12日1 设计目的1)进一步巩固和复习C程序设计的基础知识;2)培养自己结构化程序、模块化程序设计的方法和能力;3)了解软件的编制过程及各环节的具体内容;4)提高自己程序调试技巧、软件设计能力和代码规范化等素质;5)提高自己分析问题、解决问题以及实际运用能力。

2 任务概述屏幕上出现选择界面,管理员和顾客进行权限选择进入。

1)顾客具备的功能:让顾客或输入商品名称,或商品型号,或选择列表进而输入商品编号都可以,如查到所选商品,则列出商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量;然后给出选购流程:所选商品编号-列出对应商品的信息-要求顾客输入邮寄地址信息-确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。

2)管理员具备的功能:录入、修改、删除商品。

3)建立两个文件,分别存放商品信息与订购信息。

3 模块划分商品订购系统设计有如下功能,功能模块图Array如图3.1所示4 主要函数说明及其N-S图图图图图4.5购买商品 5 程序运行数据及其结果 主界面过程截图如图5.5所示图5.1 主界面添加商品(过程)过程截图如图5.2所示图5.2 添加商品(过程)添加商品(结果)过程截图如图5.3所示图5.3 添加商品(结果)购买商品过程截图如图5.4所示图5.4 购买商品删除商品过程截图如图5.5所示图 5.5 删除商品6 课程设计心得首先得感谢同学对我的帮助。

一开始编的时候bug 很多,上网找了很多资料,去图书馆也查了不少的书,终于解决了他们。

以前写的代码结构混乱,变量命名,函数命名混乱,没有注释,写出来做程序有时候自己也看不懂。

在完完整整得做完一个程序后我对结构化程序的整体性有了一个明确的认识,必须注意程序前后的联系,要做到高内聚,低耦合,要具有清晰的思路,要提前画好完善的流程图程序要具有层次。

文件系统实验报告之令狐文艳创作

文件系统实验报告之令狐文艳创作

试验四文件系统一、令狐文艳二、实验目的1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。

从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

2、要求设计一个n个用户的文件系统,每次用户可以保存M个文件。

用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有create、delete、open、close、read、write等命令。

三、实验题目:采用二级目录结构实现磁盘文件操作。

要求:1.普通文件的目录项包括文件名,文件类型,文件长度,指向文件内容的指针内容。

2.目录文件的目录项包括目录名,指向下一级目录块的指针内容。

假定每个目录文件最多只能占用一个块;3.程序功能方面的要求:需要实现一个命令行操作界面,包含如下命令:4.程序实现方面的要求:(1)、对于重名(创建时),文件不存在(删除时),目录不存在(改变目录时)等错误操作情况,程序应该做出相应处理并给出错误信息,但是程序不得因此而退出。

(2)、界面友好,程序强壮。

(3)、设置界面的提示符,提示的命令以及调试的方法应和前面的要求一致。

不要自己设计命令或者附加不要求的功能。

三.实验源程序文件名: Filesystem_s.cpp执行文件名:Project1.exe四.实验分析1)总论:该系统是一个多用户、多任务的实时操作系统。

对用户和用户的文件数目并没有上限。

也就是说该系统允许任何用户申请空间,而且在其目录下的文件数目并不做任何的限制。

该系统的操作命令如下:①、bye-用户注销命令。

当使用该命令时,用户退出系统。

命令格式:run\bye↙系统注销该用户并回到登陆界面。

②、close-删除用户注册信息命令。

执行该命令后,用户在系统中的所有信息,包括该用户目录下的所有文件都被删除。

命令格式:run\close↙.完成后返回登陆界面。

③、create-在当前目录下创建一个文件,且该文件不能跟系统中的文件重名。

该文件的管理信息登录到用户文件信息管理模块中。

备忘录C语言之令狐文艳创作

备忘录C语言之令狐文艳创作

2012-2013学年第二学期《高级语言程序设计》课程设计报告题目:备忘录专业:计算机科学与技术班级:姓名:指导教师:成绩:计算机与信息工程系年月日目录1设计内容及要求 (2)1.1设计内容 (2)1.2设计任务及具体要求 (2)2概要设计 (3)2.1该系统的功能简介 (3)2.2 总体程序框图 (3)2.3各个模块之间的主要关系 (4)33设计过程或程序代码 (5)3.1各个模块的程序流程图及运行界面 (5)3.2对关键代码加以分析说明 (7)4程序调试分析 (13)5小结.............................................................14致谢.. (15)参考文献 (16)附:源程序 (30)1 设计内容及要求1.1设计内容《备忘录》主要根据课程设计要求进行设计,能够进行个人的事件记录,可以将程序使用者的时间安排,重要事件,以及个人行程等事件做出具体详细的记述,并能够使使用者在程序上完成查看时间的功能,足以使得使用者避免忘记一些重要事件,也可以为使用者带来一些便利,帮助使用者节省了时间。

电子备忘录相较于笔记本,其最大的好处在于可以不受纸张的限制,并切实的使用者可以在短时间内记述大量事件;查询时也可以节省大量的时间,使得使用者可以减短查询时间,方便快捷。

同时,使用电子备忘录也是一种现代化的代表,将电子科技应用与人们的日常生活中,达到现代实惠的先进水平。

该系统功能主要包括三大模块:1)备忘录的信息录入2)备忘录信息的查看3)进出备忘录系统1.2设计任务及具体要求主要利用C语言的文件操作能力设计开发一个小型的备忘录系统,至少具有如下功能:备忘录的信息录入,备忘录的信息查询和退出备忘录系统。

操作界面要符合用户的一般习惯,图形或文本界面都可以。

要求:利用C语言编写一个备忘录程序,能实现一些基本的操作,达到一些基本的信息录入,查询,提醒以及编写等功能,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高自身用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。

C++课程实习及答案全解之令狐文艳创作

C++课程实习及答案全解之令狐文艳创作

实验题目(共4题, 第1题)令狐文艳标题: 1、字符串输入输出时限: 1000 ms内存限制: 10000 K总时限: 3000 ms描述:编写一个简单的控制台应用程序,先输入姓名,如“John”,再输出问候语,如“Hello, John!”。

输入: John输出: Hello, John!输入样例: John输出样例: Hello,John!提示: 1、使用string类定义字符串对象,需包含头文件<string>;2、使用cin和提取符>>从键盘输入数据,使用cout和插入符<<输出结果到屏幕,需包含头文件<iostream>;3、注意使用名称空间std。

来源:#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;int main(){char s[10];gets(s);cout << "Hello, " <<s<< "!"<< endl;return 0;}示例代码----------------------------------------------#include <iostream>#include <string>using namespace std;int main(){string szName;cin >> szName;cout << "Hello, " << szName << "!" << endl;return 0;}-----------------------------------------------------实验题目(共4题, 第2题)标题: 2、求3个数的平均值时限: 1000 ms内存限制: 10000 K总时限: 3000 ms描述:从键盘上输入3个浮点数,求这3个数的平均值。

《C语言程序设计》课程设计报告之令狐文艳创作

《C语言程序设计》课程设计报告之令狐文艳创作

《C语言程序设计》令狐文艳课程设计报告(2013— 2014学年第3学期)题目:C语言课程设计专业:软件工程班级:软件工程技术2班姓名学号:1307142225林燕萍指导教师:吴芸成绩:计算机科学与技术系2014年6月23日目录一、课程设计的目的与要求 (1)二、方案实现与调试 (3)2.1 掷骰子游戏 (5)2.2 射击游戏 (7)2.3 计算存款本息之和 (8)2.4肇事逃逸 (10)2.5 礼炮 (12)2.6 汽车加油 (14)2.7 大优惠 (16)2.8 金币 (19)三、课程设计分析与总结 (23)附录程序清单 (25)一、课程设计的目的与要求(含设计指标)C语言是一种编程灵活,特色鲜明的程序设计语言。

C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。

这是学习语言的最终目的。

结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。

达到如下目的:1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2.让学生扎实掌握C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。

编写程序要求遵循如下基本要求:①模块化程序设计②锯齿型书写格式③必须上机调试通过二、方案实现与调试2.1掷骰子游戏•2.1.1题目内容的描述1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。

2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。

4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。

最后显示双方分数并判定优胜者。

系统功能测试方案之令狐文艳创作

系统功能测试方案之令狐文艳创作

文档修订记录用户名称: 秘级:保密令狐文艳系统功能测试方案目录概述41.约定41.1.背景41.2.参考文档42.测试任务52.1.本次测试的目的52.2.本次测试的范围53.测试方案53.1.测试方法53.2.测试流程53.3.测试要求64.进度计划64.1.工作量64.2.测试进度75.测试资源75.1.测试人员75.2.测试环境7概述本文档旨在指导**** V1.0.0的第三方功能测试工作,以保证顺利实施。

其中描述的内容包括:➢确定测试任务的目标与内容。

➢描述测试方法与实施流程。

➢计划测试进度。

➢确定工作量与测试所需资源。

➢确定测试提交物。

1.约定1.1.背景****质量测试部为****系统提供第三方测试服务,服务目标为客观、公正、专业。

****系统是基于SODB中所储存的综合性信息,利用XML WebServices技术,对外提供一个开放的信息查询、统计和分析的平台。

具有相应权限的用户可以在此界面中进行各种查询和统计分析操作。

本次测试为****系统在ITC环境的第一轮功能测试,版本号为1.0.0。

参见《****-DC-Testing ReleaseNotes_****_0627》1.2.参考文档《****测试用例V1.0.0》——航信提供《********第三方测试版本与缺陷管理手册1.1》《ITC测试中心测试管理办法_v1.2》《****-DC-Testing ReleaseNotes_****_0627》2.测试任务2.1.本次测试的目的对于**** V1.0进行功能确认,验证其功能是否完成需求,功能是否正确,数据计算是否正确等。

同时关注系统运行是否稳定。

2.2.本次测试的范围本次测试包括**** V1.0.0的全部五个模块:1)用户安全验证模块2)基本信息查询模块3)相关原始报文查询模块4)系统管理模块5)客户端处理日志模块3.测试方案3.1.测试方法本次测试主要采用手工黑盒测试方法,根据开发商提交基础用例整理测试,并补充完成第三方测试用例,执行全部可执行测试用例,跟据测试要求验证是否达到测试目的中所列内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C++程序设计》课程设计报告令狐文艳学生选修课程系统设计一、需求分析计算机技术作为信息化的核心技术受到全社会的普遍重视。

如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。

深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。

而系统设计与分析能力的培养需要通过实践训练才能获得。

通过计算机对一些系统的管理已经成为一种系统、便捷的方式。

本课程设计就是用C++设计学生选课系统的问题,实现对学生选课的管理操作。

本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以及相应的课程信息管理。

程序设计了两个类,其中一个包含学生的学号、姓名、选课数以及选修总学分,另一个则包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。

然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。

二、设计要求假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课学期等信息。

学生可以按要求(如每个学生总学分不得少于20、没学期不能超过3门课程,每门课程不得超过50个人,但不能少于10否则该课程不开设)自由选课。

使之能提供一些功能:1)课程信息录入功能2)课程信息浏览功能3)查询功能:(按课程性质查询、按课程学分查询,查询每个学生的选修信息、查询每门课程的选修信息等)4)学生选修课程5)修改课程或选课信息(根据课程编号或名称修改课程信息、根据学生姓名修改选课信息);6)删除课程或选课信息(根据课程编号或名称删除课程信息、根据学生姓名删除选课信息);三、总体设计我们设计一个程序对学生选课信息进行保存,对学生的选课信息进行可执行操作,如添加、删除、查询等等。

该程序包括以下功能模块:1)学生信息添加模块:能够输入学生基本信息并保存到文件中。

2)查看模块:显示所有可选修课程的信息。

3)查询:显示所有符合要求的课程信息。

4)选课:显示学生已选课程信息和选课,删除已选课程信息。

5)退出系统。

为了完善系统,我们还添加了一个登录界面。

考虑到添加课程信息的功能只适合老师,因此我们设置了添加课程的权限设置(必须输入密码)。

我们建立了两个文件用来保存学生信息和课程信息。

(student.txt和subject.txt)该系统功能说明:1)系统以菜单方式工作2)课程信息录入功能(课程信息用文件保存)--输入3)课程信息浏览功能--输出4)查询功能:(至少一种查询方式)--算法5)按学分查询6)按课程性质查询7)学生选修课程(可选项)四、详细设计该成序包含的主要函数功能说明:void XuanKeMenu(); // 选课主菜单函数int find(int no);void Save();void DL();//登录界面的函数void MainMenu();void output();void Load(); //载入文件信息的函数void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); //提取选课编号的函数void tq2();void AddStuInfo();//添加学生信息的函数void SaveStuInfo(); //保存学生信息到文件中void del();//删除已选课程信息的函数#include<iostream>#include<vector>#include<set>#include<string>#include<conio.h>#define N 10using namespace std;int F;class subject //建立一个课程类,保存课程信息{public:int num;char name[30];char cha[20];int Time,time1,time2,xf;char kkxq[20];}S;class student //建立一个学生类,保存学生信息{public:char nam[10];char num[15];int zxf;int cnt;}Stu;vector <subject> v; //声明一个指向课程信息的向量vector <student> z; //声明一个指向学生信息的向量set <int> T; //建立一个集合vector <set<int> > TT; //建立一个向量集合set <int> ::iterator it; //建立一个迭代器void XuanKeMenu(); //声明一个选课主菜单函数int find(int no);void Save();void DL(); //声明一个登录界面的函数void MainMenu();void output();void Load(); //声明载入文件信息的函数void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); //声明提取信息的函数void tq2();void AddStuInfo(); //声明添加学生信息的函数void del();void AddStuInfo(){FILE *fp;fp=fopen("d:\\student.txt","a");fseek(fp,0,2); //打开学生信息文件system("cls");cout<<endl<<endl<<endl<<endl<<endl;cout<<"\t\t***************************************************"<<endl;cout<<"\t\t***************** 学生选课系统******************"<<endl;cout<<"\t\t***************************************************"<<endl<<endl;cout<<"\t\t\t请输入学号:";cin>>Stu.num;cout<<"\t\t\t请输入姓名:";cin>>Stu.nam;t=Stu.zxf=0;fprintf(fp,"%s %s %d %d\n",Stu.num,Stu.nam,t,Stu.zxf); //存入文件z.push_back (Stu); T.clear(); TT.push_back(T); //用向量指向学生信息fclose(fp);}void add(){string password1,password2;char password[20];int _cnt=0;FILE *fp;fp=fopen("d:\\password","r");fscanf(fp,"%s",password); password2=password;fclose(fp);system("cls");cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 请输入密码:"; //对添加课程进行权限设置char ch;while(ch=getch()){if(ch==13) break;if(ch != 8) { putchar('*'); password1 +=ch;_cnt++;}else{if(_cnt){password1.erase(password1.end()-1);_cnt--;system("cls");cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 请输入密码:";int x=_cnt;while(x--)cout<<"*";}}}if(password1 != password2){ cout<<"\n\n\t\t\t 密码错误!!!";getch(); MainMenu(); }A: system("cls");cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t\t\t请输入课程编号:";cin>>S.num;cout<<"\t\t\t请输入课程名称:";cin>>;cout<<"\t\t\t请输入课程性质:";cin>>S.cha;cout<<"\t\t\t请输入总课时:";cin>>S.Time;cout<<"\t\t\t请输入授课学时";cin>>S.time1;cout<<"\t\t\t请输入上机学时(实验学时):";cin>>S.time2;cout<<"\t\t\t请输入学分:";cin>>S.xf;cout<<"\t\t\t请输入开课学期:";cin>>S.kkxq;v.push_back(S);Save();cout<<endl<<"\t 是否继续添加[Y/N]:";string s; cin>>s;if(s[0]=='Y'||s[0]=='y') goto A;else MainMenu();}void Save() //保存已选的课程信息{FILE *fp;fp=fopen("d:\\subject.txt","w");for(int i=0;i<v.size();i++)fprintf(fp,"%d %s %s %d %d %d %d %s\n",v[i].num,v[ i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v [i].kkxq);fclose(fp);}void SaveStuInfo() //保存学生信息{FILE *fp;fp=fopen("d:\\student.txt","w");for(int i=0;i<z.size();i++){fprintf(fp,"%s %s %d %d",z[i].num,z[i].nam,z[i].cn t,z[i].zxf);for(it=TT[i].begin(); it!=TT[i].end(); it++)fprintf(fp, " %d",*it);fprintf(fp,"\n");}fclose(fp);}void quit() //退出函数{exit(1);}void ChaXun() //查询主菜单函数{system("cls");cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t\t\t\t请选择查询方式:\n\t\t\t\t[1]学分查询\n\t\t\t\t[2]课程性质查询\n\t\t\t\t[0]返回主菜单\n\n";cout<<"\t\t\t\t请选择[0-2]:";int choice;cin>>choice;if(choice>=0&&choice<3){if(choice==1) chaxun1();if(choice==2) chaxun2();if(choice==0) MainMenu();}else ChaXun();}void chaxun1() //按学分方式查询{system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 请输入学分:";int key;cin>>key;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0;i<v.size();i++){if(cnt&&cnt%10==0){cout<<endl<<"\t====================================================== =="<< endl;cout<<"\t 按任意键查看下一页"; getch();system("cls");cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;****************************************************** **"<<endl<<endl;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}if(v[i].xf==key){cnt++;printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v [i].time2,v[i].xf,v[i].kkxq);}}cout<<endl<<"\t 是否继续查询[Y/N]:";string s; cin>>s;if(s[0]=='Y'||s[0]=='y') chaxun1();else MainMenu();}void chaxun2() //按课程性质查询{system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;****************************************************** **"<<endl<<endl;cout<<"\t 请输入课程性质:";char key[20];cin>>key;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0;i<v.size();i++){if(cnt&&cnt%10==0){cout<<endl<<"\t====================================================== =="<< endl;cout<<"\t 按任意键查看下一页"; getch();system("cls");cout<<endl<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}if(!strcmp(v[i].cha,key)){cnt++;printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v [i].time2,v[i].xf,v[i].kkxq);}}cout<<endl<<"\t 是否继续查询[Y/N]:";string s; cin>>s;if(s[0]=='Y'||s[0]=='y') chaxun2();else MainMenu();}void tq1(char *str) //提取出选课时输入的课程编号{string t="";int i=0,cont=0;while(str[i]){if(isalnum(str[i])) t += str[i];else{int tmp=atoi(t.c_str());if(TT[F].find(tmp)!=TT[F].end()) {t="";i++; continue;}z[F].zxf += v[find(tmp)].xf;TT[F].insert(tmp); t="";cont++;}i++;//int tmp=atoi(t.c_str());//cout<<t<<"";system("pause");if(TT[F].find(tmp)==TT[F].end()){cont++;TT[F].insert(tmp);z[F].zxf += v[find(tmp)].xf;}z[F].cnt += cont;}void xuanke() //选课函数:执行选课功能{char str[100];system("cls");cout<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0; i<v.size(); i++){if(i&&i%10==0)cout<<endl<<"\t====================================================== =="<< endl;cout<<endl<<"\t 请输入所选课程编号:";gets(str);if(strcmp(str,"")) tq1(str);//,system("cls");cout<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 课程信息*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v [i].time2,v[i].xf,v[i].kkxq);}cout<<endl<<"\t====================================================== ==";cout<<endl<<"\t 请输入所选课程编号:";gets(str);if(strcmp(str,"")) tq1(str);SaveStuInfo();if(z[F].zxf<60){cout<<"\t\t你所选课程的总学分少于60,是否继续选课![Y/N]";string x; cin>>x;if(x[0]=='y'||x[0]=='Y') xuanke();else XuanKeMenu();}else XuanKeMenu();}int find(int no) //寻找函数,找到想要的课程编号{for(int i=0;i<v.size();i++)if(v[i].num==no) return i;}void display(int i){printf("\t %3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v [i].time2,v[i].xf,v[i].kkxq);}void XuanKeMenu() //选课菜单函数{system("cls");int choice,l=0;cout<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 学生选课*******************"<<endl;****************************************************** **"<<endl<<endl;cout<<"\t 姓名:"<<z[F].nam<<" 学号:"<<z[F].num<<" 已选 "<<z[F].cnt;cout<<"门课程"<<" 已选课程总学分:"<<z[F].zxf<< endl;cout<<"\t====================================================== =="<<endl;cout<<"\t 已选课程信息:\n";cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(it=TT[F].begin();it!=TT[F].end();it++,l++){if(l&&l%10==0){cout<<endl<<"\t====================================================== =="<< endl;cout<<"\t [1 ]开始选课 [2] 删除已选课程 [3] 下一页 [0] 返回请选择[0/3]:"; cin>>choice;getchar();if(choice==1) xuanke();else if(choice==2) del();else if(choice==0) MainMenu();else if(choice==3) ;else XuanKeMenu();system("cls");cout<<endl<<endl;****************************************************** **"<<endl;cout<<"\t ********************** 学生选课*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 姓名:"<<z[F].nam<<" 学号:"<<z[F].num<<" 已选 "<<z[F].cnt;cout<<"门课程"<<" 已选课程总学分:"<<z[F].zxf<< endl;cout<<"\t====================================================== =="<<endl;cout<<"\t 已选课程信息:\n";cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;}display(find(*it));}cout<<endl<<"\t====================================================== =="<< endl;cout<<"\t [1] 开始选课 [2] 删除已选课程 [0] 返回请选择[0/2]:"; cin>>choice; getchar();if(choice==1) xuanke();else if(choice==2) del();else if(choice==0) MainMenu();else XuanKeMenu();}void tq2(char *str) //提取函数:提前删除时输入的课程编号{string t="";int i=0,cont=0;while(str[i]){if(isalnum(str[i])) t += str[i];else{int tmp=atoi(t.c_str());set<int>::iterator _t=TT[F].find(tmp);if(_t!=TT[F].end()){t="";TT[F].erase(_t);z[F].cnt--;z[F].zxf-=v[find(tmp)].xf;}}i++;}int tmp=atoi(t.c_str());set<int>::iterator _t=TT[F].find(tmp);if(_t!=TT[F].end()){t="";TT[F].erase(_t);z[F].cnt--;z[F].zxf-=v[find(tmp)].xf;}}void del() //删除已选课程信息{int m,l=0,k=0;char str[100];system("cls");cout<<endl<<endl;cout<<"\t****************************************************** **"<<endl;cout<<"\t ********************** 学生选课*******************"<<endl;cout<<"\t****************************************************** **"<<endl<<endl;cout<<"\t 姓名:"<<z[F].nam<<" 学号:"<<z[F].num<<" 已选 "<<z[F].cnt;cout<<"门课程"<<" 已选课程总学分:"<<z[F].zxf<< endl;cout<<"\t====================================================== =="<<endl;cout<<"\t 已选课程信息:\n";cout<<"\t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"\t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(it=TT[F].begin();it!=TT[F].end();it++,l++){if(l&&l%10==0){cout<<endl<<"\t====================================================== =="<< endl;令狐文艳cout<<"\t\t\t\t请输入要删除的课程的编号:";gets(str);if(strcmp(str,"")) tq2(str);system("cls");cout<<endl<<endl;cout<<"\t****************************************************** **"<<endl;令狐文艳。

相关文档
最新文档