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.测试方法本次测试主要采用手工黑盒测试方法,根据开发商提交基础用例整理测试,并补充完成第三方测试用例,执行全部可执行测试用例,跟据测试要求验证是否达到测试目的中所列内容。

c++面向对象课程设计报告 (学生成绩管理系统)之令狐文艳创作

c++面向对象课程设计报告 (学生成绩管理系统)之令狐文艳创作

课程设计报告令狐文艳课程名称面向对象程序设计课题名称学生成绩管理系统专业计算机科学与技术班级计算机 1001学号 2010030101姓名指导教师李珍辉陈淑红李杰军2011年 12 月 28 日湖南工程学院课程设计任务书课程名称面向对象程序设计课题学生成绩管理系统专业班级计算机1001学生姓名学号 2010030101指导老师李珍辉陈淑红李杰军审批任务书下达日期 2011 年 11 月 15 日任务完成日期 2011 年 12 月 28 日一、设计内容与设计要求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。

要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。

2.课题题目1)公司库存管理系统2)高校学籍管理系统3)高校工资管理系统4)高校人事管理系统5)通讯录程序设计6)学生成绩管理系统7) 图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统3.设计要求:⑴设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相应题号的课题。

随意换题者不记成绩。

⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。

②完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。

③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。

④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。

⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。

⑥关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。

C语言课程设计大作业之令狐文艳创作

C语言课程设计大作业之令狐文艳创作

郑州大学令狐文艳课程报告课程名称: C语言程序设计专业班级:(15)班学生姓名:谢*学号: 20127611***任课教师:赵**学期: 2012-2013-2开发一个通讯录管理系统,基本信息包括:编号、姓名、性别、出生年月、固定电话、手机号、电子邮件等基本信息(也可以根据自己情况进行扩充)。

使之能提供以下基本功能:(1)通讯录等信息录入功能 (注:数据等要求用文件保存)--输入(2)通讯录信息的浏览功能--输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):①按电话号码进行查询②按姓名查询等③按照年龄排序④按姓名排序等(4)通讯录条目的删除与修改等扩展功能:可以按照自己的程度进行扩展。

比如(1)简单的权限处理(2)报表打印功能(3)模糊查询,如姓张的人员等;或者给定电子邮件的部分进行查询等(4)给定指定年龄范围之内的查询等等。

总之,可以根据自己需求进行分析功能,成绩评定按照难度进行区分。

一. 需求分析1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。

2,数据包括:人名、工作单位、电话号码和E-MAIL地址。

3,可对记录中的姓名和电话号码进行修改。

4,可增加和删除记录。

5,可显示所有的保存记录。

6,可按人名或电话号码进行查询。

分析建议采用结构体数组和文件系统实现。

结构体成员包括人名、工作单位、电话号码和E-MAIL地址。

根据题目的要求程序应该采用结构体数组和文件系统实现。

应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。

