中州大学
课
程
设
计
学院:信息工程学院
班级:14级软件技术(普招)
题目:学生信息管理系统
学生姓名:熊建学号: 201427050124
指导教师:马芳
学期:2014-2015学年第二学期
2015年 6 月20 日
课程设计
一、设计思路
1.程序名称为:学生信息管理系统。
该程序能实现的功能:程序密码、录入学生信息、读取学生信息、删
除学生信息、修改密码、查看作者信息。
2.初次打开程序,程序自动生成“默认密码”文件,储存在用户电脑
D:\stusystem\key文件夹中。并在程序目录下生成一个“old”文件夹,
在下次进入程序时,系统自动检测“old”文件及是否存在,以判断是
否是第一次使用。若已存在,则要求用户输入密码,以进入程序主菜
单,并提示用户剩余密码输入次数,若用户连续五次密码输入错误,
则程序自动关闭。
3.进入程序主菜单,用户输入通过数字选择菜单项。
3.1信息录入系统:用户进入“信息录入系统”即开始输入第一个学生
的姓名、性别、学号等信息,一个学生信息录入完毕,程序自动为该学
生生成一个以该学生姓名命名,无扩展名的文件,将该学生的信息储存
在程序根目录下,调用Windows系统的拷贝功能,将文件拷贝到用户
电脑D:\stusystem\student文件夹中,并删除原文件。程序继续让用户录
入第二个学生信息。在任意项目输入过程中输入“m”(无论大小写)即
返回程序主菜单。
3.2信息查询系统:用户进入“信息查询系统”即开始输入要查询的学
生姓名,回车即可显示该学生的详细信息。输入“m”(无论大小写)即
返回程序主菜单。
3.3 .删除系统中储存的学生信息:进入之后用户可选择“清空全部学生
信息”、“删除单个学生信息”。清空全部学生信息,则调用windows系
统命令,清空用户电脑D:\stusystem\student文件夹中的所有文件,在真
正清空之前,再次提醒用户是否确认删除。清空完成后,给用户一个“清
空完成”的反馈,程序回到主菜单。删除单个学生信息,则要用户输入
要删除的学生姓名,并提醒用户是否确认删除,删除完成继续在删除学
生信息界面,至用户输入“m”,程序返回主菜单。
3.4 修改密码:用户需两次输入相同密码后才能修改成功,系统会新建
一个名为“key.mle”的文件储存在用户电脑D:\stusystem\key文件夹中,
以替换程序原密码。完成后提示用户密码修改成功。
3.5 关于:此选项会打开一个文本文档来介绍程序及作者的相关信息,
并根据用户的需要,可选择是否访问该程序及作者的相关网站。
3.6 退出程序
二、设计过程
设计程序中遇到的不常用的代码:
1.判断文件是否存在,不存在则生成一个文件夹:以“old”文件为例
char ifkey[]="old";//--------自定义文件名
if( !CreateDirectory(ifkey, NULL) )//----如果文件存在
{…}
2.判断输入的内容与预设的内容是否相符:
char key[50];
cin>>key;
if(!strcmp(oldkey,key)//------如果相同
{…}
3.打开指定文件,并将其内容赋给一个形参,以打开key.mle将其内容赋给形参oldkey为例:
ifstream inFile;
inFile.open("D:\\stusystem\\key\\key.mle");//-----打开原密码
char oldkey[50];
inFile >>oldkey;//-------赋给oldkey
4.在电脑中新建文件夹
system("mkdir D:\\stusystem\\key");
system("mkdir D:\\stusystem\\student");
5.在电脑指定目录生成文件,并编辑内容:
ofstream outfile("D:\\stusystem\\key\\key.mle");//-------定义文件名及文件位置outfile<<"米灵尔"< outfile.close(); 6.以学生姓名给文件命名,并填写学生信息: char name[50]; cin>>name; ofstream outfile(stuname.c_str()); outfile<<"姓名:"< outfile.close(); 7.将文件拷贝到指定位置: system("copy *. D:\\stusystem\\student\\");//------将学生信息文件拷贝到D盘 8.删除文件: system("del D:\\stusystem\\student\\");//------删除该目录下的所有文件 9. 自定义指定删除某个文件,利用批处理文件操作: cin>>delname; ofstream outfile("D:\\stusystem\\student\\1.bat");//新建批处理文件到指定位置outfile<<"del D:\\stusystem\\student\\"< outfile.close();//----------------------------------生成批处理文件 调用程序运行 char *p="D:\\stusystem\\student\\1.bat"; system(p);//-----运行批处理文件 运行结果: 三、总结 编写一个程序最主要的,是始终要明确自己的思路。任何一个程序在编写的时候都会出现很多种问题,通常在几百行的代码里找问题很让人头疼,但是只要始终明确自己的思路,就不怕程序出现问题,程序的运行与否很大部分受逻辑限制,出现问题了,根据自己的思路来研究程序中的逻辑,很快就能找到问题所在。 编写一个复杂点的程序可能会遇到靠自己编写的代码不能实现的功能,这时候好好地利用下网络,可以从中学到很多东西。 附程序代码 附: #include #include #include #include #include #include using namespace std; class stusystem { public: void get(); void make(char name[50],char sex[50],char num[20],string filename); char name[50]; char sex[50]; char num[20]; ofstream outfile; string stuname; void read(string stuname); void menu(); void readxinxi(); void keypanduan(); char key[50]; void welcome(); void about(); void changekey(); void maketxt(); void del(); }; void stusystem ::get() { system("cls"); cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 欢迎进入米灵尔学生信息录入系统|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n"; cout<<" ------输入“m”,可返回菜单------\n\n\n"; cout<<"\n请输入学生姓名:"; cin>>name; char back1[50]="m"; char back2[50]="M"; if(!strcmp(back1,name)||!strcmp(back2,name)) { system("cls"); stusystem a; a.menu(); } cout<<"\n请输入学生性别:"; cin>>sex; if(!strcmp(back1,sex)||!strcmp(back2,sex)) { system("cls"); stusystem a; a.menu(); } cout<<"\n请输入学生学号:"; cin>>num; if(!strcmp(back1,num)||!strcmp(back2,name)) { system("cls"); stusystem a; a.menu(); } stusystem a; a.make(name,sex,num,name); } //--------------以下是生成文件的程序------------------- void stusystem ::make(char name[50],char sex[50],char num[20],string stuname) { ofstream outfile(stuname.c_str()); outfile<<"姓名:"< outfile.close(); system("copy *. D:\\stusystem\\student\\");//将学生信息文件拷贝到D盘system("del *."); stusystem b; b.get(); } //--------------以上是生成文件的程序------------------- void stusystem ::readxinxi() { cout<<" ------输入“m”,可返回菜单------\n\n\n"; cout<<"请输入学生姓名:"; cin>>name; system("cls"); cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 欢迎进入米灵尔学生信息查询系统|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n"; char back1[50]="m"; char back2[50]="M"; if(!strcmp(back1,name)||!strcmp(back2,name)) { stusystem a; a.menu(); } cout< stusystem a; a.read(name); } void stusystem ::read(string stuname)//--------------以下是读取文件的程序---------------- { ifstream in(stuname.c_str()); string line; while(getline(in,line)) { cout< } stusystem a; a.readxinxi(); }//--------------以上是读取文件的程序------------------- void stusystem ::about() { cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 关于About |\n"; cout<<" | |\n"; cout<<" ===================================================\n\n\n"; cout<<" 此程序完全由米灵尔_熊建编写,如与某同学的程序有相似之处纯属缘分! \n\n"; cout<<" 编写时间:2015年6月22日,星期二\n\n 程序版本号:15.3.1\n";//15年第3次功能改动,第1次修改 cout<<"\n是否简单了解一下米灵尔?Y/N\n"; char yes; cin>>yes; if(yes=='y'||yes=='Y') { stusystem a; a.maketxt(); char *p="米灵尔.txt"; system(p); char *b="mle.html"; system(b); } else { if(yes!='n'&&yes!='N') { cout<<"输入有误,请重新输入\n\n"; stusystem a; a.about(); system("del 米灵尔.txt"); system("cls"); } } yes=0; cout<<"\n是否访问米灵尔网站?Y/N\n"; cin>>yes; if(yes=='y'||yes=='Y') { ShellExecute(NULL,"open","https://www.doczj.com/doc/c94826675.html,",NULL,NULL,SW_SHOW); } else { if(yes!='n'&&yes!='N') { cout<<"\n输入有误,请重新输入\n\n"; stusystem a; a.about(); system("del 米灵尔.txt"); system("cls"); } } system("del 米灵尔.txt"); system("cls"); stusystem a; a.menu(); } void stusystem ::maketxt() { ofstream outfile("米灵尔.txt");//--------自定义目录生成文件,名为“key” outfile<<" 米灵尔是一个仍处于“幼年期”的团队。\n 团队是2013年由两个高中生创立,一直持续到今天。团队没有多么\n发达,强大,但有着不断学习进取的心态。我们不怕别人的嘲讽,与蔑视,\n只为让加入我们的人掌握更多的本领;认识我们的人,从我们这里学到\n有用的东西。我们没有定向发展,是因为我们还在成长。我们会像当今的中国一样:\n 走着“米灵尔特色,团队主义”道路。我们也处于初级发展阶段。\n 要问米灵尔到底是做什么的?答:学习,服务。\n\n米灵尔网址:https://www.doczj.com/doc/c94826675.html,\n邮箱:postmaster@https://www.doczj.com/doc/c94826675.html,\n"< outfile.close(); } void stusystem ::del() { system("cls"); cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 删除学生信息|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n\n"; cout<<" 请选择:\n\t1.清空全部学生信息\n\t2.删除单个学生信息\n\tm.返回菜单"< char a[10]; cin>>a; char a1[10]="1"; char a2[10]="2"; if(!strcmp(a1,a)||!strcmp(a2,a)) { if(!strcmp(a1,a)) { cout<<" 确定清空系统中储存的所有学生信息?\n 此操作不可恢复!是否继续?是Y/否N\n"; char del; cin>>del; if(del=='y'||del=='Y') { cout<<"正在清理"; system("del D:\\stusystem\\student\\"); system("del *."); cout<<"学生信息文件已全部清空"< _sleep(2000); stusystem a; a.menu(); } else { system("cls"); stusystem a; a.del(); } } else { char delname[50]; cout<<"请输入要删除的学生姓名:"< cin>>delname; cout<<"\n确定删除"< char del; del=0; cin>>del; if(del=='y'||del=='Y') { ofstream outfile("D:\\stusystem\\student\\1.bat");//利用批处理文件删除 outfile<<"del D:\\stusystem\\student\\"< outfile.close();//----------------------------------生成批处理文件 char *p="D:\\stusystem\\student\\1.bat"; system(p); system("del D:\\stusystem\\student\\1.bat"); system("cls"); cout<<"\n学生:"< _sleep(2000); system("cls"); stusystem a; a.del(); } else { system("cls"); stusystem a; a.del(); } } } else { stusystem a; a.menu(); } } void stusystem ::menu() { system("del *.");//删除本地学生信息文件 system("cls"); cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 米灵尔学生信息管理系统菜单|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n"; char choose[10]; char c1[10]="1"; char c2[10]="2"; char c3[10]="3"; char c4[10]="4"; char c5[10]="5"; char c0[10]="0"; char cM[10]="M"; char cm[10]="m"; cout<<"\n 系统菜单:\n\n 1.进入信息录入系统\n\n 2.进入信息查询系统\n\n 3.删除系统中储存的学生信息\n\n"; cout<<" 4.修改密码\n\n 5.关于\n\n 0.退出系统\n\n"; cout<<" 操作过程中输入m进入菜单\n\n"; cout<<"选择:"; cin>>choose; cout< if(!strcmp(c1,choose)||!strcmp(c2,choose)||!strcmp(c3,choose)||!strcmp(c4,choose)||!strcmp(c 5,choose)||!strcmp(c0,choose)||!strcmp(cM,choose)||!strcmp(cm,choose)) { if(!strcmp(c1,choose)) { system("cls"); cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 欢迎进入米灵尔学生信息录入系统|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n\n"; stusystem a; a.get(); } if(!strcmp(c2,choose)) { system("copy D:\\stusystem\\student\\*." );//把文件拷贝回来 system("cls"); cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 欢迎进入米灵尔学生信息查询系统|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n"; stusystem a; a.readxinxi(); } if(!strcmp(c3,choose)) { stusystem a; a.del(); } if(!strcmp(c4,choose)) { stusystem a; a.changekey(); } if(!strcmp(c5,choose)) { system("cls"); stusystem a; a.about(); } if(!strcmp(c0,choose)) { cout<<"系统正在关闭,再见!"; _sleep(1000); exit(3); } if(!strcmp(cM,choose)||!strcmp(cm,choose)) { stusystem a; a.menu(); } } else { cout<<"\n输入有误,请重新输入\n\n"; _sleep(1000); stusystem a; a.menu(); } } void stusystem ::keypanduan() { char ifkey[]="old";//-----------------------判断是否第一次使用(第一次生成文件)----- if( !CreateDirectory(ifkey, NULL) )//-------判断是否第一次使用----- { cout<<"请输入系统使用密码(如忘记密码请与管理员联系:postmaster@https://www.doczj.com/doc/c94826675.html,):\n"; cin>>key; ifstream inFile;//-----------------------打开原密码 inFile.open("D:\\stusystem\\key\\key.mle");//-----打开原密码 char oldkey[50]; char off[10]="0"; inFile >>oldkey;//-----------------------将原密码赋给“oldkey” int i=4,n=5; for(i=5;i!=0;i--) { n--;//n=4 if(!strcmp(oldkey,key)||n==0||!strcmp(off,key)) { if(n==0) { cout<<"=================================\n"; cout<<"| 密码输入错误,系统即将关闭!|\n"; cout<<"=================================\n\n"; _sleep(3000); exit(3); } if(!strcmp(oldkey,key)) { stusystem a; a.welcome(); } if(!strcmp(off,key)) { cout<<"系统正在关闭,再见!"; _sleep(1000); exit(3); } } else { cout<<"\n密码输入错误,您还有"< cin>>key; cout< } } } else { cout<<"初次使用,正在生成系统密码:\n\n"; _sleep(800); cout<<"初始密码为“米灵尔”,下次进入系统请先输入密码\n\n"; system("mkdir D:\\stusystem\\key"); system("mkdir D:\\stusystem\\student");//-----------------生成文件夹-- ofstream outfile("D:\\stusystem\\key\\key.mle");//--------生成原密码,储存为名为“key”的文件里 outfile<<"米灵尔"< outfile.close(); //---------------------------------------关闭生成文件程序 _sleep(8000); stusystem a; a.welcome(); } } void stusystem ::welcome() { system("cls"); cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 欢迎使用米灵尔学生信息管理系统|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n\n"; _sleep(1000); stusystem a; a.menu(); } void stusystem ::changekey() { char newkey1[50]; char newkey2[50]; cout<<"请输入新密码:"; cin>>newkey1; cout<<"\n请再输入一次:"; cin>>newkey2; if(!strcmp(newkey1,newkey2)) { ofstream outfile("D:\\stusystem\\key\\key.mle"); outfile< outfile.close(); system("cls"); cout<<"\n 新密码设置成功,请牢记密码!\n"; stusystem a; a.menu(); } else { cout<<"两次输入不一样,请重新输入\n\n"; stusystem a; a.changekey(); } } void main() { char key[50]; cout<<" ===================================================\n"; cout<<" | |\n"; cout<<" | 米灵尔学生信息管理系统|\n"; cout<<" | |\n"; cout<<" ===================================================\n\n\n"; stusystem a; a.keypanduan(); } //--此程序由米灵尔_熊建于2015年5月14日编写,最后修改时间2015年6月22日3点48分-- //---请尊重别人的劳动成果,谢谢!----