C程序设计实验+工资管理系统
《C/C++程序设计实验》综合设计说明书
评阅教师签名: 年 月 日
一、设计目的:
学校工资管理系统, 为教师提供工资查询服务, 为学校提供工
资管理, 工资统计等服务。
二、设计任务和要求:
每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本
工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。设计一个程序对相关信息进行管理。
教师信息处理
(1) 输入教师信息
(2) 插入(修改)教师信息: (3) 删除教师信息: (4) 浏览教师信息: 教师数据处理:
(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。
(2) 教师实发工资、应发工资、合计扣款计算。 提示:计算规则如题目。 (3) 教师数据管理
提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件 (4) 教师数据查询:
提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 (5) 教师综合信息输出
提示:输出教师信息到屏幕。
三、系统框图和原理分析:
(1)输入教师信息模块 在主菜单中运用结构体teacher ,输入教师信息,首先建立链表,将用户输 教 师 工资管理系统 1——输入教师信息 2——插入教师信息 3——修改教师信息 4——删除教师信息 5——浏览教师信息 6——系统信息 7——退出系统 主界面 选择操作 结 束
输入的教师信息存储到链表中,输入完成后提示用户时候继续输入,如果用户输入“Y ”或“y ”,则再次调用,实现继续输入教师信息的操作。如果用户输入“N ”或“n ”,则返回主菜单界面。 (2)插入教师信息模块 在主菜单中调用teacher *insert(),然后按照提示依次输入教师信息,然后再调用void print ()函数讲所有的教师信息记录打印出来。然后再返回主菜单界面。 (3)修改教师信息模块 在主菜单中调用void edit()函数。按教师号查找教师信息,如果找到教师 信息,调用void
edit()函数提示用户输入新的教师信息,完成修改的操作。操作结束后提示用户修改成功。然后返回主菜单界面。 (4)删除教师信息模块 在主菜单中调用del()函数,以删除教师信息,首先按教师编号查询教师信息, 如果没有找到教师信息,给出提示信息。如果查找到该教师信息,给出改教师的全部信息,如果查找到,则删除该教师信息,给出删除成功的提示信息。然后返回主菜单界面。 (5)浏览教师信息模块 在主菜单中调用void print()函数来显示教师信息,先判断链表是否为空。 如果链表不为空时,逐条显示链表中教师的信息,显示调用teacher *next()函数按照教师号的大小来显示教师的信息。然后返回主菜单界面。 (6)系统信息模块 在主菜单中输入6,可知系统信息、版本。 (7)退出系统模块 将链表中的数据全部释放掉,防止内存泄露。退出系统。
四、程序流程图
五、关键代码分析
(1) 保存数据函数save() 函数原型:void save() 功能描述:将链表teacher 中的N 个数据写入到磁盘文件
teacher_list中,如果保存成功,则给出提示保存成功,否则返回“cannot ofen file ”表示无法打开文件,返回“file write error ”表示文件输入错误。 (2)浏览教师信息函数query()
函数原型:void query(struct teacher *p)
功能描述:将链表teacher 中的head 指向p ,然后让用户输入教师号no, 依次在链表中需找p ,如果教师号不对,则指针往后面拨动一下,使p=p->next;知道找到相对应的正确的教师号。然后打印出教师的基本信息。
(3) 修改教师信息函数edit()
函数原型:void edit(struct teacher *p)
功能描述:首先让用户输入希望修改的教师的教师号a , 然后在链表中一条一条查找看p->num是否等于a ,如果找到,则让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界面。如果没有找到,则令p=p->next。直到查询完所有的教师记录。 六、设计总结
持续一个学期的课程设计给了我太多的感触,开始从题目上
看,感觉题目很大,设计量很大,也很复杂,感觉不是简单的就能解决的。这样只用重新拾起书继续来看,获得新的知识和巩固以前的C 方面的知识。提升自己的能力。
通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C 语言程 序设计,从中得到了很多乐趣,很快乐,感觉C 语
言的世界里面奇妙无比。虽然在途中也遇到很多的苦难,但是还是通过问同学和学长解决了。最后看到自己设计的程序能够运行起来特别的开心。 这次的程序设计很有意义,也很锻炼人的能力,特别是C 语言方面的能力, 为自己在C++语言方面打下基础
附录 参考文献
1. 黄梯云 , 管理信息系统(修订版),北京:高等教育出版社, 2000
2. 薛华成 , 管理信息系统 ( 第三版) , 北京:清华大学出版社, 1999
3. 陈晓红 , 管理信息系统教程,北京:清华大学出版社, 2003 4. 陈国青等 , 信息系统的组织 管理 建模,北京:清华大学出版社, 2002
5. 高阳 , 计算机网络原理与实用技术 , 长沙:中南工业大学出版社, 1998
6. 左美云等 , 信息系统的开发与管理教程 , 北京:清华大学出版社, 2001 附录1 ---源程序
#include #include #include #include #include using namespace std; int i; class Person { public: void display()
{ cout > name; cout > num; while(num>num; } } string name;//名字 int num; };//工号 class Teacher: public Person//教师 { public: Teacher() { int s=1000; wage = s; butie1=0; } void display1(); int wage;//基本工资 int time; int butie1; int jintie1; };//课时 void Teacher::display1() { cout
请
输入教
师
的
课时
(
小
时): "; cin >> time; while(time
请
重
新
输
入
课
时
大
于
的
数:">time; } }
};//补贴 Teacher t[100];
Leader x[100]; Jianzhi j[100]; void show() { cout
请输入你要录入的对象
::
教领
:师导
"
"
cout
:
教
师
兼
职
领
导
"
师.txt", ios::app); if (!outfile) {
cerr
cout > b;
for (i = 0; i
是
否
保
存
信
息教
(y(Y)/n(N))">c; if(c=='Y'||c=='y') {
outfile
} 15
}
outfile.close(); }
void wenjianluru()//文件录入 {
int c;
for (i = 0;; i++)
{
show(); cin >> c;
if (c == 4)
{
cout
"
break; } else
switch (c)
{
case 1:
jiaoshiluru();
break;
case 2:
Leaderluru();
break;
case 3:
jianzhiluru();
break; defau
lt:
{
cout
"
break;
} } }
void jiaoshishuchu()//教师输出显示 {
ifstream infile("教师.txt", ios::in);
int m;
for (i = 0; i > t[i].num >> t[i].name >> t[i].wage >> t[i].time;
if (t[i].num == 0) break; int jintie1; jintie1=t[i].time*30; m = t[i].wage + jintie1; cout
t[i].name
')
endl; } infile.close(); } void
leadershuchu()//领导输出 { ifstream infile("领导.txt",
ios::in); int m; for (i = 0; i
{ x[i].num =0; infile >> x[i].num >>
x[i].name >> x[i].wage >> x[i].butie; if (x[i].num ==
0) break; m = x[i].wage + x[i].butie; cout
')
')
')
m
出显示 { cout
void show3() { cout
cout
出查询"
jiaoshichaxun() { ifstream infile("教师.txt", ios::in);
string nam; int num; int m, n,x; cout
按教师的姓名查找\n\t\t2.按教师的工号查找";
cout>x; switch(x) { case
1:{cout>nam; for (i = 0, n = 0; i > t[i].num >>
t[i].name >> t[i].wage >> t[i].time; if (t[i].num ==
0) break; if (t[i].name==nam)
{ n++; m = t[i].wage + (t[i].time -
24) * 30; cout
"
要查询的教师。"
2: { cout
cin>>num; for (i = 0, n = 0; i
{ infile >> t[i].num >> t[i].name >> t[i].wage >>
t[i].time; if (t[i].num == 0) break; if (t[i].num==num) { n++; m =
t[i].wage + (t[i].time - 24) * 30; cout
"
(n ==0) cout
infile.close(); }break; default:{cout
误!"
{ int c; for (i = 0;; i++) { show3(); cin >> c; if (c == 4) { cout
出查询成功。"
{ case 1: jiaoshichaxun(); break; case 2: leaderxhaxun(); break; case 3: jianzhichaxun(); break; default: { cout
次输入错误。"
请输入你要修改的对象:"
改"
cout
个操作:"; } void jiaoshixiugai()//教师修改 { ifstream
infile("教师.txt", ios::in); string nam; int n, n1,
m1 = 0; cout >
nam; cout > n;
for (i = 0; i > t[i].num >>
t[i].name >> t[i].wage >> t[i].time; if (t[i].num ==
0) break; m1++; if (t[i].name
==nam) { n1 = t[i].time; t[i].time =
n; n = n1; } } infile.close(); ofstream outfile("教师.txt", ios::out); for (i = 0; i
m1; i++) { outfile
改 { int c; for (i = 0;; i++) { show5(); cin >> c; if (c == 3) { cout
退出修改成功。"
{ case 1: jiaoshixiugai(); break; case 2: janzhi2xiugai(); break; default: { cout
endl; } break; } } } void show6() { cout
请选择如下操作:"
cout
职领导删除"
cout
师删除 { ifstream infile("教师.txt", ios::in);
string nam; int num; int n,x; cout
师的姓名删除\n\t\t2.按教师的工号删除"; cout
选择"; cin>>x; switch(x) { case 1:{cout
入要删除的教师的姓名:";cin>>nam; for (i = 0, n = 0; i
> t[i].num >> t[i].name >>
t[i].wage >> t[i].time; if (t[i].num == 0) break; if (t[i].name==nam) { n++;
t[i].num=0;break; } } if (n ==0)
cout
除成功!"
{ cout>num;
for (i = 0, n = 0; i > t[i].num >>
t[i].name >> t[i].wage >> t[i].time; if (t[i].num ==
0) break; if (t[i].num==num)
{ n++; t[i].num=0;break; } } if (n ==0) cout
cout
default:{cout
for (i = 0; i
t[i].wage
endl; } outfile.close(); } void show_sort()
{ cout
1:教师排序"
序"
教师排序 { ifstream infile("教师.txt", ios::in);
int m[100]; for (i = 0; i >
t[i].num >> t[i].name >> t[i].wage >> t[i].time; if
(t[i].num == 0) break; m[i] = t[i].wage
+ t[i].time * 30; } infile.close(); int count
= i; Teacher teacher; int tmp; for (int x = 0;
x
{ if (m[x]
t[x]; t[x] = t[y]; t[y] =
teacher; tmp = m[x]; m[x]
= m[y]; m[y] = tmp; } } cout
(i = 0; i
')
{ int c; for (i = 0;; i++) { show_sort(); cin >> c; if (c == 3) { cout
排序成功。"
{ case 1: jiaoshi_sort(); break; case 2: jianzhi_sort(); break; default:
{ cout
endl; } Break}}} void show7()
{ cout
cout
\t\t\t\t2:职工信息输出显示"
职工信息修改"
除"
操作: "; } int main() { int c; for (i = 0;; i++)
{ show7(); cin >> c; if (c == 7)
{ cout
{ case 1: wenjianluru();
break; case 2: shuchu(); break; case 3:xiugai();break; case
4:del(); break; case 5: wenjianchaxun()break; case 6:sort();break; default:
{ cout
endl; } break; } } return 0; }