二、概要设计(1).程序的模块组成及各个函数的功能:程序的模块组成:主函数:main();输出数据函数:printf();读取数据函数:scanf();显示记录函数:Display();删除记录函数:shanchu();查找记录函数:chaxun();自定义清屏函数:system(“cls”);自定义输入函数:input();字符输入函数:getchar();修改数据函数:xiugai();保存数据函数:baocun();排序数据函数:paixu();各函数的主要功能:输出数据函数:随时输出数据;读取数据函数:读取输入的数据信息;显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员;;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的成员信息;排序数据函数:排序通讯录的成员信息;(2)程序中的抽象数据类型的定义:用户的状态结构用户{编号:姓名:电话;年龄;邮箱:地址;(3)总体流程图根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。

宿舍管理系统(c#)之令狐文艳创作

宿舍管理系统(c#)之令狐文艳创作

兰州财经大学陇桥学院令狐文艳信息工程系课程设计报告课程名称:C#面向对象程序设计设计题目:学生宿舍管理系统班级:电子商务1401学生姓名:卯成飞学生学号:20140680126指导教师:于泳海年月日目录一、系统开发的背景1二、系统分析与设计1(一)系统功能要求1(二)系统模块结构设计2三、系统的设计与实现3(一)学生宿舍管理系统基本流程3(二)学生宿舍管理流程图3四、系统测试4(一)测试登录4(二)测试部分主菜单5五、总结8六、附件(代码、部分图表)86.1登陆代码86.2查询学生信息代码96.3添加学生信息96.4删除学生信息106.5入住查询116.6查询宿舍信息126.7添加宿舍信息126.8入住查询136.9入住添加14宿舍管理系统一、系统开发的背景学生宿舍管理系统对于一个学校来说是必不可少的组成部分。

目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。

而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。

当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。

信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。

21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。

二、系统分析与设计(一)系统功能要求为了使系统使用者感到操作方便,提供便利的数据查询与增删改除工作。

成功的开发出学生宿舍管理系统。

可以查询、添加、删除员工、学生、宿舍的信息,便于管理,节省人力。

从而达到管理的目的。

由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。

这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。

学生信息管理系统设计与开发之令狐文艳创作

学生信息管理系统设计与开发之令狐文艳创作

河南工程学院令狐文艳《数据库原理及应用》课程设计成果报告学生信息管理系统设计与开发学生学号:学生姓名:学院:计算机学院专业班级:专业课程:数据库原理及应用课程设计指导教师:年月日课程设计指导教师评分表目录一、系统设计目的1二、系统实现思路11、需求分析12、总体设计1三、系统数据库设计31、数据需求分析 (3).2、概念结构设计(ER 图) (4)3、逻辑结构设计(规范化) (5)4、物理结构设计(索引) (6)四、系统详细设计7五、系统调试运行12六、总结设计体会19学生信息管理系统设计与开发一、设计目的设计目的:建立高效利用的学生信息管理系统,实现大量信息的规范管理、科学统计和快速查询,从而更好的减少管理方面的工作量。

学生信息管理系统提供了强大的学生信息管理功能,方便管理员对学生信息进行添加、修改、删除、查询、统计等操作。

因此,学生信息管理系统能够满足学校的需要,简化学生信息的管理过程,提高管理效率,是学校学生信息管理的一种重要的工具。

二、系统实现思路1、需求分析本次的实训课程着手于学生信息管理系统,原因在于学校的规模不断扩大,学生数量也在急剧增加,有关学生的各种信息量也在成倍增长。

对于庞大的信息量,一个高效的信息管理系统是能够很大程度上提高学生管理工作的效率。

2、总体设计系统功能分析:系统开发的目的是实现学生信息管理系统的关系化、规范化和自动化。

学生信息管理系统主要提供对学生信息的管理、班级信息的管理、课程信息的管理以及学生成绩的管理。

主要功能有:(1)有关学生信息的输入、修改和查询。

(2)班级信息的输入、修改和查询。

(3)基本课程的输入、修改和查询。

(4)成绩的输入、修改和查询。

(5)学生成绩信息的统计。

(6)模拟用户登录操作。

系统功能模块设计:2、概念结构设计(ER图)表2 班级基本信息表3课程基本信息表4成绩基本信息4、物理结构设计(索引)信息管理和成绩信息管理界面,分多种功能操作,由于时间原因,简单针对学生信息管理进行了比较详细的功能操作测试,先是通过菜单编辑器实现了多功能布局操作,选取了学生信息进行了窗口功能操作。

c51程序设计之令狐文艳创作

c51程序设计之令狐文艳创作

1Franklin C-511.1令狐文艳1.2Franklin C-51数据类型Franklin C-51编译器支持下列数据类型:编译的数据类型(如结构)包含上表所列的数据类型。

由于8051系列是8位机,因而不存在字节校准问题。

这意味着数据结构成员是顺序放置的。

数据类型的转换:当计算结果隐含着另外一种数据类型时,数据类型可以自动进行转换,例如,将一个位变量赋给一个整型变量时,位型值自动转换为整型值,有符号变量的符号也能自动进行处理。

这些转换也可以用C语言的标准指令进行人工转换。

1.2数据类型的物理结构1.2.1bit“bit”类型只有1位,不允许有位指针和位数组。

位对象始终位于8051 CPU的可寻址RAM空间。

如果程序控制流允许,L51将位对象交迭。

1.2.2signed/unsigned char;data/idata/pdata 指针“char”类型标量和基于存贮器的“data/idata/pdata”指针具有1个字节长度(8 bits)。

1.2.3signed/unsigned int/short;xdata/code 指针“int”和“short”类型标量及指向xdata/code区域的指针具有2字节长度(16bits)。

整型值(或偏移)0x1234以下面方式保存在内存中:地址:+0 +1内容: 0x120x341.2.4signed/unsigned long“long”类型标量长为4个字节(32 bits),值0x12345678以下面方式放置:地址:+0+1+2+3内容: 0x12 0x34 0x56 0x781.2.5“一般”指针“一般”指针包括3个字节:2字节偏移和1字节存贮器类型:地址:+0 +1 +2内容:存贮器类型偏移高位偏移低位第一个字节代表了指针的存贮器类型,存贮器类型编码如下:存贮器类型 IDATA XDATA PDATADATACODE 值 12 345使用其它类型值可能导致不可预测的程序动作。

C++简单学生成绩管理系统(C++课程设计)之令狐文艳创作

C++简单学生成绩管理系统(C++课程设计)之令狐文艳创作

C++学生成绩管理系统令狐文艳要求用C++语言编写学生成绩管理系统,要求能进行添加删除修改输入输出等的操作,并能使用面相对像原理对此系统进行实现。

学生成绩管理系统分析:学生成绩管理系统分为8个模块,分别是:添加学生信息,输出学生成绩,查找学生成绩,修改学生成绩,删除学生成绩,学生成绩排序,保存数据到文件和读取文件中学生成绩的模块。

学生成绩管理系统结构:各个子函数功能及其流程:1.首先定义一个学生类Class Student;并定义其各个私有变量和公有函数2.Student();构造函数,用于初始化学生类中的各个变量并记录3.Add();函数:用于添加学生信息的函数包括学号姓名成绩等的内容4.Output();函数:用于输出学生信息,包括学号姓名各科及总分平均成绩5.Find();函数:用于查找学生各项信息。

6.modify();函数:用于修改学生各项信息。

7.delete();函数:用于删除学生信息。

8.sort();函数:对学生各项信息进行排序操作。

8.save()和load();函数:将学生信息保存到文件中,并在需要的时候调用该文件将其中的学生信息显示出来9.“=”“<<”“>>”符号的重载:在各个函数处理数据过程中对这些的调用处理函数源代码:此函数源代码在VisualC++6.0环境下编译通过。

具体如下: #include"iostream.h"#include"conio.h"#include"iomanip.h"#include"stdio.h"#include"string.h"#include"stdlib.h"#include"fstream.h"class student //定义学生类{private://定义学生类的私有成员char name[20]; //名字char sex[5]; //性别int number; //学号int score[3]; //分数int total; //总分int average; //平均分public: //公有成员student(); //学生构造函数,用于学生数据的初始化及保存学生数据void add(); //添加学生信息函数void output(); //输出学生信息函数void find(); //查找学生数据函数void modify(); //修改学生信息函数void deleted(); //删除学生信息函数void sort(); //排序函数void save(); //保存学生信息并写入文件函数void load (); //打开写有学生信息的文件的函数student & operator=(student & T); //重载“=”符号friend istream & operator >> (istream & scin, student &s1); //重载“>>”符号friend ostream & operator << (ostream & scout, student &s2); //重载“>>”符号};student stu[100];int n=0;void student::add() //添加函数{char flag='Y';while(toupper(flag)=='Y'){cin>>stu[n];n++;cout<<" 要继续添加吗(y/n)";cin>>flag;if(toupper(flag)!='Y'){if(toupper(flag)=='N'){break;else{cout<<"错误,请重输:";cin>>flag;}}}}void student::output() //输出函数{if(n!=0){cout<<" ---------------------------------------------------------------------------\n";cout<<" number name sex math C++ English total average\n";cout<<" --------------------------------------------------------------------------- \n";for(int t=0;t<n;t++){cout<<stu[t];}getch();}void student::find() //查找函数{int f3=0;char n1[20];student temp;cout<<" 输入你要查找的人的姓名: ";cin>>n1;for(int j=0;j<n;j++){if(strcmp(stu[j].name,n1)==0){temp=stu[j];f3=1;}}if(f3==0)cout<<"对不起,没有你要查找的学生成绩"<<endl;else{cout<<" ---------------------------------------------------------------------------\n";cout<<" number name sex math C++ English total average\n";cout<<" --------------------------------------------------------------------------- \n";cout<<" "<<temp.number<<" "<<<<" "<<temp.sex<<" "<<temp.score[0]<<" "<<temp.score[1]<<" "<<temp.score[2]<<" "<<temp.total<<" "<<temp.average<<endl;}getch();}void student::modify() //修改函数{int f4=0;int t;char n2[50];cout<<" 输入你要修改的人的姓名:";cin>>n2;for(int j=0;j<n;j++){if(strcmp(stu[j].name,n2)==0){t=j;f4=1;}}if(f4==0)cout<<"对不起,没有你要修改的学生成绩"<<endl;else{cout<< "请输入学号: ";cin>>stu[t].number;cout<< " 姓名: ";cin>>stu[t].name;cout<< " 性别 : ";cin>>stu[t].sex;cout<< " 数学成绩: ";cin>>stu[t].score[0];cout<< " C++成绩: ";cin>>stu[t].score[1];cout<< " 英语成绩: ";cin>>stu[t].score[2];stu[t].total=stu[t].score[0]+stu[t].score[1]+stu[t] .score[2];stu[t].average=stu[t].total/3;cout<<" 修改成功 !"<<endl;}getch();}void student::deleted() //删除函数{char n3[20];bool f5=0;char c;do{cout<<"请输入您要删除的学生姓名:"; cin>>n3;for(int i=0;i<n;i++){if(strcmp(n3,stu[i].name)==0){f5=1;n--;do{stu[i]=stu[i+1];i++;}while(i<=n);}}if(f5==0)cout<<"您要求删除的对象本来就不存在!";cout<<"要继续删除吗?(y/n)"<<endl;cin>>c;if(toupper(c)!='Y'&&toupper(c)!='N'){cout<<"输入指令错误!请重新输入Y或N!"<<endl; cin>>c;}}while(toupper(c)=='Y');getch();}void student::sort() //排序函数{int i,j,k;student s3;for( i=0;i<(n-1);i++){k=i;for(j=i+1;j<n;j++)if(stu[j].average>stu[i].average)k=j;if(k!=i){s3=stu[i];stu[i]=stu[k];stu[k]=s3;}}cout<<"\n\n排序成功!\n\n";}void student::save() //保存函数{char filename1[20];cout<<"请输入文件名: ";cin>>filename1;ofstream fout(filename1,ios::app);if(!fout)cout<<"文件不能打开!"<<endl;else{for(int i=0;i<n;i++)fout<<' '<<stu[i].name<<' '<<stu[i].sex<<' '<<stu[i].number<<' '<<stu[i].score[0]<<' '<<stu[i].score[1]<<' '<<stu[i].score[2]<<' '<<stu[i].total<<''<<stu[i].average<<' ';cout<<"保存成功!"<<endl;}fout.close();getch();}void student::load() //读取函数{char filename2[20];cout<<"请输入你要读取的文件名: ";cin>>filename2;ifstream fin(filename2,ios::in);if(!fin)cout<<"文件打不开 !"<<endl;else{for(int i=0;;i++,n=i-1){if(fin.eof())break;fin>>stu[i].name>>stu[i].sex>>stu[i].number>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2] >>stu[i].total>>stu[i].average;}cout<<"文件已读取成功!"<<endl;}fin.close();getch();}student & student::operator=(student & T) //重载={strcpy(name,);strcpy(sex,T.sex);number=T.number;for(int i=0;i<3;i++)score[i]=T.score[i];total=T.total;average=T.average;return ( * this );}ostream & operator << (ostream & scout, student &s2) //重载<<{cout<<setw(6)<<s2.number<<setw(10)<<<<setw(8)<<s2.sex<<setw(8)<<s2.score[0]<<setw(8)<<s2.score[1]<<setw(10)<<s2.score[2]<<setw (10)<<s2.total<<setw(8)<<s2.average<<endl;return scout;}istream & operator >> (istream & scin,student &s1) //重载>>{cout<< " \t学号:";scin>>s1.number;cout<< " \t姓名:";scin>>;cout<< " \t性别 :";scin>>s1.sex;cout<< " \t数学成绩:";scin>>s1.score[0];cout<< " \tC++成绩:";scin>>s1.score[1];cout<< " \t英语成绩:";scin>>s1.score[2];s1.total=s1.score[0]+s1.score[1]+s1.score[2];s1.average=s1.total/3;return scin;}student::student() //构造函数{strcpy(name," ");strcpy(sex," ");number=0;for(int i=0;i<3;i++)score[i]=0;total=0;average=0;}void menu() //菜单函数{cout<<"\n\n\n学生成绩管理系统主菜单 "<<endl; cout<<"\n\n\n1.添加学生信息 "<<endl;cout<<"2.输出学生信息 "<<endl;cout<<"3.查找学生信息 "<<endl;cout<<"4.修改学生信息 "<<endl;cout<<"5.删除学生信息 "<<endl;cout<<"6.学生信息排序 "<<endl;cout<<"7.保存数据 "<<endl;cout<<"8.读出数据 "<<endl;cout<<"9.退出系统 "<<endl;cout<<"\n\n请选择(1~9)并按回车键确认:";}int main() //主函数{int choose;student s;do{menu();cin>>choose;switch(choose){case 1: s.add(); break; case 2: s.output(); break; case 3: s.find(); break; case 4: s.modify(); break; case 5: s.deleted(); break; case 6: s.sort(); break; case 7: s.save(); break; case 8: s.load(); break; default : break;}}while(choose!=0);}。

软件工程课程设计报告(学生选课系统)之令狐文艳创作

软件工程课程设计报告(学生选课系统)之令狐文艳创作

软件工程课程设计报告令狐文艳( 2007-- 2008 年度第二学期)课程名称:软件工程课程设计题目:学生选课系统院系:计算机科学与技术系班级:计算0503组号:2组长:李英龙组员:潘贵生刘罡吴志洁指导教师:马素霞设计周数:两周小组成绩:日期:2008 年 7月 4日《软件工程》课程设计任务书一、目的、要求通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。

具体如下:1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;2.熟悉自动化的软件开发工具Rational Rose2003,并将其运用于软件开发的全过程;3.进一步加强和提高软件工程文档的编写能力;4.培养协作能力和团队精神。

二、主要内容1.课题题目:学生选课系统,本系统要实现学生选课的基本功能,包括学生退选课,查看自己的选课信息;教师查看选课学生的信息,提交成绩;管理员添加学生、管理学生、管理成绩、添加教师、管理教师和管理课程等。

2.运用面向对象技术、UML及可视化的建模工具完成系统的需求分析与设计。

3.使用Rational Rose作为需求分析与设计的建模工具,包括静态建模和动态建模,并利用对象模型自动生成数据模型,自动建立数据库。

4.采用分层模式的应用设计模式进行系统的设计实现。

5.系统要实现四个模块功能:教师模块、学生模块、管理员模块和公用模块。

6.初步建立系统原型,实现关键的功能,并对系统进行测试。

7.编写课程设计报告。

三、任务分配任务负责人参与人备注需求分析潘贵生李英龙刘罡吴志浩总体设计刘罡李英龙潘贵生吴志浩详细设计吴志浩李英龙刘罡潘贵生系统实现与测李英龙潘贵生刘罡吴志浩试四、进度计划五、设计成果要求1.建立系统分析与设计模型;2.初步建立系统原型,实现关键的功能;3.编写课程设计报告。

六、考核方式1.模型及代码检查占50%。

学生考勤系统C语言课程设计之令狐文艳创作

学生考勤系统C语言课程设计之令狐文艳创作

《程序设计》令狐文艳课程设计说明书课程名称《程序设计》设计题目C语言课程设计学生考勤系统专业班级学生姓名指导教师起止日期2013年6月8日至2013年6月14日福建林业职业技术学院自动化工系目录第1章设计目的……………………….第2章总体设计…………………………第3章详细设计…………………………第4章调试与测试………………………第5章总结与体会………………………附:源程序清单和执行结果……………………………..第1章设计目的本次C语言课程设计是对本学期程序设计基础课程的实际应用,也算是对所学知识的一次检验,通过本次课程设计能达到的目的如下:1.巩固和加深对C课程基本内容和理论知识的理解和掌握。

2.掌握C语言编译和程序调试的基本技能。

3.利用C语言进行基本的程序设计从而逐步了解文件的一些相关操作和掌握函数的使用技巧,包括函数类型的选择,含参数的传递方式。

4.掌握使用数组,指针,引用,文件等编译的方法,提高运用C语言解决实际问题的能力。

5.通过对学生考勤系统的设计、编写源代码,以及对C语言中各个语法和函数的使用,使得对比较复杂的结构体、链接、文件的操作更加熟悉。

6.通过课程设计,将本学期所学知识与实际应用联系和结合起来,培养自己的动手能力,以及加强各学科之间的联系,从而提高个人的团队意识,增强团队之间协调和配合第2章总体设计2.1学生考勤信息记录系统的要求通过该系统实现对学生考勤信息进行创建、录入、修改、查询、保存等操作的管理。

实验考勤信息包括学生姓名,学号,学科种类,各科的考勤信息。

主要功能:1)、能够完成对考勤的录入和修改2)、创建一个班级的信息3)、设备的查询4)、将考勤信息保存到文件中2.2流程图根据设计要求,画出如下流程图:2.3设置的主要函数 void creat(void);void save(struct Student *,char []);struct Student *load(char []);void enter(void); /*录入函数*/void search_1(void); /*查询函数_1*/void search_2(void); /*查询函数_2*/void add(void);void modify(void); /*修改函数*/void back(void); /*退出函数*/void mune_1(); /*界面-1*/void mune_2(); /*界面-2*/mune_1();mune_2();第3章详细设计3.1函数以及调用关系void mune_1();/*菜单函数1*/void mune_2()/*菜单函数2*/1 2 3 4 5 6Break Break Break Break Break break void enter(void); /*录入函数*/②nvoid search_1(void); /*查询个人信息*/退出系统 Menu_2 开始录入记录 查询个人 创建信息 修改信息 查询 整班菜 单2 1.录入 2.查询1 3.创建 4. 修改 5.查询2 6.退出 结 束输入班级和学生学号 p->num==a 输入学生本节课息 返回菜单2 开始 高等数学 大学英语 大学物理 马克思 C 语言 大学口语 大学体育 开始 输入此人所在班级和学号ay/n 退出真假void search_2(void); /*查询班级信息*/真假 void save(struct Student *,char []); struct Student *load(char filename[])3.2结构的应用If …else 结构和while(p1->num!=0){n=n+1;if(n==1)p2=p1;p1=(struct Student *)malloc(LEN);scanf("%s%d%s",p1->name,&p1->num,p1->sex);p1->math=p1->English=p1->physics=p1->Mks=p1->C=p1->teal=p1->PE=0;}p2->next=NULL;开始数据写入文件打开文件 输入你要修改的班级和座位号ap->num==a重新输入这位学生的考勤信息 返回菜单2开始 输出此人的考勤信息 返回菜单2p=head;while(p!=NULL){fwrite(p,LEN,1,fp);p=p->next;}fclose(fp);printf("\t\t\t创建成功,按任意键返回主菜单\n");getch();system("cls");mune_2();2 switch结构switch(sub){case 1: {p->math+=num;}break;case 2: {p->English+=num;}break;case 3: {p->physics+=num;}break;case 4: {p->Mks+=num;}break;case 5: {p->C+=num;}break;case 6: {p->teal+=num;}break;case 7: {p->PE+=num;}break;}3while结构while(p!=NULL){if(p->num==a){printf("\n\t\t请重新输入高等数学缺勤节数:");scanf("%d",&p->math);printf("\n\t\t请重新输入大学英语缺勤节数:");scanf("%d",&p->English);printf("\n\t\t请输入大学物理缺勤节数:");scanf("%d",&p->physics);printf("\n\t\t请重新输入马克思主义基本原理与概论缺勤节数:");scanf("%d",&p->Mks);printf("\n\t\t请重新输入C语言缺勤节数:"); scanf("%d",&p->C);printf("\n\t\t请重新输入英语口语缺勤节数:");scanf("%d",&p->teal);printf("\n\t\t请重新输入体育缺勤节数目:"); scanf("%d",&p->PE);flag=1;save(head,cla);printf("\n\t\t修改成功!\n\t\t");break;}p=p->next;}第4章调试与测试4.1调试执行程序时,显示如下信息选择不同的选项,执行相应的功能。

