码龄9年
关注
int menu(){
printf("请按提示输入完成 *** 作!\n")
printf("1.查询员工信息\n")
printf("2.统计员工数量\n")
printf("3.录入员工信息\n")
printf("4.删除员工信息\n")
printf("5.按id排序所有员工\n")
printf("6.打印所有员工信息\n")
printf("7.退出系统\n")
return 0
}
如menu()函数所示,该系统一共有7个功能
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct emp{
int id
char name[50]
struct emp * next
// struct emp * prev
}
struct emp * initList()
struct emp * addListTailNode(struct emp * head)
struct emp * deleteListNode(struct emp * head,int id)
struct emp * searchEmp(struct emp * head,int id)
int printList(struct emp * l)
int printNode(struct emp * p)
struct emp * sortList(struct emp * head)
int getListLen(struct emp * head)
int writeToDisk(struct emp * head)
struct emp * readFromDisk()
int menu()
int usage(struct emp * head)
#include "emp.h"
int main(){
struct emp * head
head=readFromDisk()
usage(head)
return 0
}
struct emp * initList(){
struct emp * head
head=(struct emp *)malloc(sizeof(struct emp))
head->next=NULL
return head
}
struct emp * addListTailNode(struct emp * head){
int id
char name[50]
struct emp * p, * last , * check
last = head
while(last->next!=NULL){
last=last->next
}
printf("依次输入:员工id号,姓名!\n")
scanf("%d%s",&id,&name)
check = head
while(check!=last){ //遍历
check=check->next
if(id==check->id){
printf("添加失败!员工id号重复!\n")
return head
}
}
p=(struct emp *)malloc(sizeof(struct emp))
p->id=id
strcpy(p->name,name)
//
last->next=p
last=p
p->next=NULL
printf("%s员工信息已添加!\n",p->name)
return head
}
struct emp * deleteListNode(struct emp * head,int id){
struct emp * p,* q
p = head->next
while(p!=NULL){
if(p->next->id==id){
break
}
p=p->next
}
if(head->next==NULL){
printf("书籍信息为空!删除失败!\n")
}
else{
q = p->next
p->next = q->next
printf("%s书籍信息被删除!\n",q->name)
free(q)
}
return head
}
struct emp * searchEmp(struct emp * head,int id){//查询,返回节点信息
struct emp * p
p = head->next
while(p!=NULL){
if(p->id==id){
break
}
p=p->next
}
return p
}
int printNode(struct emp * p){//打印节点信息
if(p!=NULL){
printf("员工id: %d员工姓名:%s\n",p->id,p->name)
}
else{
printf("系统内无该员工信息!\n")
}
return 0
}
int printList(struct emp * head){ //打印整条链表
struct emp * p
p = head->next
while(p!=NULL){
printNode(p)
p=p->next
}
return 0
}
struct emp * sortList(struct emp * head){//排序
struct emp * p,* q
int temp_id
char temp_name[50]
for(p=head->nextp!=NULLp=p->next){
for(q=p->nextq!=NULLq=q->next){
if(p->id>q->id){
temp_id = q->id
q->id = p->id
p->id = temp_id
//
strcpy(temp_name,q->name)
strcpy(q->name,p->name)
strcpy(p->name,temp_name)
}
}
}
return head
}
int getListLen(struct emp * head){
int len=0
struct emp * p
p=head->next
while(p!=NULL){
len++
p=p->next
}
return len
}
int writeToDisk(struct emp * head){
FILE * fp
struct emp * p
if((fp = fopen("D:\\emp.hhtx", "w")) == 0){
printf("写入失败……!\n")
return 0
}
//
p=head->next
while(p!=NULL){
fwrite(p,sizeof(struct emp),1,fp)
printf("%d %s\n",p->id,p->name)
p=p->next
}
fclose(fp)
return 0
}
struct emp * readFromDisk(){
FILE * fp
struct emp * head,* last,* p,* temp
head = initList()
if((fp = fopen("D:\\emp.hhtx", "r")) == 0){
printf("加载失败……未找到存档数据!\n\n")
return head
}
//
last = head
p=(struct emp *)malloc(sizeof(struct emp))
while(p!=NULL){
p=(struct emp *)malloc(sizeof(struct emp))
fread(p,sizeof(struct emp),1,fp)
printf("读取数据: %d %s\n",p->id,p->name)
//
last->next=p
last=p
p=p->next
}
fclose(fp)
printf("系统数据初始化完成!")
return head
}
int menu(){
printf("请按提示输入完成 *** 作!\n")
printf("1.查询员工信息\n")
printf("2.统计员工数量\n")
printf("3.录入员工信息\n")
printf("4.删除员工信息\n")
printf("5.按id排序所有员工\n")
printf("6.打印所有员工信息\n")
printf("7.退出系统\n")
return 0
}
int usage(struct emp * head){
int x,id
struct emp * p
menu()
while(1){
printf("请输入序列号:")
scanf("%d",&x)
switch(x){
case 1:
printf("输入所要查询的员工的id号:")
scanf("%d",&id)
p = searchEmp(head,id)
printNode(p)
printf("---------------------------------\n")
break
case 2:
printf("系统中一共存在%d个员工\n",getListLen(head))
break
case 3:
head=addListTailNode(head)
printf("---------------------------------\n")
break
case 4:
printf("输入所要删除的员工的id号:")
scanf("%d",&id)
head=deleteListNode(head,id)
printf("---------------------------------\n")
break
case 5:
printf("排序开始……\n")
head=sortList(head)
printf("排序已完成!\n")
printf("---------------------------------\n")
break
case 6:
printList(head)
printf("------
一.要求:(1)上机时间:每天上午8:00~11:30。下午2:00~4:30上课时间,严禁迟到、早退及旷课,严禁做与课程设计无关的事情,情节严重者取消课程设计成绩。
(2)保质保量完成课程设计要求的所有内容。
(3)将所需上交的电子文档存放在以学号和姓名命名的文件夹中。
(4)杜绝抄袭。如若发现有抄袭现象,抄袭者和被抄袭者的课程设计成绩全部取消。
二.课程设计结束应提交的文档:
1、系统分析报告,内容有:
(1)数据流图(DFD)(可选项,仅要求学有余力的学生完成)
(2)数据词典(DD) (可选项,仅要求学有余力的学生完成)
2、系统设计报告,内容有:
(1)软件设计说明书(SDS)
(2)模块结构图(SC)和模块说明
(3)数据结构说明(包括输入、输出、数据库等)
(4)用户界面
3、编程报告,内容有:
(1)能实际运行的源程序
(2)程序说明和变量说明
4、附加源代码,内容有:
(1)数据库创建的SQL脚本文件
(2)应用系统的关键源代码
三.课程设计进度安排:
课程设计内容
学时
地点
备注
应用系统设计培训
2天
软件实验室
周六、周日
查阅资料,分析与设计数据库
1天
图书馆、软件实验室
周一
编写程序,进行调试
2天
软件实验室
周二、三
完成模块联调,进行测试
1天
软件实验室
周四
成果验收,完成设计报告
1天
软件实验室
周五
四.打印文档规范:
1.统一用A4纸打印。
2.统一打印封面。
3.正文字体:五号。
4.页面设置:上边距:2.54;左边距:2.5;右边距:2.5;
标注页码。
5.正文具体内容格式见“图书管理系统”模板。
五、参考题目
1. 学生成绩管理系统数据库设计;
第 4 页
2. 课程管理子系统数据库设计;
3. 通讯录子系统数据库设计;
4. 教室管理子系统数据库设计;
5. 宿舍管理子系统数据库设计;
6. 个人事务管理子系统数据库设计;
7. 卫生科医疗管理子系统数据库设计;
8. 库房入库出库管理子系统数据库设计;
9. 小商店销售管理子系统数据库设计;
10. 工资管理系统数据库设计
11. 人事管理系统数据库设计
12. 仓库管理系统数据库设计
第 5 页
13. 学生管理系统数据库设计
14. 图书馆管理信息系统数据库设计
15. 宾馆客房管理信息系统数据库设计
16. 学籍管理系统数据库设计
17. 机票预定系统数据库设计
18. 其它管理子系统数据库设计(自己选题需经指导教师认可)。
六、参考书目
1.《数据库系统概论》,萨师煊、王珊, 高等教育出版社,2006年。
2.《数据库原理与应用》,李红,高等教育出版社,2003。
3.《SQL Server 数据库设计与管理》,姜力,高群,北京大学出版社,2006。
4.《PowerDesigner软件工程技术》,白尚旺等,电子工业出版社,2004。
5.《信息系统开发实例精粹》,汪孝宜,胡海璐,米海生,电子工业出版社,2006。
6.《Visual C#2005数据库开发经典案例》,罗斌,中国水利出版社,2008。
#include<stdio.h>#define N 40
#include<string.h>
#include<conio.h>
#include<stdlib.h>
struct student{
long num//工号
char name[10]//姓名
char sex[4]//性别
char ad[100]//地址
char barthday[20]//出生日期
char apartnum[100],posinum[10],adds[100]//部门编号、职务编号、备注
char posiname[20]//职务名称
float income//职务工资
}st[N]
void menu()
{
printf("****************************************\n")
printf("欢迎使用家庭财务管理系统\n")
printf("****************************************\n\n")
printf("1:添加记录\n")
printf("2:查询记录\n")
printf("3:删除记录\n")
printf("4:显示所有记录\n")
printf("0:退出\n")
}
void input(struct student s[],int *n)
{
printf("请输入您所要添加的职工数目\n")
int x,i,j,b,flag=0
scanf("%d",&x)
b=*n+x
for(i=*n+1i<=bi++)
{
flag=1
printf("请输入员工工号:\n")
scanf("%ld",&s[i].num)
for(j=1j<ij++)
if(s[i].num==s[j].num&&i>1)
{ printf("输入有误\n")flag=0i--b--break}
if(flag)
{
printf("请输入员工姓名:\n")
scanf("%s",s[i].name)
printf("请依次输入该员工性别、出生日期、地址、部门编号、职务编号、职务名称、职务工资、备注:\n")
scanf("%s%s%s%s%s%s%f%s",&s[i].sex,&s[i].barthday,&s[i].ad,&s[i].apartnum,&s[i].posinum,&s[i].posiname,&s[i].income,&s[i].adds)
}
}
*n=bif(flag) printf("添加成功\n")
printf("输入完毕!按任意键返回主菜单!") getch()
}
void Delete(struct student s[],int *n)
{
printf("请输入您所要删除的职工姓名\n")
char m[10]int j
scanf("%s",m)
for(j=1j<=*nj++)
if(strcmp(s[j].name,m)==0)
{
*n=*n-1
for(j<=*nj++)
s[j]=s[j+1]
break
}
printf("删除成功!\n")
printf("输入完毕!按任意键返回主菜单!") getch()
}
void find(struct student s[],int n)
{
long b=0char c[10],kk[10]
printf(" \t****************************************\n")
printf(" \t\t1.1----------按工号查询\n")
printf(" \t\t1.2----------按姓名查询\n")
printf(" \t****************************************\n")
int j,e,flag=0
float soc
scanf("%s",kk)
if(strcmp(kk,"1.1")==0){
printf("请输入职工工号\n")
scanf("%s",c)
{
for(j=0,e=strlen(c)j<ej++)
b=b*10+c[j]-48
printf("工号 姓名 性别 出生日期 地址 部门编号 职务编号 职务名称 职务工资 备注\n")
for(j=1j<=nj++)
if(b==s[j].num)
{
flag=1
printf("%ld %s %s %s %s %s %s %s %.2f %s",s[j].num,s[j].name,s[j].sex,s[j].barthday,s[j].ad,s[j].apartnum,s[j].posinum,s[j].posiname,s[j].income,s[j].adds)
}
if(!flag)
printf("未找到相关职工信息\n")
}
}
else if(strcmp(kk,"1.2")==0)
{
printf("请输入职工姓名\n")
scanf("%s",c)
printf("工号 姓名 性别 出生日期 地址 部门编号 职务编号 职务名称 职务工资 备注\n")
for(j=1j<=nj++)
if(strcmp(s[j].name,c)==0)
{
flag=1
printf("%ld %s %s %s %s %s %s %s %.2f %s\n",s[j].num,s[j].name,s[j].sex,s[j].barthday,s[j].ad,s[j].apartnum,s[j].posinum,s[j].posiname,s[j].income,s[j].adds)
}
if(!flag)
printf("未找到相关职工信息\n")
}
else
printf("输入有误.....\n")
printf("查找完毕!按任意键返回主菜单!") getch()
}
void print1(struct student s[],int n)
{
printf("工号 姓名 性别 出生日期 地址 部门编号 职务编号 职务名称 职务工资 备注\n")
for(n>0n--)
printf("%ld %s %s %s %s %s %s %s %.2f %s\n",s[n].num,s[n].name,s[n].sex,s[n].barthday,s[n].ad,s[n].apartnum,s[n].posinum,s[n].posiname,s[n].income,s[n].adds)
printf("输出完毕!按任意键返回主菜单!") getch()
}
int main()
{
menu()
int x,n=0
while(scanf("%d",&x)!=EOF&&x!=0)
{
switch(x)
{
case 1:input(st,&n)break
case 2:find(st,n)break
case 3:Delete(st,&n)break
case 4:print1(st,n)break
default:printf("Input error!\n")
}
system("cls") /*清屏*/
menu()
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)