第一篇:信息管理系统课程设计小结
开发小结
通过此次课程设计,使我更加扎实的掌握了有关信息管理系统方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我了解到信息管理系统是一门非常实用的课程,在21世纪信息高速发展的时代中,它的预测和辅助决策的功能,具有很重要的作用。我掌握了如何利用网站实现管理,分工,提高效率,还制作了工作和研究过程流程图。
所以,我们制定了校园订餐系统运营的方案计划:(1)建立为浦江学院学生与教职员工提供网络订餐服务网站。(2)为因学习或工作耽误就餐时间的师生提供“门到门”服务。(3)本网站也提供学生生日,聚餐等活动的预订服务。(4)整合校内“门到门”服务经营者,加强与他们的合作,提供和稳定的订单,做到互助共赢。(5)宣传校内以及商家的特色菜品,能更好的扩大对校园的影响力。确定了系统数据流程图如下:
本次校园订餐系统包括两大模块:第一部分是管理模块,这模块中又可以分成用户账号管理模块和餐厅信息管理模块,第二部分是员工模块,这个部分可以分为客户账号管理模块和订餐情况管理模块。
为了使客户的订单准确无误被送达,提高效率,我们还设计了客户信息表,主要是保存客户的相关信息,包括客户账号,密码,姓名,地址等,如下所示:
由于管理员在网络订餐管理系统中起着统筹协调,管理的重要作用,所以我们也绘制了管理员流程图如下:
我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。
此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。我认为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师和同学。使我再专业知识和动手实践方面都得了到很好的提升,在此,要对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!课设的成功,少不了老师的耐心指导和同学的热心帮助,以及小组中其他成员的大力配合。没有大家的默契,也收获不了今日的成功,在课设的过程中每一个人都努力查找资料,仔细检查,认真核对,都付出了自己的努力和艰辛,在此,谢谢所有人的努力和帮助,才使实验能够得以顺利地完成。
第二篇:【课程设计】职工信息管理系统
题目:职工信息系统
功能包括:
建立职工信息数据(职工编号,姓名,性别,年龄,电话,职务,工资和家庭成员信息)和信息简表(编号,姓名,电话) 根据职工编号查询职工信息(查询时需要身份确认。单位领导和人事秘书可以看到职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信息简表) 增加新职工信息(由人事秘书完成,需要身份确认) 删除职工信息(由人事秘书完成,需要身份确认) 修改职工工资(由财务处人员完成,需要身份确认) 要求所有信息能够存储在文件中,并具有良好的用户界面
#include
//ct用来储存文件中数据组数,Admin用来储存登陆后该用户的权限,//na用来储存登录所输的编号,方便主菜单内使用其显示当前用户
void hline(int);inline void eatline(){while(cin.get()!='n')continue;} class staff {/*职工编号,姓名,性别,年龄,职务,电话,工资和家庭成员信息*/ public:
};void staff::printf()
//输出的选择,判断其职务,选择调用哪个输出 { if(Admin==1||Admin==2)printf1();else int num;char name[LIM],sex[3];int age;char job[10],phone[15];double wages;char home[20];int admin;void printf();void printf1();void printf2();void printf3();
}
if(Admin==3)printf2();else printf3();void staff::printf1()
//领导及人事秘书能见的输出 {
} void staff::printf2()
//财务人员能见的输出 {
} void staff::printf3()
//普通员工能见的输出 { cout<
switch(n){ case 1:{cout< < };break;case 2:{cout< };break;case 3:{cout< } } < };break;void menu() //主菜单 { cout<<“t╔╤╤╤╤╤╤职工编号: ”< //二级菜单 { cout<<“t╔╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤┐”< //登陆的实现部分 { cout<<“t┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┓”< int w=0;while(!(cin>>na)){ cin.clear();while(cin.get()!='n')continue;cout<<“输入有误,编号为一串数字,请重新输入:n”; for(int i=1;i<=ct;i++)} fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu; { streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){ cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE); } find.read((char *)&stu, sizeof stu);if(stu.num==na){ } w=1;Admin=stu.admin;} if(w==0){cout<<“t┣╋**登录失败!未找到相应的信息!程序将退出**╋┫”< } int stu_num() //计算数据组数 { } staff stu;ifstream stunum;stunum.open(file,ios_base::in|ios_base::binary);if(stunum.is_open()){ } stunum.close();return ct;stunum.seekg(0);while(stunum.read((char *)&stu,sizeof stu))ct++;system(“pause”);system(“cls”);void setadmin(staff &stu,char jobs[10]) //增加职工时根据职务设置权限 { char job1[10]=“总经理”;char job2[10]=“副总经理”;char job3[10]=“人事秘书”;char job4[10]=“财务人员”; } void add() // 输入数据的函数,增加职工 { if(Admin==2){ staff stu;if((!strcmp(stu.job,job1))||(!strcmp(stu.job,job2)))stu.admin=1;else if(!strcmp(stu.job,job3))stu.admin=2;else if(!strcmp(stu.job,job4))stu.admin=3; ofstream fout(file, ios_base::out | ios_base::app | ios_base::binary); if(!fout.is_open()) { cerr << “不能打开 ” << file << “ 文件:n”; exit(EXIT_FAILURE); } cout << “★增加职员信息★请输入职工姓名:(按Enter键退出输入!):n”;eatline(); cin.get(stu.name, LIM); while(stu.name[0]!= ' ') { cout << “★增加职员信息★请输入职工编号:”; cin>>stu.num;cout << “★增加职员信息★请输入职工性别:”;eatline();cin.get(stu.sex, 3);cout << “★增加职员信息★请输入职工年龄:”;cin>>stu.age; cout << “★增加职员信息★请输入职工职务:”;eatline();cin.get(stu.job, 10); cout << “★增加职员信息★请输入职工电话:”;eatline(); cin.get(stu.phone, 15); cout << “★增加职员信息★请输入职工工资:”;cin>>stu.wages; cout << “★增加职员信息★请输入职工家庭信息:(按Enter键退出输入!):n”; eatline(); cin.get(stu.home, 20);setadmin(stu,stu.job); fout.write((char *)&stu, sizeof stu);cout << “■增加职员信息■请输入职工姓名:(按Enter键退出输入!):n”; eatline();cin.get(stu.name,LIM); } fout.close(); } else cout<<“******************无权限,请与人事部秘书联系*******************************”< void output() //输出全部职工信息的函数 { staff stu; } ifstream find;find.open(file,ios_base::in|ios_base::binary);hline(1);while(find.read((char *)&stu,sizeof stu)){ cout< < //修改数据函数 { if(Admin==3){ fstream change; int w=0;staff stu;streampos place; change.open(file,ios_base::in|ios_base::out|ios_base::binary);if(change.eof())change.clear(); //清除EOF cout<<“请输入你要修改的职员编号:”< place =i* sizeof stu;change.seekg(place);if(change.fail()){ cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE); } change.read((char *)&stu, sizeof stu);if(stu.num==rec){ } w=1; cout << “你选择的是:n”;stu.printf2();break; } if(w==1){ cout << “请输入你要修改职员的工资: ”;while(cin >> stu.wages){ if(stu.wages<0||stu.wages>100000) { cout<<“■输入的工资错误!请重新输入:■ cin.clear(); while(cin.get()!='n'); continue; } break;} change.seekp(place); // 回到查找到的地点 change.write((char *)&stu, sizeof stu)<< flush;if(change.fail()){ cerr << ”■--查找失败!程序将退出--■n“;system(”pause“); n”; } exit(EXIT_FAILURE);} change.close();cout<<“★---修改成功!---★”< void del() //删除指定编号的职工信息 { if(Admin==2){ while(1){ eatline();int delnum;cout<<“请输入你要删除的职工的编号:n”; cin>>delnum;fstream in;in.open(“staff.dat”,ios_base::in|ios_base::binary);if(!in){ cout<<“打开失败”;return;} fstream temp;temp.open(“temp.dat”,ios_base::out|ios_base::binary);staff stu;int q;in.read((char*)&stu,sizeof(stu));while(!in.eof())//将文件内容修改后临时寸到另一个文件中 { } in.close();temp.close();//修改完成,将原文件清空,并将临时文件内容q=0;if(stu.num==delnum){ } if(q==0)temp.write((char*)&stu,sizeof(stu));in.read((char*)&stu,sizeof(stu));q=1;复制回原文件 中 } { out.write((char*)&stu,sizeof(stu));temp.read((char*)&stu,sizeof(stu));out.open(“staff.dat”,ios_base::out|ios_base::trunc|ios_base::binary);temp.read((char*)&stu,sizeof(stu));while(!temp.eof())//将文件内容修改后临时寸到另一个文件 temp.open(“temp.dat”,ios_base::in|ios_base::binary);if(!temp){ cout<<“打开失败”;return;} ofstream out;}//完成复制 out.close();temp.close(); cout<<“删除成功!t是否继续删除?y/nn”;char x;cin>>x;if(!(x=='y'||x=='Y'))break;} else cout<<“****************无权限,请与人事部秘书联系*****************************”< void find() //查找职工的实现部分 { while(1){ menu2();//eatline();int a;int w=0;cin>>a;int na;char sna[LIM];fstream find;find.open(file,ios_base::in|ios_base::out|ios_base::binary);eatline();staff stu;switch(a){ case 1:cout<<“请输入职工编号:”< case 2:cout<<“请输入职工姓名:”< if(Admin==1||Admin==2)output();else cout<<“**************无权限,请与单位领导或人事部秘书联系********************”< }break;default:{ } for(int i=1;i<=ct;i++){ streampos place =(i-1)* sizeof stu;find.seekp(place);if(find.fail()){ cout<<“■选择执行的操作错误!■n”;cin.clear();while(cin.get()!='n');continue;} cerr << “■查找出错!程序将退出!■n”;system(“pause”); exit(EXIT_FAILURE);} find.read((char *)&stu, sizeof stu);switch(a){ case 1:if(stu.num==na){ w=1; stu.printf();};break;case 2:if(!strcmp(stu.name,sna)) { w=1; stu.printf(); };break;case 3:break;default:{ cout<<“■选择执行的操作错误!■ cin.clear(); while(cin.get()!='n');continue; } } } n”; } if(w==0)cout<<“■未找到此人!■”< 职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信 息简表) 增加新职工信息(由人事秘书完成,需要身份确认) 删除职工信息(由人事秘书完成,需要身份确认) 修改职工工资(由财务处人员完成,需要身份确认) 要求所有信息能够存储在文件中,并具有良好的用户界面 */ int main(){ system(“color 6F”);ifstream fin;fin.open(file,ios_base::in|ios_base::binary);if(!fin.is_open()){ staff st[5]={ {10001,“张三”,“男”,35,“总经理”,“***”,20000,“父母,弟弟,姐姐”,1},{10002,“李四”,“男”,32,“副总经理”,“***”,12000,“父母,兄长”,1},{10003,“ 王 婷 ”,“ 女 ”,25,“ 人 事 秘 书”,“***”,10000,“---略---”,2},{10004,“陈六”,“女”,25,“财务人员”,“***”,8000,“---略---”,3},{10005,“Obama”,“ 男 ”,23,“ 普 通 职 工”,“***5”,7000,“---略---”,0}};ofstream fout(file,ios_base::out|ios_base::binary); for(int i=0;i<5;i++)fout.write((char *)&st[i],sizeof st[i]);fout.close();} fin.close();stu_num();loading();while(1){ menu();cout<<“请输入你要选择的操作: char n;cin>>n;switch(n){ case '1':eatline();find();break;case '2':add();break;case '3':del();break;case '4':change();break;case '5':exit(EXIT_FAILURE); n ”; default:{ cout<<“■选择执行的操作错误!■n”; cin.clear(); while(cin.get()!='n'); continue;} 清除已经输入的内容,程序选择 } system(“pause”); system(“cls”); cin.clear();} return 0;} //如果选择错误,cin.clear等语句 嵌入式课程设计报告册 题目:学生信息管理系统 班级:移动三班 辅导老师:邱雅 一、软件需求分析 1、可行性分析 (1)经济可行性 ①:目前中国有越来越多的中小型企业在蓬勃发展,而现代化员工信息管理系统已经逐渐取代了传统的人工信息管理,智能化的管理系统更具有高效性可行性,所以自能管理系统将会成为或正在成为现代化公司员工信息管理的有效方式; ②:这款学生信息管理系统的价格适合所有学校消费群体,将会有很大的应用空间,满足各种学校学生管理的要求; ③:学生系信息管理系统的价格比相对于同类公司员工管理系统产品较低,同时本软件的成本低于同类产品的平均水平,具有很大的利润空间; ④:本系统的开发环境和软件环境都是当前流行的产品,本系统的软件需求都是基本的功能和应用,在现实中很容易实现。 (2)法律可行性 本软件的开发采用C语言作为软件的开发语言,没有采用同类产的代码,完全是自主开发,并按照国际上软件开发的相关规定来实现开发的; (3)技术可行性 本软件开发系统采用linux开发平台,具有很强的兼容性和扩展性,本软件的占用的内存较小大部分的硬件处理系统都可以兼容,开发语言采用国际通用的C高级编程语言具有很高的维护可行性,经过综合分析我认为现阶段我方所拥有的资源和技术人员,在技术上完全可以实现这款软件的开发,并且能高质量,快速的完成这项工作。 2、用户需求概述 用户需要一个可以简单的实现通讯录功能的简单通讯录系统,分别完成查询,增加,修改,删除的一些简单的功能要求在完成所要求功能的前提下增强与用户的互动,使软件的可操作性增强,此外还可以志愿加入一些新的功能来进行对软件的优化在优化的同时要注意软件基本功能的保障。 二、软件分析与设计 一.功能 1、创建班级 2、输出学生信息 3、按照学号录入学生成绩 4、按照班级录入学生成绩 5、按照学号修改学生成绩 6、按照班级修改学生成绩 7、按照班级统计学生的总成绩 8、按照学号查询学生成绩 9、按照班级输出不及格学生名单及科目 10、按照班级输出学生成绩单 0、退出系统 二.功能模块图: 学生信息管理系统按照创建班级输出学生信息按照学号录入学生成绩按照班级录入学生成绩按照学号修改学生成绩按照班级修改学生成绩按照班级统计学生的总成绩按照学号查询学生成绩班级输出不及格学生名单及科目按照班级输出学生成绩单按照班级输出学生成绩单 图1 系统功能模块图 三、主要功能的实现 程序设计一般由两部分组成 些数据结构具有同样的重要性 保存等外更多的情况是查询 1、学生信息管理 算法和数据结构,合理地选择和实现一个数据结构和处理这,在学生信息管理程序中由于预计记录数比较大能够、删除、。所以选用动态链表保存数据。 由于信息输入量比较大,需要的存储空间大,所以需要采用树的双亲表示法进行信息存储,为了方便采用以下定义。struct student { int num;char name[20];char sex[5];char class[30];int semester;char course[30];int score[3];struct student *next;}; struct list { int class;struct student *head;};2.main()主函数 程序采用模块化设计,主函数是程序的入口各模块独立。可分块调 试均由主函数控制调用控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过 调用主菜单函数得到的返回值,根据该值 调用相应的各功能函数。同时设置一个断点。即当返回值为一定条件时运行break 0;函数结束程序,以免造成死循环。根据菜单的提示进 行需要的操作。 图2 主函数输出界面 开始输入数据否选择是功能选择退出系统结束 图3 程序总体流程图(1)主菜单 直接利用输出函数 printf 输出字符串在屏幕上显示一个菜单并显示一个提示输入 选项输 入数字,将此数字作为菜单函数的返回值返回主函数,主函数根据 这个数字调用相应的功 10-2 所示: 能函数,制作简便,操作简单界面如图 图 4 主菜单界面 由于程序中很多地方用到了字符串输入语句会造成下一个字符不能正确读入为了 在程序调 按照所见即所得的方式直接 用执行了各个函数后能够清晰地看到菜单 并输入新的选项。设计输出函数输出字符串达到菜单效果将精力主要放在程序功能的实现上利用 while循环 语句一直执行 scanf(“%d”,t)语句。让用户输入 数按照整形数据形式输入然后字符串转化 为数字返回主函数。既然是数字选项为什么不用整数格式输入而要按字符串输入。再将其 a 和 b 等 由于类转换呢,如果按照整数格式输入,当用户输入了非数字字 符。例如 表面上看是数字也应将其设为字符 型不同将导致程序出错。所以对于不参与运算的数据 处理。例如电话号码,千万不要设为整数类型,程序设计技巧很多。所以读者在编程调试中应注意并仔细体会。 (2)创建班级 输入记录时按照一条一行的格式输入,每个数据之间用空格分隔,较为清晰且能直接 反映数据之间的关系,但由于 scanf 函数的特性,在输入时数据用回车分隔也是可以的,但与 界面设计不吻合界面.由于记录并不是一次性全部输入而是随时填加和删除的,而预先开辟 n,然后用的空间数往往大于实际的记录数。所以程序设计为首先输入准备输入的记录数 while循环语句循环输信息。 图5 创建列表页面 输出学生信息 该功能的实现主要是 是通过结构体数组中的链表指针进行输出 图6输出全部信息 按照学号录入学生成绩 通过头指针查找到需要录入成绩的节点,录入成绩。 按照班级录入学生成绩 按照学 号 修 改 学 生 成绩 按照班级修改学生成绩 按照班 级 统 计 学 生的总 成绩 按照学 号 查 询 学 生 成绩 按照班级输 出 不 及 格 学 生 名 单 及 科 目(11)按照班级输出学生成绩单 四、程序设计 (一)先进行人工检查,即静态检查。 在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。 为了更有效地进行人工检查,所编的程序应力求做到以下几点: ①应当采用结构化程序方法编程,以增加可读性; ②尽可能多加注释,以帮助理解每段程序的作用; ③在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。 (二)在人工检查无误后,再上机调试。 通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。 如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。 (三)在改正语法错误(包括“错误(error)”和“警告(warning)”)后,程序经过连接(link)就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。 有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以很容易判断结果正确与否。例如解方程。事实上,当程序复杂时很难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。 (四)运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法: 1.将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。 2.如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。 3.也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。当调试完毕,这些语句不用再编译了,也不再被执行了)。这种方法可以不必一一去掉printf函数语句,以提高效率。 4.如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题。如有则改正之,接着修改程序。 5.有的系统还提供debug(调试)工具,跟踪程序并给出相应信息,使用更为方便,请查阅有关手册。 总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。在程序调试过程中往往反映出一个人的水平,经验和态度。希望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少的实用程序。 五、代码的实现 #include #define MAXSIZE 100 struct student { int num;char name[20];char sex[5];char class[30];int semester;char course[30];int score[3];struct student *next;}; struct list { int class;struct student *head;}; void CreatClassStudent(struct list Class[],int n)//创建班级 { char ch;int i;i = 1;struct student *head,*p,*q;head =(struct student *)malloc(sizeof(struct student));q = p = head;while(i <= n){ printf(“输入第%d个班级的信息:n”,i); struct student *head,*p,*q; head =(struct student *)malloc(sizeof(struct student)); Class[i].head = p = head; while(1) { printf(“输入学号:n”); scanf(“%d”,&head->num); printf(“输入姓名:n”); scanf(“%s”,head->name); head->score[0] = 0; head->score[1] = 0; head->score[2] = 0; getchar(); printf(“是否继续?n”); scanf(“%c”,&ch); if(ch == 'n') break; p =(struct student *)malloc(sizeof(struct student)); head->next = p; head = p; } head->next = NULL; i++;} } void print(struct list Class[],int n)//输出学生信息 按照班级输出 { struct student *p;int i=1; while(i <= n){ p = Class[i].head; printf(“移动%d班学生信息n”,i); while(p!= NULL) { printf(“%dt”,p->num); printf(“%st”,p->name); printf(“%dt%dt%d”,p->score[0],p->score[1],p->score[2]); p = p->next; printf(“n”); } printf(“n”); i++;} } void StudentId(struct list Class[],int n)//按照学号输入成绩 { int score1,score2,score3;int t;int key;printf(“输入学号:”); scanf(“%d”,&key); int i;i = 1;struct student *p; while(i <= n){ p = Class[i].head; while(p!= NULL) { if(p->num == key) { printf(“输入3门成绩:”); scanf(“%d%d%d”,&score1,&score2,&score3); p->score[0] = score1; p->score[1] = score2; p->score[2] = score3; t = 0; } p = p->next; } i++;} if(t!= 0) printf(“该学号不存在!n”);} void ClassId(struct list Class[],int n){ int i = 1;struct student *p;while(i <= n){ printf(“录入%d班级的成绩n”,i); p = Class[i].head; while(p!= NULL) { printf(“输入学号为%d的学生成绩:”,p->num); scanf(“%d%d%d”,&p->score[0],&p->score[1],&p->score[2]); p = p->next; } printf(“成绩录入结束n”); i++;} } void StudentNumberChange(struct list Class[],int n){ int i = 1;int key;int score1,score2,score3;int t; printf(“请输入学号:”);scanf(“%d”,&key);struct student *p;while(i <= n){ p = Class[i].head; while(p!= NULL) { if(p->num == key) { printf(“请输入新的成绩:”); scanf(“%d%d%d”,&score1,&score2,&score3); p->score[0] = score1; p->score[1] = score2; p->score[2] = score3; t = 0; } p = p->next; } i++;} if(t!= 0){ printf(“该学号不存在!n”);} } void ClassNumChange(struct list Class[],int n) { int class;int score1,score2,score3;char ch;struct student *p;printf(“输入需要修改信息的班级号%d----%d:”,1,n);scanf(“%d”,&class); p = Class[class].head; while(p!= NULL) { printf(“是否要修改%d的成绩:”,p->num); getchar(); scanf(“%c”,&ch); if(ch == 'n') { p = p->next; continue; } printf(“输入新的成绩:”); scanf(“%d%d%d”,&score1,&score2,&score3); p->score[0] = score1; p->score[1] = score2; p->score[2] = score3; p = p->next; } } void TotalGrade(struct list Class[],int n){ int sum = 0;int average;int k;int class;printf(“输入班级号%d------%dn”,1,n);scanf(“%d”,&class);struct student *p;p = Class[class].head;while(p!= NULL){ sum = p->score[0] + p->score[1] + p->score[2]; average = sum / 3; printf(“%d的总成绩是%d平均成绩是%dn”,p->num,sum,average); p = p->next; } } void QueryResults(struct list Class[],int n){ int i = 1;int key;int t;struct student *p;printf(“请输入学号:”);scanf(“%d”,&key);while(i <= n){ p = Class[i].head; while(p!= NULL) { if(p->num == key) { printf(“学号为%d的学生[移动%d班]”,p->num,i); printf(“%dt%dt%dn”,p->score[0],p->score[1],p->score[2]); t = 0; break; } p = p->next; } if(t!= 0) { printf(“该学生不存在于%d班n”,i); } i++;} } void NotPass(struct list Class[],int n){ int class; printf(“请输入班级号%d---%d:”,1,n);scanf(“%d”,&class);struct student *p;p = Class[class].head;printf(“%d班不及格名单n”,class);while(p!= NULL){ if(p->score[0] < 60 || p->score[1] < 60 || p->score[2] < 60) { printf(“%dt%st”,p->num,p->name); if(p->score[0] < 60) printf(“语文t%dt不及格t”,p->score[0]); if(p->score[1] < 60) printf(“线性代数t%dt不及格t”,p->score[1]); if(p->score[2]<60) printf(“英语t%dt不及格t”,p->score[2]); printf(“n”); } p = p->next;} } void Transcript(struct list Class[],int n){ int class;printf(“请输入班级号:”);scanf(“%d”,&class);struct student *p;p = Class[class].head;while(p!= NULL){ printf(“%dt%st%dt%dt%dn”,p->num,p->name,p->score[0],p->score[1],p->score[2]); p = p->next;} } void menu(){ printf(“ 0、退出系统n”);printf(“ 1、创建班级n”);printf(“ 2、输出学生信息n”);printf(“ 3、按照学号录入学生成绩n”);printf(“ 4、按照班级录入学生成绩n”);printf(“ 5、按照学号修改学生成绩n”);printf(“ 6、按照班级修改学生成绩n”);printf(“ 7、按照班级统计学生的总成绩n”);printf(“ 8、按照学号查询学生成绩n”);printf(“ 9、按照班级输出不及格学生名单及科目n”);printf(“ 10、按照班级输出学生成绩单n”);} int main(){ int n;int i;int operation; struct list Class[MAXSIZE];Class[0].head = NULL;Class[0].class =-1; printf(“输入班级数量:n”);scanf(“%d”,&n);while(1){ menu(); printf(“请选择操作:”); scanf(“%d”,&operation); switch(operation) { case 1:CreatClassStudent(Class,n); break; case 2:print(Class,n); break; case 3:StudentId(Class,n); break; case 4:ClassId(Class,n); break; case 5:StudentNumberChange(Class,n); break; case 6:ClassNumChange(Class,n); break; case 7:TotalGrade(Class,n); break; case 8: QueryResults(Class,n); break; case 9:NotPass(Class,n); break; case 10:Transcript(Class,n); break; case 0:exit(-1); } } return 0; } 六、参考文献 1、《嵌入式linux上的C语言编程实践》 北京亚嵌教育研究中心、韩超 电子工业出版社 2、《linux 下C语言应用编程》 杨铸 北京航空航天大学出版社 3、《linux 高级程序设计》 杨宗德 邓玉春 人民邮电出版社 七、开发环境 开发环境linux操作系统 GNU Compiler Collection程序生成工具软件 JAVA员工管理系统 实验报告 姓名:张旭冉 学号:10105010117 班级:信10-1 北方工业大学理学院信息与计算科学系 2013年 12月 17日 员工管理系统一、实验目的 通过该课程设计,使同学们进一步理解概JAVA的基本概念、理论和方法,初步掌握JDK、Eclipse的调试和应用,以及程序中错误的解决方法,明确JAVA在实际程序设计中的应用。使课堂中学习到理论得到应用,练习文件形式在JAVA程序设计中的应用。 二、实验内容 A.设计题目:员工管理系统 设计要求:(1)完成员工信息的添加、删除、查询、修改功能 (2)使用用户界面操作 (3)使用文件形式完成 设计思路:首先设计界面进入面板,在面板中添加菜单选项,并将要实现的功能选项添加其中,然后对这些选项实施监听,实现其功能。通过文件类型知识的应用,实现对员工信息的管理。B.概要设计 面板设计:首先设计一个容器,然后再容器中添加菜单,在菜单中添加选项,并在容器中加入面板,面板布局设置为CardLayout,最后将面板添加进容器。 功能实现:在录入、查询、修改和删除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice为界面中加入相应的组件,并对其进行监听,同时附加了文件流的处理。C.详细设计 1、定义员工类: public class Employee implements java.io.Serializable { String number,name,discipling,grade,borth,sex;public Employee(){ } public void setNumber(String number){ this.number=number;} public String getNumber(){ return number; } public void setName(String name){ this.name=name;} public String getName(){ return name;} public void setDiscipling(String discipling){ this.discipling=discipling;} public String getDisciping(){ return discipling;} public void setGrade(String grade){ this.grade=grade;} public String getGrade(){ return grade;} public void setBorth(String borth){ this.borth=borth;} public String getBorth(){ return borth;} public void setSex(String sex){ this.sex=sex;} public String getSex(){ return sex;}} 2、主程序: import java.awt.*; import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class EmployeeManager extends JFrame implements ActionListener { EmployeeSituation 基本信息录入=null;ModifySituation 基本信息修改=null;Inquest 基本信息查询=null;Delete 基本信息删除=null;JMenuBar bar;JMenu fileMenu;JMenuItem 录入,修改,查询,删除;Container con=null;Hashtable 基本信息=null;File file=null;CardLayout card=null;JLabel label=null;JPanel pCenter;public EmployeeManager(){ 录入=new JMenuItem(“录入员工基本信息”);修改=new JMenuItem(“修改员工基本信息”);查询=new JMenuItem(“查询员工基本信息”);删除=new JMenuItem(“删除员工基本信息”);bar=new JMenuBar();fileMenu=new JMenu(“菜单选项”);fileMenu.add(录入);fileMenu.add(修改);fileMenu.add(查询);fileMenu.add(删除);bar.add(fileMenu);setJMenuBar(bar);label=new JLabel(“欢迎进入员工信息管理系统”,JLabel.CENTER);label.setFont(new Font(“SansSerif”,Font.BOLD+Font.ITALIC,25));label.setForeground(Color.red);基本信息=new Hashtable();录入.addActionListener(this);修改.addActionListener(this);查询.addActionListener(this);删除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel(); pCenter.setLayout(card);pCenter.setBackground(Color.yellow);file=new File(“基本信息.txt”);if(!file.exists()){ try { FileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); } catch(IOException e) { } } 基本信息录入=new EmployeeSituation(file);基本信息修改=new ModifySituation(file);基本信息查询=new Inquest(this,file);基本信息删除=new Delete(file);pCenter.add(“欢迎语界面”,label);pCenter.add(“录入界面”,基本信息录入);pCenter.add(“修改界面”,基本信息修改);pCenter.add(“删除界面”,基本信息删除);con.add(pCenter,BorderLayout.CENTER);con.validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});setVisible(true);setBounds(100,50,420,380);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==录入){ card.show(pCenter,“录入界面”);} else if(e.getSource()==修改) { card.show(pCenter,“修改界面”);} else if(e.getSource()==查询){ 基本信息查询.setVisible(true);} else if(e.getSource()==删除){ card.show(pCenter,“删除界面”);} } public static void main(String args[]){ new EmployeeManager();}} 3、实现员工信息的录入: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class EmployeeSituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 员工号,姓名,工资;Choice 部门;JRadioButton 男,女;Employee 员工=null;ButtonGroup group=null;JButton 录入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public EmployeeSituation(File file){ this.file=file; 员工号=new JTextField(10); 姓名=new JTextField(10); 部门=new Choice();部门.add(“请选择”);部门.add(“研发部”);部门.add(“销售部”);部门.add(“人事部”);部门.add(“安全部”);工资=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(“男”,true);女=new JRadioButton(“女”,false);group.add(男);group.add(女);录入=new JButton(“录入”);重置=new JButton(“重置”);录入.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(“员工号:”,JLabel.CENTER));box1.add(员工号);Box box2=Box.createHorizontalBox();box2.add(new JLabel(“姓名:”,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(“性别:”,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(“部门:”,JLabel.CENTER));box4.add(部门);Box box6=Box.createHorizontalBox();box6.add(new JLabel(“ ”,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(“工资:”,JLabel.CENTER));box5.add(工资);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH); pCenter.setBackground(Color.yellow); setLayout(new BorderLayout()); add(pCenter,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(录入); pSouth.add(重置); pSouth.setBackground(Color.yellow); add(pSouth,BorderLayout.SOUTH); validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==录入){ String number=“";number=员工号.getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String warning=”该员工基本信息已存在,请到修改页面修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);} else { String m=”基本信息将被录入!“;int ok=JOptionPane.showConfirmDialog(this,m,”确认“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText(); String discipling=部门.getSelectedItem();String grade=工资.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} 员工=new Employee();员工.setNumber(number);员工.setName(name);员工.setDiscipling(discipling);员工.setGrade(grade);员工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,员工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close(); 员工号.setText(null); 姓名.setText(null); 工资.setText(null);} catch(Exception ee){ System.out.println(ee);}}}} else { String warning=”必须要输入员工号!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} if(e.getSource()==重置) { 员工号.setText(null); 姓名.setText(null); 部门.remove(部门.getSelectedIndex()); 工资.setText(null);}}} 4、实现员工信息的修改: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ModifySituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 员工号,姓名,工资;Choice 部门;JRadioButton 男,女;ButtonGroup group=null;JButton 开始修改,录入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public ModifySituation(File file) { this.file=file;员工号=new JTextField(10);姓名=new JTextField(10);部门=new Choice();部门.add(”请选择“);部门.add(”研发部“);部门.add(”销售部“);部门.add(”人事部“);部门.add(”安全部“);工资=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(”男“,true);女=new JRadioButton(”女“,false);group.add(男);group.add(女);开始修改=new JButton(”开始修改“);录入修改=new JButton(”录入修改“);录入修改.setEnabled(false);重置=new JButton(”重置“);员工号.addActionListener(this);开始修改.addActionListener(this);录入修改.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”输入要修改信息的员工号:“,JLabel.CENTER));box1.add(员工号);box1.add(开始修改);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性别:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部门:“,JLabel.CENTER));box4.add(部门);Box box6=Box.createHorizontalBox();box6.add(new JLabel(” “,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工资:“,JLabel.CENTER));box5.add(工资);Box boxH=Box.createVerticalBox(); boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(录入修改);pSouth.add(重置);pSouth.setBackground(Color.yellow);add(pSouth,BorderLayout.SOUTH);validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==开始修改||e.getSource()==员工号) { String number=”“; number=员工号.getText(); if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ 录入修改.setEnabled(true);Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部门.getSelectedItem();工资.setText(stu.getGrade()); if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} } else { 录入修改.setEnabled(false);String warning=”该员工号不存在!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE);员工号.setText(null);姓名.setText(null);部门.remove(部门.getSelectedItem());工资.setText(null); } } else { 录入修改.setEnabled(false);String warning=”必须要输入员工号!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);员工号.setText(null);姓名.setText(null);部门.remove(部门.getSelectedItem());工资.setText(null);} } else if(e.getSource()==录入修改) { String number=”“; number=员工号.getText(); if(number.length()>0) { try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close(); inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String question=”该员工基本信息已存在,您想修改他(她)的基本信息吗?“;JOptionPane.showMessageDialog(this,question,”警告“,JOptionPane.QUESTION_MESSAGE);String m=”基本信息将被修改!“;int ok=JOptionPane.showConfirmDialog(this,m,”确认“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();String discipling=部门.getSelectedItem();String grade=工资.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} Employee 员工=new Employee(); 员工.setNumber(number); 员工.setName(name); 员工.setDiscipling(discipling); 员工.setGrade(grade); 员工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,员工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close(); 员工号.setText(null);姓名.setText(null);部门.remove(部门.getSelectedItem());工资.setText(null);} catch(Exception ee){ System.out.println(ee);} 录入修改.setEnabled(false);} else if(ok==JOptionPane.NO_OPTION){ 录入修改.setEnabled(true);} } else { String warning=”该员工号没有基本信息,不能修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);录入修改.setEnabled(false); } } else { String warning=”必须要输入员工号!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE); 录入修改.setEnabled(false); } } if(e.getSource()==重置) { 员工号.setText(null); 姓名.setText(null); 部门.remove(部门.getSelectedItem()); 工资.setText(null);}}} 5、实现员工信息的查询: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener { Hashtable 基本信息表=null;JTextField 员工号,姓名,部门,工资;JRadioButton 男,女;JButton 查询;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public Inquest(JFrame f,File file){ super(f,”查询对话框“,false); this.file=file; 员工号=new JTextField(10); 查询=new JButton(”查询“); 员工号.addActionListener(this); 查询.addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);部门=new JTextField(10);部门.setEditable(false);工资=new JTextField(10);工资.setEditable(false);男=new JRadioButton(”男“,false);女=new JRadioButton(”女“,false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”输入要查询的员工号:“,JLabel.CENTER));box1.add(员工号);box1.add(查询);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性别:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部门:“,JLabel.CENTER));box4.add(部门);Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工资:“,JLabel.CENTER));box5.add(工资);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.green);Container con=getContentPane();con.add(pCenter,BorderLayout.CENTER);con.validate();setVisible(false);setBounds(100,200,360,270); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ setVisible(false);} });} public void actionPerformed(ActionEvent e){ 姓名.setText(null);部门.setText(null);工资.setText(null);if(e.getSource()==查询||e.getSource()==员工号){ String number=”“;number=员工号.getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部门.setText(stu.getDisciping());工资.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} } else { String warning=”该员工号不存在!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} else { String warning=”必须要输入员工号!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}}}} 6、实现员工信息的删除: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Delete extends JPanel implements ActionListener { Hashtable 基本信息表=null; JTextField 员工号,姓名,部门,工资; JRadioButton 男,女; JButton 删除; ButtonGroup group=null; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File file=null; public Delete(File file) { this.file=file; 员工号=new JTextField(10); 删除=new JButton(”删除“); 员工号.addActionListener(this); 删除.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false); 部门=new JTextField(10); 部门.setEditable(false); 工资=new JTextField(10); 工资.setEditable(false); 男=new JRadioButton(”男“,false); 女=new JRadioButton(”女“,false); group=new ButtonGroup(); group.add(男); group.add(女); Box box1=Box.createHorizontalBox(); box1.add(new JLabel(”输入要删除的学号:“,JLabel.CENTER)); box1.add(员工号); box1.add(删除); Box box2=Box.createHorizontalBox(); box2.add(new JLabel(”姓名:“,JLabel.CENTER)); box2.add(姓名); Box box3=Box.createHorizontalBox(); box3.add(new JLabel(”性别:“,JLabel.CENTER)); box3.add(男); box3.add(女); Box box4=Box.createHorizontalBox(); box4.add(new JLabel(”部门:“,JLabel.CENTER)); box4.add(部门); Box box6=Box.createHorizontalBox(); box6.add(new JLabel(” “,JLabel.CENTER)); Box box5=Box.createHorizontalBox(); box5.add(new JLabel(”工资:“,JLabel.CENTER)); box5.add(工资); Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box5); boxH.add(box6); boxH.add(box4); boxH.add(Box.createVerticalGlue()); JPanel pCenter=new JPanel(); pCenter.add(boxH); pCenter.setBackground(Color.yellow); setLayout(new BorderLayout()); add(pCenter,BorderLayout.CENTER); validate(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==删除||e.getSource()==员工号) { String number=”“; number=员工号.getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number); 姓名.setText(stu.getName()); 部门.setText(stu.getDisciping()); 工资.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} String m=”确定要删除该员工号及全部信息吗?“;int ok=JOptionPane.showConfirmDialog(this,m,”确认 “,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ 基本信息表.remove(number);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();员工号.setText(null);姓名.setText(null);部门.setText(null);工资.setText(null);} catch(Exception ee){ System.out.println(ee);} } else if(ok==JOptionPane.NO_OPTION){ 员工号.setText(null);姓名.setText(null);部门.setText(null); 工资.setText(null);} } else { String warning=”该员工号不存在!“;JOptionPane.showMessageDialog(this,warning,”警告 “,JOptionPane.WARNING_MESSAGE);} } else { String warning=”必须要输入员工号!“;JOptionPane.showMessageDialog(this,warning,”警告",JOptionPane.WARNING_MESSAGE);}}}} 三、实验结果体会 本次JAVA课程设计我所编写的程序是员工信息管理系统,程序中实现了对员工信息的添加、查询、修改、删除的功能,我是应用文件的形式完成的,其中还应用到了图形用户界面。我设计的程序简单易懂,操作简单,且 适用于不同的单位使用,只需按照自己的需要将所要录入的信息名称做添加或修改就可以实现。通过这次JAVA的程序设计,使我对JAVA有了更加深入的了解,巩固了我对JAVA基础知识的掌握。 ******11111111111111 目 录 摘 要………………………………………………………………………5 前 言………………………………………………………………………6 第一章 为什么要开发一个学生档案管理系统……………………………7 1.1 在教育中用计算机管理学生档案的意义.………………………7 1.2为将来学校上网做好准备……………………..…………………7 1.3 学生档案的设计分析……………………………………………7 第二章 编程环境的选择.…………………………………………………9 2.1开发工具的介绍.…………………………………………………9 2.3关系型数据库……………………………………………………11 2.4 数据库的概念……………………………………………………12 2.5新建一个数据库.…………………………………………………12 第三章 需求分析………….………………………………………………14 3.1 可行性研究………………………………………………………14 3.2 需求分析…………………………………………………………15 第四章 系统总体规划..……………………………………………………17 4.1软件模块结构设计………………………………………………17 4.2数据库设计...……………………………………………………18 第五章 系统具体实………………………………………………………19 5.1 主界面………………………………………………………………19 5.2数据库的实现…………………………………………………………21 5.3 ACCESS与VB的连接………………………………………………22 第六章 测试 …………………………………………………………………24 6.1程序运行界面 如下图………………………………………………24 6.2输入用户名和密码界面………………………………………………26 ******11111111111111 6.3系统所具备的功能显示界面…………………………………………26 6.4系统管理功能…………………………………………………………27 6.5班级系统………………………………………………………………30 6.6 档案管理……………………………..………………………………32 6.7课程管理………………………………………………………………33 6.8成绩管理………………………………………………………………34 结束语…………………………………………………………………………36 致 谢……………………………………………………………………….37 参考文献………………………………………………………………………38 摘 要 学生档案管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。 关键字:控件、窗体、域。 摘要:随着中国教育事业的迅速发展,学生的数量日益增加,学生的信息管理也变得日益繁重和复杂。如果想要提高学生信息管理的效率和质量,以适应教育事业的发展,我们就必须对学校内部进行改革和加强学校管理。借助现代信息技术的管理方法,建立学生信息管理系统势在必行。本文通过对一个学生信息管理系统的开发实例,对基于Visual Basic 6.0和SQL 2000的学生信息管理系统进行了分析和研究。 文章首先分析了管理信息系统的概念和特点,介绍了开发工具Visual Basic 6.0和SQL ******11111111111111 2000,然后对学生信息管理信息系统进行了需求分析、概要设计和详细设计,在概要设计中进行了数据库的设计,在详细设计中讨论了系统的实现方法和编码。之后对系统测试进行了分析和讨论,功能模块的测试中把登录服务器模块的测试和其他功能模块的测试分开进行,介绍了一种实用的测试方法。最后是介绍系统的总体测试和系统发布。本文所论述的学生信息管理系统对实现初中、高中和大中专院校的学生信息管理的现代化、科学化具有重要意义。 关键词:学生信息管理系统;Visual Basic 6.0;SQL 2000 ;C/S模式 Information Management system of student Based on C/S model Abstrac: With the quick development of Chinese education, the student’s quantity increasingly increaseses, the student’s status management also becomes increasingly heavy and complicated.If want to improve the efficiency and quality of the student’s status management and adapt the development of the education business, we must to reform the inner school and enhance the school management.So ask for the management method of the modern information technique and eatablish the student’s status management system is imperative.This text analysis and study the student’s status management information system which based on Visual Basic 6.0 and SQL 2000 across an example of student’s status management imformation system.Firstly, the article analyzed the management information system’s concept and characteristics and introduced the development tools Visual Basic 6.0 and SQL 2000.Then it carried through the need analysis, general design and detailed design for the student’s student status information system.It designed the database in the general design and discussed the realize methord and coding of the system in the detailed design.Then it analysised and dicussed to the system test.It classified the test of registering server mold and the test of other founction mold in the function mold test and introduced a practical test method.Finally it introduced the total test and release of the system.The student’s student status management this text discussing have important meaning to realize the student’s student status manage of junior and senior high school.Keywords: Students status management system;Visual Basic 6.0;SQL 2000;C/S model 目 录 前言 1 1 系统开发环境及其工具介绍 2 ******11111111111111 1.1 系统简介 2 1.1.1 管理信息系统的概述 2 1.1.4 学生学籍管理信息系统概述 2 1.2 系统开发工具及开发环境概述 3 1.2.1 Visual Basic 6.0 的介绍 3 1.2.2 ADO数据访问技术 3 1.2.3 Microsoft SQL Server简介 8 需求分析 11 2.1 系统需求 11 2.1.1 编写目的 11 2.1.2 背景及范围 11 2.2 任务概要 11 2.2.1 目标 11 2.2.2 运行环境 11 2.2.3 条件与限制 11 3 系统总体分析与设计 12 3.1 系统分析 12 3.1.1 系统功能的分析 12 3.1.2 系统功能模块设计 12 3.2 数据库设计 13 3.2.1 数据库需求分析 13 3.2.2 数据库概念结构设计 13 3.2.3 数据库逻辑结构设计 15 详细设计 18 4.1 学生管理系统主窗体的创建 18 4.1.1 创建工程项目——Student_MIS 18 4.1.2 创建学生信息管理系统的主窗体 18 4.1.3 创建主窗体的菜单 20 4.1.4 创建公用模块 20 4.2 系统用户管理模块的创建 21 4.2.1 用户登录窗体的创建 21 4.2.2 添加用户窗体的创建 23 4.2.3 修改用户密码窗体的创建 24 4.3 学籍管理模块的创建 25 ******11111111111111 4.3.1 添加学籍信息窗体的创建 25 4.3.2 修改学籍信息窗体的创建 27 4.3.3 查询学籍信息窗体的创建 29 4.4 班级管理模块的创建 30 4.4.1 添加班级信息窗体的创建 30 4.4.2 修改班级信息窗体的创建 32 4.5 课程设置模块的创建 32 4.5.1 添加课程信息窗体的创建 32 4.5.2 修改课程信息窗体的创建 33 4.5.3 设置年级课程窗体的创建 34 4.6 成绩管理模块的创建 35 4.6.1 添加成绩信息窗体的创建 36 4.6.2 修改成绩信息窗体的创建 37 4.6.3 查询成绩信息窗体的创建 37 运行与测试 39 5.1 登录服务器模块测试 39 5.2 其他模块的测试 39 5.3 帮助文档的设计 39 5.4 系统测试和打包发行 40 结束语 41 参考文献 42 致谢 43 附录 44 前言 管理信息系统就是我们常说的MIS(Management Information System),在强调管理,强调信息的现代社会中它变得越来越普及。MIS是一门新的学科,它跨越了若干个领域,比如管理科学、系统科学,运筹学、统计学以及计算机科学。[1]在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。 管理信息系统起初应用于最基础的工作,如打印报表、计算工资、人事管理等,进而发展到企业财务管理、库存管理等单项业务管理,这属于电子数据处理(EDP,Electronic Data Processing)系统。当建立了企业数据库,有了计算机网络从而达到数据共享后,从系统观点出发,实施全局规划和设计信息系统时,就达到管理信息系统的阶段。随着计算机技术的进步和人们对系统的需求进一步提高,人们更加强调管理信息系统能否支持企业高层 ******11111111111111 领导的决策这一功能,更侧重于企业外部信息的收集、综合数据库、模型库、方法库和其他人工智能工具能否直接面向决策者,这是决策支持系统(DSS,Decision Support System)的任务。 我国20世纪70年代末有少数企业开始MIS的局部应用。“六五”期间,选择一些大型企业进行MIS的开发试点,其中首都钢铁公司、北京第一棉纺厂、湖北第二汽车制造厂、宁江机床厂等取得了经验。20世纪80年代中后期,在全国性的计算机应用热潮中,许多企业纷纷从财务管理、人事管理等单项应用入手,尝试建立MIS。许多企业,如北京内燃机厂、北京电视机厂、沈阳鼓风机厂、天津渤海无线电厂的MIS初具规模,建立了覆盖全厂的计算机网络。“八五”期间,企业逐步走向市场,MIS建设的目标和需求日益明确。一些企业的系统,如北京第一机床厂、山西经纬纺织机械厂、成都飞机制造公司等都达到了很高的水平,与企业中其他系统集成,形成了CIMS。目前,我国MIS已经有了相当的普及率,几乎覆盖了各个行业及各个部门。 在学校,尤其是在各大高校,对于学生的管理是相当重要,而且也是相当麻烦的,它是学校管理中最基本的一项常规性工作。而长期以来,学校管理都是依赖人工来进行的,面对如此众多的学生信息,其工作量是相当相当巨大的。这样不仅仅浪费了大量的人力物力,而且由于人工管理存在着大量的不可预知性,造成学生信息管理的一些不规范,使得信息 管理陷入“事倍功半”的地步。 开发本系统就是为了解决学校在管理中的一些不规范,使学生信息的管理向着规范化、简 单化、有效化的方向发展。[2] 根据学生信息管理系统的基本流程和高校学生信息管理的实际要求,本系统需要实现以下 功能: (1)学生基本信息的录入,基本信息包括学生的基本情况、所在班级、所学课程和成绩等; (2)要求在系统中能够对学生信息精心灵活的浏览和查询;(3)要求在系统中能够对班级信息进行输入、查询和修改等;(4)要求能够对学校基本课程信息录入、修改和设置等;(5)要求能够对学生成绩信息进行输入、修改和查询等;(6)本系统可以提供给管理员或者学生本人使用。对学生类用 ******11111111111111 6.3系统所具备的功能显示界面 如图 ******11111111111111 6.4系统管理功能 如图 ******11111111111111 6.5班级系统 . 6.5.1 班级添加 ******11111111111111 6.6 档案管理 ******11111111111111 6.6.1 档案添加 6.6.2 档案查询 ******11111111111111 6.7课程管理 6.7.1课程设置 ******11111111111111 6.7.2 课程添加 ******11111111111111 四、设计结果分析 (1)系统所具备的功能显示界面 ******11111111111111 ******11111111111111 ******11111111111111(2)结果分析 1、第一步能很好的运行,初始密码就是用户名,只有密码正确才会进入系统。 2、点击在用户界面可以加入新的用户和删除以前的用户,也可以对密码进行修改。 3、在班级管理系统中各个功能都可以实现,可以显示当前系统中所有的班级信息。 4、课程设计一栏中可以添加系统中已经存储的课程和手动的输入课程,可以对课程的信息进行相应的操作。 5、成绩管理功能可以正常的运行,每一个功能都是单独的实现,不会产生混淆。 6、学籍管理是比较难的一部分,在运行了几次才让各个功能更能很好的实现,能够很好的将学生的信息存到数据库中。而且可以对其中的数据镜像相应的操作 ******11111111111111 五、个人小结 虽然Vb课结束了,但是自己感觉好像没有学到太多的东西,可能是上机的时间比较少吧,还有就是对待这么课的心态不同和老师要求的不严的缘故。 通过写完这个学生管理系统,感到收获很多,不动手就不知道自己的在哪里不懂,在这次作业的完成中遇到了许多自己无法调试的错误,只能请教已经学过了的同学,感觉到自己的知识的缺乏。虽然最后自己把所有的功能都按照预期的编好了,也可以很好的运行,但是其中也有许多的不足,对图像的不理解和不会很好的使用是自己的程序让人感到很呆板,这是需要改进的一大部分。 跟着老师学习了一个学期,自己感觉到学会一些简单的程序编写,至少认识了vb的作用性,这次的大作业,我只能把每一功能当做一个小的程序来编写,不会很好的联系所用的功能,在编写较长的运算时,不能够写好,只能对着书本一个的一个算法尝试,不能脱离课本,有时看着课本也不知道怎么写。 当自己写到难的时候,有点想放弃,感觉太难了,就把自己的程序给别人修改,加工。对其中的控件和文件的概念不是很熟 ******11111111111111 悉,还有就是数据库,以前没有接触,虽然老师在最后一节课的时候是一步一步的在课堂上讲解的,但是自己操作时,有时不知道在哪个地方编辑。 编完这个程序最大的收获就是将自己不同的和学到的知识重新的联系起来了,又重新的复习了所学的内容,对不同的算法有了新的了解。常用控件和系统对象有了初步的认识,学会利用数据库来存储信息,对上课不知道的多文档界面,在试着编写的过程中有了较大的认识。 总的来说,这一个学期并没有浪费,可以在别人的帮助下做完这个学生管理系统,感到有种成就感,虽然不是很完美,至少自己能够让这个系统完整的运行,其中不足之处,就只好留在自第三篇:嵌入式课程设计 学生信息管理系统
第四篇:JAVA课程设计员工信息管理系统
第五篇:VB课程设计--学生信息管理系统