学生学籍管理系统(数据库系统)(SQL)之令狐文艳创作

学生学籍管理系统(数据库系统)(SQL)之令狐文艳创作

学生学籍管理系统(数据库系统)令狐文艳1 设计内容和要求1.1设计背景随着我国教育体制改革的深入进行,教育系统得到了前所未有的发展。

学生管理正在逐步迈向管理信息现代化。

但是我国的学生管理信息化水平还处在初级阶段,主要表现在对学生的交费管理、学生的档案管理还是采用原有的人工管理方式。

学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。

由于大学生类别和专业的设置的多样化,大学生的学籍管理历来是非常繁琐和复杂的的工作。

面对庞大的信息量,这时的人工管理几乎无法实现,在这种情况下用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有学生信息管理系统来提高学生管理工作的效率.通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量和减少人为的错误。

1.2开发环境本学生学籍管理系统(数据库系统)的开发与运行环境如下:开发环境:Windows XP辅助工具:PowerDesigner Trial 11数据库管理系统:SQL Server 2000运行环境:Windows 2000/XP/20031.3内容和要求1.3.1系统目标设计使得学生的学籍管理工作更加清晰、条理化、自动化。

很容易地完成新生信息的输入、老生信息的备份、毕业学生的信息可以很容易地保存。

当学生需要查询成绩时,可以很简单地将其需要的信息从数据库中查找出来并可以打印查询结果。

随着当今网络技术的发展,提供网络在线查询功能,可以为毕业生提供更多的就业机会。

1.3.2系统功能要求(1)学生基本信息系统能够完成新、老生信息的输人、修改、插人、删除等工作。

可以按照特定的信息进行查找,并按照特定的要求进行排序。

可以对老生的信息进行备份,以便日后查询。

可以对学生的信息进行打印输出。

提供详细的帮助文件和系统维护功能。

(2)学生成绩管理系统此部分的功能如下:学生成绩的输入、修改、删除等基本操作。

成绩的综合统计功能,包括学生成绩按照不同条件进行排名。

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

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

C语言课程设计报告令狐文艳《计算机程序设计基础》课程设计题目学生信息管理系统学生姓名胡乔楠学号 0909082109 指导教师汤哲学院信息科学与工程学院专业班级电气0821班完成时间七月四号目录第一章项目概述1.1 问题的要求分析与描述1.2 问题的要求和限制第二章项目设计2.1系统程序的组成框图2.2:程序的流程图2.3 详细设计第三章调试与结果3.1调试方法3.2 测试结果(见附录A、B)第四章 工作总结附录A、B;源代码;参考文献;第一章 项目概述1.1 问题的要求分析与描述我设计一个学生信息管理系统。

首先学生的信息包括:学号、姓名、年龄、性别、出生年月、家庭地址、电话号码、电子邮件、毕业学校等等。

这个管理系统需要实现以下功能:1.系统以菜单的方式工作;2.实现学生信息的录入功能,学生的信息保存在文件中;3.实现学生信息的输出功能,输出功能应包括如下算法:3_1:单个学生按学号查询功能;3_2:单个学生按姓名查询功能;3_2:全部学生的浏览功能;3_3:全部学生按学号排序浏览功能;4.实现学生信息的删除和修改;1.2 问题的要求和限制1:系统要美观,有欢迎界面;2:在输入信息时要有一定的容错能力,比如年龄输入为负数或者大于150就提示有错,要求重新输入;第二章 项目设计2.12.2定义了一个结构体数组,数组中有一百个结构体。

每个结构体中有长整型,整型,字符型数组,还有指针,为以后制定链表用。

定义了一个全局变量“i”。

此变量来记录学生的个数。

2.3.2 main函数所有的函数都写在main函数中并给他调用。

Main函数中首先定义了一些整型数据,ch1、ch2、j、长整型数据“number”,字符数组“name”,文件指针。

接着“printf”函数打印出一个欢迎界面。

用死循环进入一个选择菜单,用户输入选项来运行系统。

用“scanf”函数来给ch1赋值。

接着程序就进入一个多分支if语句中。

通过判断,程序运行进入相应的功能区。

学生学籍管理信息系统之令狐文艳创作

学生学籍管理信息系统之令狐文艳创作

学生学籍管理信息系统令狐文艳第一章系统分析一、系统开发的目的与意义管理信息系统是一门综合了管理科学、信息科学、系统科学、行为科学、计算机科学等学科知识的交叉边缘学科。

管理信息系统是由人和计算机组成的能够进行信息收集、存储、加工、传播与使用的社会--技术系统。

通过管理信息系统,可以规范化、标准化与自动化的管理业务流程,加快信息处理速度,提高信息质量和使用效率,从根本上提高运作质量和响应能力。

近年来,随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。

信息化以更快捷更方便为目标来融入各行各业。

学校也不能例外。

面对庞大的信息量需要有学生管理系统来提高学生管理工作的效率。

通过这样的系统可以做到信息的规范管理、科学统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。

当前,我国的学校正在加紧实施信息化建设,其中学生管理是相当重要的一部分。

学生学籍管理系统是一个教育单位不可缺少的部分。

一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。

所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。

但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。

建立学生学籍管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。

帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

C语言课程设计-学生信息管理系统之令狐文艳创作

C语言课程设计-学生信息管理系统之令狐文艳创作

南京工程学院令狐文艳课程设计说明书(论文)题目学生信息管理系统课程名称高级语言程序设计(C)院(系、部、中心)通信工程学院专业电子信息工程班级电信082学生姓名***学号**设计地点****指导教师** ______目录一、课程设计任务。

2二、系统设计方案。

2三、数据结构描述与定义。

2四、程序主要代码分析。

2五、测试结果与分析。

2六、课程设计总结。

2七、参考文献:。

2一、课程设计任务(一)前言本课程是继《高级语言程序设计(C)》课程之后,训练学生综合运用本课程知识,结合实际系统运用C语言进行系统设计以及调试,加深对本课程的理解,提高学生综合应用知识的能力、分析问题、解决问题的能力和利用C语言进行综合系统设计的实践技能。

学C语言程序设计已有1学期了,对C语言的基本概念和常用算法也有了一定的了解,平时虽然也做过一些练习,也看了不少程序从而掌握一定的语法知识和编程经验。

但是对于有些功能强大的软件还是没有尝试过能否编得起来。

所以决定在所学知识的基础上,再加以拓展,利用4个半天时间编个主题明确、具有一定使用价值的中小程序,以提高自身的编程水平与上机调试技能。

(二)课程设计题目及要求学生信息管理系统设计:学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

试设计一学生信息管理系统,使之能提供以功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)----输入学生信息浏览功能----输出查询、排序功能----算法按学号查询、按姓名查询学生信息的删除与修改二、系统设计方案(一)总体框架图:学生管理系统:1、录入学生信息2、修改学生信息3、查询学生信息4、浏览学生信息5、增加学生信息6、推出信息系统(二)模块设计模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明模块二:学生信息系统使用帮助声明函数void help(),对整个系统进行使用说明模块三:录入学生信息声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt"模块四:学生信息的查找声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支模块五:学生信息的修改声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块六:学生信息按学号排序声明void sort()将录入学生系按升序排列,用的是“冒泡排序法”实现排序模块七:增加学生信息声明void insert()插入学生信息,先通过判断学生是否存在,若否则继续输入,若是跳出,重新循环模块八:删除学生信息声明void del()实现学生信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。

  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;令狐文艳。

相关文档
最新文档